我试图概念化数据库布局,我有一个“理论”问题。我有一个系统,例如:
书籍并不是唯一的,例如Alice,Bob和Carl都可以拥有Moby Dick的副本。此外,每个用户可以拥有许多书籍。这是一个简单的多对多关系,我很清楚。但是,我在哪里可以存储有关Alice的Moby Dick特定副本的信息?
我最终希望能够做到以下几点: - 找到所有拥有Moby Dick副本的用户 - 更改有关书籍个别“实例”的信息:爱丽丝的“白鲸记”副本被“借出” - 更改/添加图书的信息(即每个人的副本):将发布者信息添加到Moby Dick。
我看不出如何有效地解决这个问题。我可以有1个书籍表,1个用户表,然后是n个用户的n个表,每个表包含有关他/她的收藏的信息。当我需要用Moby Dick的副本找到每个人时,这似乎会很慢。任何建议都会有所帮助。
答案 0 :(得分:0)
假设它是一个库数据库,我将从下面的设计开始。 表:
此表结构允许,
为了更好地理解这里是一些伪SQL代码。
“查找拥有Moby Dick副本的所有用户”
SELECT users.user_name
FROM users u, "user book loans" ubl, "book copies" bk, books b
WHERE 1 = 1
AND b.book_name = "Moby Dick"--find book
AND b.book_id = bk.book_id--find copies of that book
AND bk.book_copy_id = ubl.book_copy_id--find loan info for the book copy
AND ubl.user_id = u.user_id--find user who borrowed the copy
我认为上面的查询解释了表格结构,您可以添加属性,例如发布到书籍副本的日期,或者书籍上作者的信息,用户图书贷款的一些日期字段,用于跟踪使用的期间