我有一张名叫“病人详细”的桌子。这个表中有4列。它们是:
patient_id主键(非null)visit_serial_ID主键(非null)examinationplan))
现在,如何在“检查”和“计划”列中插入“patient_id”和“visit_serial_ID”表的单主键“visit_serial_ID”中的多条记录?
这些字段的数据类型如下:
patient_id:number(11)visit_serial_ID:number(5)examination:varchar2(50)plan:varchar2(50)发布于 2009-04-07 13:32:54
您不能(这是主键的全部要点--每个值有一行)。你需要把它分成几张桌子,一张用来看病,一张给病人。访问表将与病人表的主键列有一个外键关系。
编辑
你需要考虑你所代表的真实生活事物,以及它们之间的相互关系。对于现实生活中的每一件事,你通常会有一张独立的桌子。这使得你所追求的一对一,多对一,多对多的关系。例如,你所代表的病人有一次探视,其间有多项检查,每项检查都有相应的计划(这是否正确?)因此,您应该有一个包含病人数据的病人表、一个包含访问数据的访问表和一个包含检查数据的检查表,甚至还有一个包含计划数据的计划表。
探视表与病人表有多对一的关系(病人可以访问多个时间)。为了实现这一点,它应该有一个patient_id列的外键。类似地,检查表与访问表有多对一的关系,因此,同样,它应该具有访问表的主键的外键。
还有更多的方法可以分开。就像Sascha说的,去看看正常化吧。
发布于 2009-04-07 13:33:55
您可以这样做,但您的主键将不再是主键,您的数据将被取消规范化。最好的方法是将这个表分成两个单独的表,如下所示:
Patients
----------
PatientId
Visits
----------
VisitSerialId
Examination
Pland
PatientId注意,Visits表与Patients表有一个外键关系。这将允许您拥有您正在寻找的1:M关系。
发布于 2009-04-07 13:33:41
你不能。这就是主键是什么--这是每一行都独有的东西。为了存储多个条目,您需要一个具有自己的主键的单独表,以及与此表具有外键关系的表。这样,这将是一个简单的一对多的关系。
https://stackoverflow.com/questions/725695
复制相似问题