簡體   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