繁体   English   中英

这实际上是一对多关系吗?

[英]Is this actually a one-to-many relationship?

我的PostgreSQL数据库中有三个表:

User - Contains a username and password
MaleProfile - Contains information related to each male user
FemaleProfile - Contains information related to each female user

最初,我没有单独的MaleProfile和FemaleProfile表,而是只有一个Profile表。 在这种情况下,我在User表和Profile表之间应该是一对一的关系。 但是从那以后,我决定我真的需要为男性和女性提供单独的个人资料表。 在这种新情况下,User表中的每条记录都必须映射到MaleProfile表或FemaleProfile表中的一个且只有一个记录(但不能两者都映射)。 从另一个方向来看,MaleProfile表中的每个记录都映射到User表中的一个且只有一个记录。 每个FemaleProfile记录也是如此。

严格来说,User表和每个概要文件表之间的关系是一对零或一对一。 但是,在这种情况下,“许多”意味着零或一(但不超过一)意味着这些关系在本质上仅仅是一对多关系吗? 如果是这样,我是否会通过在MaleProfile表和FemaleProfile表中创建外键列来将它们表示为一对多关系,每个外键列都指向User表中的PK列? 我是否需要向配置文件表添加任何其他约束以维护引用完整性?

谢谢。

只需确保您的公/母表中的引用列具有唯一性约束和外键约束即可。 这是一对一的关系,而不是一对多的关系。

CREATE TABLE MaleProfile
 (UserId INT NOT NULL PRIMARY KEY
 REFERENCES "User" (UserId));

我相信您应该将employeeID号放在配置文件表中,并在这些表中强制执行唯一约束。 尽管我真的想不出如何阻止某人进入男性和女性的行列,但我相信这是一条路。

请访问https://stackoverflow.com/a/669015/1504882,以查看与您类似的情况,但员工类型不同。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM