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

时间:2009-04-07 13:29:23

标签: database

我有一张名为'Patient_detail'的表。此表中有4列。他们是:

  1. patient_id主键(非空)
  2. visit_serial_ID主键(非空)
  3. examination
  4. plan
  5. 现在,如何在'examination'和'plan'列中插入多个记录,对照表'Patient_detail'的单个主键'patient_id'和'visit_serial_ID'?

    字段的数据类型如下:

    • patient_id:number(11)
    • visit_serial_ID:number(5)
    • examination:varchar2(50)
    • plan:varchar2(50)

4 个答案:

答案 0 :(得分:12)

你不能(这是主键的重点 - 每个值有一行)。您需要将其拆分为几个表,一个用于访问,一个用于患者。访问表与患者表的主键列具有外键关系。

修改

您需要考虑您所代表的真实现实事物以及它们之间的相互关系。对于每个单独的现实生活,你通常会有一个单独的表。这允许您追求的一对一,多对一,多对多关系。例如,您代表的是访问过的患者,在此期间有多个检查,每个检查都有相应的计划(这是正确的吗?)。因此,您应该有一个包含患者数据的患者表,一个包含访问数据的访问表,一个包含检查数据的检查表,甚至可能包含计划数据的计划表。

访问表与患者表具有多对一关系(患者可以访问多个时间)。为实现此目的,它应该具有patient_id列的外键。同样,检查表与访问表有多对一的关系,因此,它应该具有访问表主键的外键。

还有其他方法可以分开。正如Sascha所说,查找正常化。

答案 1 :(得分:4)

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

Patients
----------
PatientId

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

请注意,Visits表具有Patients表的外键实现。这样您就可以拥有所需的1:M关系。

答案 2 :(得分:1)

你做不到。这就是主键 - 每一行都是独一无二的。您需要一个具有自己的主键的单独表,并具有与该表的外键关系,以便存储多个条目。这将是一个简单的一对多关系。

答案 3 :(得分:0)

因为达拉斯说你做不到。您正在寻找的是呼叫规范化。