Database 如何为单个主键插入多行?

Database 如何为单个主键插入多行?,database,Database,我有一张名为“Patient_detail”的表格。此表中有4列。它们是: 患者id主键(非空) visit\u serial\u ID主键(非空) 检查 计划 现在,如何在“检查”和“计划”列中针对表“患者详细信息”的单个主键“患者id”和“就诊序列id”插入多条记录 字段的数据类型如下所示: 患者id:编号(11) 访问序列号ID:编号(5) 检查:varchar2(50) 计划:varchar2(50) 您不能(这是主键的全部要点-每个值有一行)。您需要将其分为两个表,一个用于就诊,一个

我有一张名为“Patient_detail”的表格。此表中有4列。它们是:

  • 患者id
    主键(非空)
  • visit\u serial\u ID
    主键(非空)
  • 检查
  • 计划
  • 现在,如何在“检查”和“计划”列中针对表“患者详细信息”的单个主键“患者id”和“就诊序列id”插入多条记录

    字段的数据类型如下所示:

    • 患者id
      :编号(11)
    • 访问序列号ID
      :编号(5)
    • 检查
      :varchar2(50)
    • 计划
      :varchar2(50)
      • 您不能(这是主键的全部要点-每个值有一行)。您需要将其分为两个表,一个用于就诊,一个用于患者。就诊表将与患者表的主键列具有外键关系

        编辑

        你需要考虑你所代表的真实生活中的事物,以及它们之间的相互关系。对于现实生活中的每一件事情,你通常会有一张单独的桌子。这允许你追求一对一、多对一、多对多的关系。例如,您代表的是一位进行就诊的患者,在此期间进行了多次检查,每次检查都有相应的计划(是否正确?)。因此,您应该有一个包含患者数据的患者表、一个包含就诊数据的就诊表和一个包含检查数据的检查表,甚至可能还有一个包含计划数据的计划表

        就诊表与患者表之间存在多对一关系(患者可以多次就诊)。为了实现这一点,它应该有一个指向patient_id列的外键。类似地,检查表与访问表具有多对一关系,因此,它也应该具有访问表主键的外键


        还有更多的方法可以分离这些元素。正如Sascha所说,查看标准化。

        你不能。这就是主键的含义——每一行都是唯一的。为了存储多个条目,您需要一个单独的表,该表具有自己的主键,并且与该表具有外键关系。这将是一个简单的一对多关系。

        您可以这样做,但您的主键将不再是主键,您的数据将被反规范化。最好的方法是将此表拆分为两个单独的表,如下所示:

        Patients
        ----------
        PatientId
        
        Visits
        ----------
        VisitSerialId
        Examination
        Pland
        PatientId
        

        请注意,
        就诊
        表与
        患者
        表之间存在外键关系。这将允许您拥有您正在寻找的
        1:M
        关系。

        正如darasd所说,您不能。你要找的是调用规范化。

        +1(你甚至写了与我即将写的完全相同的句子:“这就是主键的全部要点”):-D