我目前正在为即将到来的学校学期学习数据库,所以我正在练习目前拥有的书。我有多位作者的书,多位作者的书也多。也有多个类别的书。
所以我做了三张桌子。书籍表(包含所有书籍信息,包括作者),作者表(具有作者姓名,地址,等)和类别表(因为某些书籍具有多个类别)。由于有些书有多位作者,有些作者有多本书,所以我创建了一个称为AuthorsBooks的连接表,并在其中填充了信息。通过最佳实践,可以不将只有一本书的作者放在该(AuthorsBooks)表中吗?另外,我创建了一个BooksCategory联结表,并将具有多个类别的书放入该表中。链接这两个表的最佳方法是什么?按书名?谢谢。
答案 0 :(得分:0)
通常来说,您的方法听起来正确无误。
所以我做了三个桌子
根据您的描述,这是我的数量:
书籍表(包含所有书籍信息,包括作者在内)
这是不正确的。当您意识到需要使用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)