首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何为单个主键插入多行?

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

Stack Overflow用户
提问于 2009-04-07 13:29:23
回答 4查看 16.2K关注 0票数 2

我有一张名叫“病人详细”的桌子。这个表中有4列。它们是:

  1. patient_id主键(非null)
  2. visit_serial_ID主键(非null)
  3. examination
  4. plan

))

现在,如何在“检查”和“计划”列中插入“patient_id”和“visit_serial_ID”表的单主键“visit_serial_ID”中的多条记录?

这些字段的数据类型如下:

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

回答 4

Stack Overflow用户

发布于 2009-04-07 13:32:54

您不能(这是主键的全部要点--每个值有一行)。你需要把它分成几张桌子,一张用来看病,一张给病人。访问表将与病人表的主键列有一个外键关系。

编辑

你需要考虑你所代表的真实生活事物,以及它们之间的相互关系。对于现实生活中的每一件事,你通常会有一张独立的桌子。这使得你所追求的一对一,多对一,多对多的关系。例如,你所代表的病人有一次探视,其间有多项检查,每项检查都有相应的计划(这是否正确?)因此,您应该有一个包含病人数据的病人表、一个包含访问数据的访问表和一个包含检查数据的检查表,甚至还有一个包含计划数据的计划表。

探视表与病人表有多对一的关系(病人可以访问多个时间)。为了实现这一点,它应该有一个patient_id列的外键。类似地,检查表与访问表有多对一的关系,因此,同样,它应该具有访问表的主键的外键。

还有更多的方法可以分开。就像Sascha说的,去看看正常化吧。

票数 13
EN

Stack Overflow用户

发布于 2009-04-07 13:33:55

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

代码语言:javascript
复制
Patients
----------
PatientId

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

注意,Visits表与Patients表有一个外键关系。这将允许您拥有您正在寻找的1:M关系。

票数 5
EN

Stack Overflow用户

发布于 2009-04-07 13:33:41

你不能。这就是主键是什么--这是每一行都独有的东西。为了存储多个条目,您需要一个具有自己的主键的单独表,以及与此表具有外键关系的表。这样,这将是一个简单的一对多的关系。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/725695

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档