2013-01-19 46 views
0

我有兩個表。SQL如何構造這個特定的數據庫模式

User_types

  • (1)個體
  • (2)的業務
  • (3)學生

Relationship_cat

  • CAT_ID
  • cat_name
  • USER_ID
  • USER_TYPE

先用Relationship_cat,我想一個條目看起來像這樣

cat_id(1), cat_name(interests) ,user_id(ANy user), user_type(only 1 and 3) 
cat_id(2), cat_name(news) ,user_id(ANy user), user_type(only 2 and 3) 
etc 

隨着user_type我認爲可以將其設置爲0作爲默認,所以它不受任何用戶的限制。我該如何處理"relationship_cat > user_type"的情況?我是否使用逗號分隔的值列表?它有效嗎?那麼如果有很多User_types條目增加?

+0

貓的桌子在哪裏? – Kermit

+0

relationship_cat的簡寫形式haha – Saff

回答

3

您應該使用多對多連接表。所以你的模式可能是這樣的:

user_types

  • user_type_id
  • user_type_value

類別

  • CAT_ID
  • cat_name

categories_to_user_types

  • CAT_ID
  • user_type_id

,你可以考慮一下像你提到的用逗號分隔值的任何時候,這應該是一個跡象,你來進一步規範你的表。我所展示的通常是表達表之間多對多關係的最佳方式。

+0

Thanks :)是否需要AI和PK字段的categories_to_user_types? – Saff

+0

通常在像這樣的連接表上,您可以在兩個字段之間使用複合主鍵。如果您試圖強制實施外鍵約束,或者您可能在連接,分類,過濾器等中單獨使用這些字段,則可能還需要在每個字段上使用單獨的索引。 –

+0

哈我看,謝謝:) – Saff

1

如果您需要將多個值存儲在單個列中,我建議引入另一個表,以將這些關係存儲爲一對多關係。將其稱爲Relationship_cat_user_type並將cat-Id和user_type_id值存儲在該表中。這對於正常化來說是最好的。

祝你好運。

+0

謝謝@segeddes :) – Saff