创建具有多个作者,书籍和类别的表

时间:2019-05-11 02:06:15

标签: mysql sql database

我目前正在为即将到来的学校学期学习数据库,所以我正在练习目前拥有的书。我有多位作者的书,多位作者的书也多。也有多个类别的书。

所以我做了三张桌子。书籍表(包含所有书籍信息,包括作者),作者表(具有作者姓名,地址,等)和类别表(因为某些书籍具有多个类别)。由于有些书有多位作者,有些作者有多本书,所以我创建了一个称为AuthorsBooks的连接表,并在其中填充了信息。通过最佳实践,可以不将只有一本书的作者放在该(AuthorsBooks)表中吗?另外,我创建了一个BooksCategory联结表,并将具有多个类别的书放入该表中。链接这两个表的最佳方法是什么?按书名?谢谢。

1 个答案:

答案 0 :(得分:0)

通常来说,您的方法听起来正确无误。

  

所以我做了三个桌子

根据您的描述,这是我的数量:

  • 作者
  • 书籍
  • 类别
  • 作者图书
  • BooksCategories
  

书籍表(包含所有书籍信息,包括作者在内)

这是不正确的。当您意识到需要使用AuthorsBooks时,没有任何理由将Authors作为Books表的一部分。您用于实施的所有列都应从“图书”中删除。

  

按照最佳做法,可以不要只将作者的一本书放进书中   (AuthorsBooks)表?

绝对不是。您使用AuthorsBooks创建了正确的结构。它支持任意数量的作者。

  

我还创建了一个BooksCategory联结表,并将这些书与   该表中有多个类别。什么是最好的方法   链接这两个表?

按键。每个表都应该有一个主键,在您的情况下,键应该是随新行增加的整数。

这是表结构和标准命名的概述。

Books
-----
id integer auto_increment primary key 
title varchar(150)

Categories
----------
id integer auto_increment primary key
name varchar(60)

BooksCategories
---------------
books_id  integer primary key (foreign key for Books.id)
categories_id integer primary key (foreign key for Categories.id)