这有必要指出这种关系吗?

时间:2010-07-05 14:58:07

标签: database-design

情况如下: 我有一个名为“books”的表,还有一个名为“categories”的表。 每个“书”都属于一个类别,因此该书有一个名为“类别ID”的字段。 但是有必要制作一个“categoryList”来存储“book id”吗? 我可以使用select语句来查找属于类别的书籍,但是它是一种更好的方法来存储来自categoryList的书籍ID吗?谢谢。

3 个答案:

答案 0 :(得分:3)

实际上,最好使用映射表来指定类别/书籍关系。

这个表可以命名为category_book,并且有一列用于category_id& book_id的一列

答案 1 :(得分:3)

如果一本书可以属于许多类别,并且一个类别可以有多个书籍,那么您需要使用中间表(类似Books _JOIN_Categories)来获得许多关系。

Books
ID  |  BookName

Categories
ID  |  CategoryName

Books_Join_Categories
BookID  |  CategoryID

如果每本书只有一个类别,但每个类别可以有多个书籍,那么你当前的关系结构(书籍表中的CategoryID)就可以了。

Books
ID  |  CategoryID  |  BookName

Categories
ID  |  CategoryName

事实上,第二种选择可能是最好的。在这种情况下,多对多关系可能不是一个好主意(除非这本书被撕成两半以便放在不同的架子上)。如果两个不同的“类别”部分需要相同的书,那么每个类别(库中的部分)将获得它们自己的物理书籍副本。这意味着数据库中有两本书记录,每一本都有一个单独的CategoryID

答案 2 :(得分:0)

在你的previous question中,你说一本书只属于一个类别。所以你不需要CategoryList表。这是额外的维护,没有额外的好处。按类别支持查询是Nature为我们提供索引的原因。