2014-05-05 127 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” –