這個問題我猜很微不足道。但是, 例如,我有實體:用戶(id,名稱),組(id,名稱),user_group(user_id,group_id)和圖庫(id,name,owner_id)。 畫廊的老闆可能是用戶或組。關係數據庫中的關係「OR」
什麼是關係數據庫中的最佳解決方案?
謝謝!
PS如果有人知道關係代數和模式優化。它會是什麼樣子?
我在想所有者(ID,USER_ID,GROUP_ID),但我沒有任何想法如何顯示「或」關係代數方面的關係。
這個問題我猜很微不足道。但是, 例如,我有實體:用戶(id,名稱),組(id,名稱),user_group(user_id,group_id)和圖庫(id,name,owner_id)。 畫廊的老闆可能是用戶或組。關係數據庫中的關係「OR」
什麼是關係數據庫中的最佳解決方案?
謝謝!
PS如果有人知道關係代數和模式優化。它會是什麼樣子?
我在想所有者(ID,USER_ID,GROUP_ID),但我沒有任何想法如何顯示「或」關係代數方面的關係。
將所有者和組合爲一個表。所有者和組只應根據它們在此表中的屬性的不同而不同,或者將此新表與自身(「是」的成員)聯繫起來的關係表中存在/不存在行。
有一個用戶和一個組(僅一個概念的一個)之間沒有差別的技術。
把兩者到相同的表(user
)和標誌的行的類型(組或用戶)在第二字段中。
使用應用程序邏輯確保只有一行組可能在user_group
表中有「有孩子」。
最簡單的解決方案將是一個關係Owner(id, user_id, group_id)
其中可以設置user_id
或group_id
- 用適當的約束來保護它。
摺疊Group
和User
到一個表拖動從數據庫多項一致性檢查到應用程序中的邏輯:
User
和Group
在一些地方使用了更adaptions可能是必要的。引入一個新的實體OWNER並使其成爲集團的所有者。然後使USER和GROUP類別(即「繼承」它們)OWNER。
你ER模型是這樣的(僅顯示PK場):
從理論上講,存在實現在物理數據庫3類主要途徑。他們都有優點和缺點,但是你的模型中,溶液1可能是最合適的: