2015-10-02 44 views
-1

我正在嘗試構建一個'臉書組'樣式的應用程序,其中包含組,每個組都有自己的一組設置。需要幫助來構造我的SQL DB組設置

所以我創建了3個表:

groups - (id, name..) 
settings - (id, key) 
groups_settings - (group_id, setting_id, value) group_id + setting_id are a primary key 

,並在單值的設置工作正常(如MIN_AGE,MAX_AGE等)。

但是現在我遇到了一個問題,當我有一個可以有多個值的設置鍵時,例如:「allowed_countries」是用戶可以加入的允許國家列表。

我不能擁有多個具有相同group_id和setting_id的行,因爲它們在主鍵約束下。

那麼你會如何解決這個問題?我應該重組我的數據庫嗎?

+0

不改變數據庫模式的一種可能的解決方案是將您的值序列化爲字符串以存儲在數據庫中,並反序列化爲您在應用程序級別上所需的任何格式。 –

+0

謝謝,我想到了這一點,但我希望有一個更好的解決方案,因爲它很難以這種方式查詢該領域。 –

回答

-1

所以,你必須模擬這樣的許多一對多關係的一個辦法就是有一個查找表所示(用戶的國家。):

用戶表有主鍵USER_ID(等欄目) 國表有主鍵COUNTRY_ID(等欄目) user_country_mapping表剛好具有兩列:

  • user_id是一個外鍵的用戶表
  • COUNTRY_ID是一個外鍵進入國家表

這樣,您可以保持數據模型清潔。