2014-05-05 61 views
0

我想設計一個包含消息的簡單數據庫。每條消息都有一個類別。每條消息可以有一個或多個子類別,但它可能根本沒有子類別。簡單的數據庫設計 - 存儲消息

CategoryTable
CategoryKey, 類別

SubCategoryTable
SubCategoryKey, CategoryKey, 子類別,

消息表
MessageKey, SubCategoryKey, 消息,

此設計的問題是,如果消息類別沒有子類別,如何檢索該類別的消息?

這是最好的方法是什麼?我應該有一個「無」子類別嗎?

回答

0

更改消息表,使其指向類別表。

MessageTable 
------------ 
MessageKey 
CategoryKey 
Message 

添加消息子類別消息可能具有的一個或多個子類別的表。

MessageSubCategoryTable 
----------------------- 
MessageKey 
SubCategoryKey 

您可以得到任何子類別有以下psudeo-SQL:

Select Subcategory 
From SubCategoryTable, MessageSubCategoryTable 
Where CategoryKey = CategoryKey from MessageTable 
And SubCategoryKey = SubCategoryKey from MessageSubCategoryTable 
+0

感謝。那麼,僞SQL會爲給定類別選擇所有消息呢? SELECT Message FROM MessageTable WHERE Category =「MyCategory」AND SubCategory =? – user3437721

+0

任何人都有我的查詢答案? – user3437721

+0

對於給定的類別,psuedo-SQL將是SELECT Message MessageTable WHERE Category =「MyCategory」。如果要包含子類別,則psuedo-SQL將是SELECT Message MessageTable WHERE Category =「MyCategory」&SELET Subcategory FROM SubcategoryTable WHERE Category =「MyCategory」 –