表中的一列可以既是主键又是外键吗?


Can a column in a table be both a primary key and also a foreign key?

有人能告诉我,如果有一个外键作为一个表中的主键是可以的吗?

示例是,我有一个PATIENT表,PATIENT_ID作为主键,我还想有PATIENT_ID作为外键,同时有ASSESSMENT表的主键(其中包含患者的生命体征)。这样可以吗?还是会产生问题?

只要可以保持1对1的关系,就可以。没有来自数据库端的限制

是外键可以作为表的主键

这样可以吗?还是会产生问题?

我觉得还可以。这产生的一个小问题可能是它让你需要问这个问题。因此,如果你真的想了解更多,你应该问自己为什么你不确定,这样你才能真正学到一些东西。

这就是所谓的一对一关系。

这样可以吗?还是会产生问题?

如果有充分的理由将数据保存在两个表中就可以。

使用外键的先决条件是作为外键的列需要在两个表中都是键。所以从这个角度来看,你是绝对安全的。唯一可能出现的问题是在应用程序的未来开发中,当您可能需要在两个表之间建立一对多的关系时,在这种情况下使用这种方法是非常糟糕的。稍后在数据库级别更改此行为并不困难,但在应用程序级别可能会非常棘手。

老实说,我非常怀疑你是否真的需要在两个表之间使用外键,因为id总是相同的,这有点违背了外键的目的。而且,大多数主键通常是自动递增的,而您的情况并非如此,这可能会在未来的开发中导致其他问题。