Field可以在同一个表中充当外键和主键吗?

时间:2015-05-19 15:18:40

标签: database foreign-keys relational-database primary-key flask-sqlalchemy

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

假设我有两个表模型结构为:

User(字段:user_id为PRIMARY KEY,usernameemailpassword)和

UserDetails(包含字段:f_namel_namedobgenderaddresscontact,{{ 1}}和bio作为FOREIGN KEY)。

将来自user_id表的user_id作为PRIMARY KEY进行是否可以,因为它是同一个表上唯一唯一列的FOREIGN KEY,而不必创建单独的{{1为此目的的字段?

1 个答案:

答案 0 :(得分:2)

总之 - 是的。使用与主键和外键相同的字段来创建1:0..1关系。

用户可能只有一条详细信息记录,但不能有多条详细信息记录,并且您无法获得不存在的用户或与用户无关的详细信息(即null userId)的详细信息。

如果您有许多没有细节的用户(因此将细节分成不同的表格是有意义的),或者如果细节非常繁重并且您不希望它们膨胀,那么这种设计是有意义的用户表的存储,需要许多快速查询。