两个主键相同,但在两个不同的表中

时间:2014-04-08 13:41:36

标签: sql

我刚才有一个关于SQL中主键的快速问题。我在一个表(Patient)中有一个主键,在另一个表(Facility)中有一个不同的主键。我想要做的就是连接它们,这样我就可以获得Patient的主键,并在我的Facility表中拥有确切的主键(带数据)。我该怎么做呢?感谢您提前的任何帮助,非常感谢!

2 个答案:

答案 0 :(得分:1)

这是一种有趣的关系。但是你可以在两个表中插入相同的id:

INSERT INTO Parient(ID, NAME)      VALUES (5, 'Mike');
INSERT INTO Facility(ID, LOCATION) VALUES (5, 'San Francisco');

你可以使用序列作为第一个插入,然后使用生成的新id作为第二个插入(当前值)。

注意:我不推荐这种ID同步的做法。更好的方法是让您的数据库为我们分配唯一ID(使用自动增量序列),然后定义外键约束,将FACILITY_ID添加到Patient表或PATIENT_ID到Facility表实现一对一的关系。

答案 1 :(得分:1)

添加包含两个键的其他表格(例如住院治疗):

create table hospitalization ( 
  patient_id int not null,  
  facility_id int not null, 
  date_start date not null,
  date_end date
);

这是与许多属性的标准,并且意味着患者可以多次住院,每个设施可能有许多患者。