我正在尋找一種設計模式來管理關係數據庫中屬於一起的記錄,例如,分組多個聯繫人。該組本身不需要是一個實體。一個小組應該有無限數量的成員。用於分組記錄的數據庫模式模式
應該可以運行查詢來獲取給定記錄的其他組成員。
我的想法是在一個表中進行管理:
GROUPINGS
integer group
integer member_id
primary_key (group, member_id)
foreign_key (member_id)
編輯:要注意的是group
是不的外鍵。這只是一個獨特的標識符。應該增加每個建成的會員組。
下面是一個例子內容:
GROUPINGS group | member_id
-----------------
1 | 10
1 | 11
1 | 12
2 | 20
2 | 21
3 | 10
3 | 40
這個例子包含三組:(10,11,12)和(20,21)和(10,40)。你看到10個包含在兩個組中。
要查詢的「鄰居」成員10的,我們可以用這個SQL語句:
SELECT g2.member_id
FROM groupings g1
JOIN groupings g2 ON g1.group = g2.group
AND g1.member_id != g2.member_id
WHERE g1.member_id = 10
=> 11,12,40
你覺得呢?也許這是一個已知的模式 - 有沒有鏈接可以找到更多關於這個?
編輯:重命名錶「組」爲「集團」,並更名爲屬性「GROUP_ID」到「組」,使之明顯,在這個表中的記錄是不是一組 - 這是一組與之間的聯繫會員。集團不是一個實體。
成員可以屬於超過1組? – Chris
@Chris:是的,這是可能的。我已經增強了示例來演示它。 –