2012-03-21 106 views
0

林有困難的嘗試設計以下場景數據庫結構:用戶,組和標籤數據庫設計

我的數據庫應包括一般的用戶信息用戶名,名字,姓氏 ,JoiningDate。

每個用戶都可以成爲一個組的一部分。

每個組都有「標籤」附加到它,並可以有多個標籤。用戶 也應該能夠返回可用組列表(由 標籤過濾)。

能夠搜索一個組(通過附加到組的標籤)和 搜索特定用戶(按姓氏或唯一ID)。 )。它也應該能夠 返回可用組列表(按標記過濾)和特定組的成員(由姓氏過濾並通過 加入日期過濾)。

還應該有情迷的裝置,這些 組用戶屬於多個組(在 查詢「你是誰的成員‘布拉沃組’和‘三角洲’ 組),並跟蹤在組中發送的消息(如 論壇)。

這只是兩張表嗎?或者它應該是三張桌子......用戶,組和標籤?自從我做了任何關係數據庫的事情以來,這已經快一年了,我想知道是否有人可以展示這個數據庫設計的可視化表示?

回答

5

我建議五個表:用戶,組,標記和鏈接表UserGroups和GroupTags。

這是因爲用戶和組之間以及組和標籤之間似乎存在多對多關係 - 關係設計中需要鏈接實體才能將具有多對多關係的實體連接起來。

--------- ------------ -------- 
| Users | | Groups | | Tags | 
--------- ------------ -------- 
    |   |  |  | 
    |   |  |  | 
    /|\  /|\ /|\  /|\ 
    -------------- ------------- 
    | UserGroups | | GroupTags | 
    -------------- ------------- 
+0

感謝馬克,你有可能在圖表中顯示它嗎? – 2012-03-21 13:50:33

+1

@Garrith:這有幫助嗎? – 2012-03-21 13:57:04

+0

哈我喜歡你如何花時間這樣做,我只是意味着一個快速的屏幕轉儲,但是它有幫助! +1 – 2012-03-21 14:02:18

0

絕對至少3:用戶,組和標籤。

而且由於您在組和標籤之間使用多對多關係(假設來自您的描述),您可能需要一個交叉表來將組和標籤鏈接在一起。

如果一個用戶可以屬於更多組,那麼用戶和組之間也應該有交叉表。