一个字段可以在同一个 table 中同时充当外键和主键吗?
Can a Field act as both Foreign and Primary Keys in the same table?
我正在使用 Flask-SQLAlchemy,但我想这个问题跨越了不同的数据库实现平台。
假设我有两个 table 模型结构如下:
User
(字段:user_id
作为主键,username
,email
,password
)和
UserDetails
(包含字段:f_name
、l_name
、dob
、gender
、address
、contact
、 bio
和 user_id
作为外键)。
可以让 UserDetails
table 中的 user_id
作为 PRIMARY KEY 就像在同一个 table 上作为 FOREIGN KEY 一样是唯一的唯一列吗, 而不必为此目的创建单独的 user_details_id
字段?
简而言之 - 是的。具有与主键和外键相同的字段用于创建 1:0..1 关系。
一个用户可以有一条详细记录,但不能有多条详细记录,你不能有不存在的用户的详细信息或与用户无关的详细信息(即 null
userId ).
如果您有很多没有详细信息的用户(因此将详细信息分开到不同的 table 是有意义的),或者如果详细信息真的很重而您不这样做,那么这种设计是有意义的希望他们膨胀用户 table 的存储,其中需要许多快速查询。
我正在使用 Flask-SQLAlchemy,但我想这个问题跨越了不同的数据库实现平台。
假设我有两个 table 模型结构如下:
User
(字段:user_id
作为主键,username
,email
,password
)和
UserDetails
(包含字段:f_name
、l_name
、dob
、gender
、address
、contact
、 bio
和 user_id
作为外键)。
可以让 UserDetails
table 中的 user_id
作为 PRIMARY KEY 就像在同一个 table 上作为 FOREIGN KEY 一样是唯一的唯一列吗, 而不必为此目的创建单独的 user_details_id
字段?
简而言之 - 是的。具有与主键和外键相同的字段用于创建 1:0..1 关系。
一个用户可以有一条详细记录,但不能有多条详细记录,你不能有不存在的用户的详细信息或与用户无关的详细信息(即 null
userId ).
如果您有很多没有详细信息的用户(因此将详细信息分开到不同的 table 是有意义的),或者如果详细信息真的很重而您不这样做,那么这种设计是有意义的希望他们膨胀用户 table 的存储,其中需要许多快速查询。