【发布时间】:2011-12-31 01:38:45
【问题描述】:
我有一个数据库,我不知道如何获取图书数据。我将解释我以前是怎么做的以及我现在打算怎么做。
为简单起见,我将采用“书籍”示例,因为它最容易显示这种关系。以前,我有这种结构,我发现它在 DB 上很重:
Books:
book_id
title
author_name
genre_name
很容易查询单个书籍、所有书籍、作者书籍和流派书籍。这里的问题是当我需要获取作者或流派列表时。在将它们交给浏览器之前,我必须选择所有书籍,检测可能的重复、相同、唯一等。我已经感觉到处理的滞后了。
所以我现在打算做的是:我有 3 张桌子,一张用于书籍,另一张用于作者,另一张用于流派。
Books: Authors: Genre:
book_id author_id genre_id
title author_name genre_name
author_id
genre_id
这样,我可以通过author_id 和genre_id 标记书籍,并且可以更轻松地更快地获取所有作者和流派,而不会影响“按作者获取”和“按流派获取”。此外,我可以通过更改 author_id 和 genre_id 轻松更改书籍作者和/或类型。
但是如果我选择一本书,当普通的select * from Books where book_id=something 只返回流派和作者的 ID 时,我该怎么做?如何返回作者姓名和流派名称?子查询?一个单独的查询?还是实际上有一个我不知道的单行查询?
【问题讨论】: