2016-12-13 54 views
1

我正在創建一個具有組的系統。這些可以被認爲是像Facebook組織。用戶可以創建新的組。目前,我有以下類型的羣組:具有Facebook類似組的系統的數據庫設計

  • 城市羣 - 以某個城市爲基礎的羣組。例如「倫敦買賣團體」
  • 學校組 - 基於學校的組。例如「倫敦大學研究組」
  • 興趣組 - 不綁定到某個地點的組。例如「50多歲的針織組織」

未來會增加更多的組類型。每一組可以有不同的類型的選項,但各組具有相同的基本數據:

  • 一種ID
  • 甲創建者ID
  • 甲名稱
  • 一個選項描述

我正在爲這個數據庫設計而拼命掙扎。我最初的想法是爲不同的團體創建不同的表格。

例如有一張名爲group的表。該表具有id,creator id,name,description,member count,timestamps

然後有其他表格來表示其他組,並將它們鏈接到group。所以我有一個city_group表,其中包含和id,group_id,city_id。對於其他組類型也是如此。

我與此唯一的問題是interest_group沒有任何額外的數據,一個正常的group。但爲了能夠只查詢興趣組,我認爲創建一個interest_group表可能很有意義。它只會有以下列:id,group_id,timestamps ...這似乎有點浪費,有一個表只是爲了這個目的。

這裏有一個圖,使事情變得更加容易: enter image description here

是否有我的解決方案,或者沒有更好的辦法來解決這個設計問題的任何問題?

+0

你有一些預定義類型的團體?如果用戶創建一個新組,會發生什麼?它會成爲一個利益集團嗎?或者您是以後可以添加組的唯一一個? –

+0

用戶創建的羣組爲「城市羣組」和「興趣羣組」。只有管​​理員可以創建「學校組」。未來還會有其他類型的團體,如代表運動隊的「運動團體」等。 – BugHunterUK

+0

有趣的問題你在這裏。那些在這些小組中的成員呢?會不會有像用戶表和用戶和組之間的鏈接表? –

回答

3

我有一個想法,這是一個基本的解決方法:有另一個表,如:你有id(PK)的group_type,然後你有tablename(類型的完整表名)。

然後,您應該從您的組表中鏈接到此group_type表中的FK。

id tablename 
-------------------- 
1  School Group 
2  Interest Group 

畢竟這一點,你可以建立基於此表中的值您的疑問,作爲一個例子:

JOIN (SELECT tablename FROM group_type WHERE id=group.group_type_id) ON ..