一个字段可以在同一个 table 中同时充当外键和主键吗?

Can a Field act as both Foreign and Primary Keys in the same table?

我正在使用 Flask-SQLAlchemy,但我想这个问题跨越了不同的数据库实现平台。

假设我有两个 table 模型结构如下:

User(字段:user_id 作为主键,usernameemailpassword)和

UserDetails(包含字段:f_namel_namedobgenderaddresscontactbiouser_id 作为外键)。

可以让 UserDetails table 中的 user_id 作为 PRIMARY KEY 就像在同一个 table 上作为 FOREIGN KEY 一样是唯一的唯一列吗, 而不必为此目的创建单独的 user_details_id 字段?

简而言之 - 是的。具有与主键和外键相同的字段用于创建 1:0..1 关系。

一个用户可以有一条详细记录,但不能有多条详细记录,你不能有不存在的用户的详细信息或与用户无关的详细信息(即 null userId ).

如果您有很多没有详细信息的用户(因此将详细信息分开到不同的 table 是有意义的),或者如果详细信息真的很重而您不这样做,那么这种设计是有意义的希望他们膨胀用户 table 的存储,其中需要许多快速查询。