例如,我必须组织以下信息:书籍,书籍版本和每页的颜色。
让我们假设一本书只能有一个版本,并且由于应用程序是用PHP编写的,因此每个表都将具有在其上进行读写的功能集,并且我想尽可能地使其简单。我不能决定是否最好:
[Books]
bookid
author
[Editions]
editionid
bookid
title
publisher
isbn
[PagesColors]
editionid
page
color
或尝试简化:
[Books]
bookid
bookidreference
author
title
publisher
isbn
[PagesColors]
bookid
page
color
并记录如下:
1, 0, "Jane Austen", null, null, null
2, 1, null, "Emma", "Books Enterprise", 12231231213
3, 1, null, "Emma in Italian", "Jane Austen Italian Editions", 45345354334
“ bookidreference”将用于链接同一表格中的书籍和版本。
答案 0 :(得分:0)
我认为简化版本更好,因为它非常简洁且易于理解。...但是要避免在数据库中输入空条目。
答案 1 :(得分:0)
我不知道您要在“ editions.bookreference”中使用什么,但是第一个似乎更一致。 书籍的名称可以随新版本一起更改吗?ISDN是否也可以更改?所有在版本之间无法更改的值都应保留在“书”中。您还应该添加发布日期列。现在可能不需要,但是可能会(如果您的任务不是学校项目)。
除此之外,它看起来还不错。也许也将作者移到一个表上,并使用书籍和作者之间的关系表,但是这个概念很牢固。
答案 2 :(得分:0)
我想到了这个主意
[Books]
bookid
bookid_parent
author
release_date
[BooksDetails]
bookid
title
publisher
isbn
...other details without index.
[PagesColors]
bookid
page
color
在这种情况下,我将没有第二种解决方案那么多的NULL。记录如下:
[Books]
1, 0, "Jane Austen", 2018-01-01
2, 1, null, 2018-02-02
3, 1, null, 2018-03-03
[BooksDetails]
2, "Emma", "Books Enterprise", 12231231213
3, "Emma in Italian", "Jane Austen Italian Editions", 45345354334