Database design 这是否有必要指出这种关系?

Database design 这是否有必要指出这种关系?,database-design,Database Design,情况如下: 我有一张叫做“书”的桌子和一张叫做“类别”的桌子。 每个“书”都属于一个类别,因此该书有一个名为“类别id”的字段。 但是否有必要制作一个“分类列表”来存储“图书id”? 我可以使用select语句来查找属于类别的图书,但是从categoryList存储图书id是更好的方法吗?谢谢。事实上,最好使用映射表来指定类别/书籍关系 此表可以命名为category\u book,其中一列用于category\u id,另一列用于book\u id实际上,最好使用映射表来指定category/

情况如下: 我有一张叫做“书”的桌子和一张叫做“类别”的桌子。 每个“书”都属于一个类别,因此该书有一个名为“类别id”的字段。 但是否有必要制作一个“分类列表”来存储“图书id”?
我可以使用select语句来查找属于类别的图书,但是从categoryList存储图书id是更好的方法吗?谢谢。

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


此表可以命名为category\u book,其中一列用于category\u id,另一列用于book\u id实际上,最好使用映射表来指定category/book关系


此表可以命名为category\u book,其中一列表示category\u id,另一列表示book\u id,您可以说一本书只属于一个类别。因此,您不需要CategoryList表。这是额外的维护,没有额外的好处。支持分类查询是大自然为我们提供索引的原因

在你的文章中,你说一本书只属于一个类别。因此,您不需要CategoryList表。这是额外的维护,没有额外的好处。支持分类查询是大自然为我们提供索引的原因

如果一本书可以属于多个类别,而一个类别可以有多本书,那么您需要使用一个中间表(类似于
books\u JOIN\u categories
)建立多对多关系

如果每本书只有一个类别,但每个类别可以有多本书,那么您当前的关系结构(
图书表中的CategoryID
)应该可以满足您的需要

Books
ID  |  CategoryID  |  BookName

Categories
ID  |  CategoryName

事实上,第二种选择可能是最好的。在这种情况下,多对多关系可能不是一个好主意(除非这本书被撕成两半放在单独的书架上)。如果两个不同的“分类”部分需要同一本书,那么每个分类(图书馆中的部分)都会得到它们自己的书的物理副本。这意味着数据库中有两个图书记录,每个记录都有一个单独的类别ID。如果一本书可以属于多个类别,而一个类别可以有多本书,那么您需要使用一个中间表建立多对多关系(类似于
books\u JOIN\u categories

如果每本书只有一个类别,但每个类别可以有多本书,那么您当前的关系结构(
图书表中的CategoryID
)应该可以满足您的需要

Books
ID  |  CategoryID  |  BookName

Categories
ID  |  CategoryName

事实上,第二种选择可能是最好的。在这种情况下,多对多关系可能不是一个好主意(除非这本书被撕成两半放在单独的书架上)。如果两个不同的“分类”部分需要同一本书,那么每个分类(图书馆中的部分)都会得到它们自己的书的物理副本。这意味着数据库中有两个图书记录,每个记录都有一个单独的类别。同意,这样你可以拥有一本属于多个类别的图书,但在这种情况下,多对多关系是个坏主意。一本书怎么能放在图书馆的两个不同书架上?实际上,多对多关系在设计上还有另一个优势。它清楚地区分了“我的实体是什么”和“我如何使用它们”。一本书就是一本书,一个类别就是一个类别,关系类别/书籍与一本书的内容无关,这样你就可以拥有一本属于多个类别的书,但在这种情况下,多对多关系是个坏主意。一本书怎么能放在图书馆的两个不同书架上?实际上,多对多关系在设计上还有另一个优势。它清楚地区分了“我的实体是什么”和“我如何使用它们”。一本书就是一本书,一个类别就是一个类别,类别/书的关系与一本书在真正的图书馆里是什么无关,一本书有时很难同时放在两个书架上,但不同的藏品可能有自己的副本。在图书馆中,每本书都必须有自己的标识符和分配。如果图书馆购买的书不止一本,那么数据库“应该”有该书的多条记录(每本实体书一条记录),并相应地分配类别ID。在真正的图书馆中,一本书有时很难同时放在两个书架上,但不同的藏书可能有自己的副本。在图书馆中,每本书都必须有自己的标识符和分配。如果图书馆购买的书不止一本,那么数据库“应该”有该书的多条记录(每本实体书一条记录),并相应地分配类别ID。