【发布时间】:2013-01-10 15:23:43
【问题描述】:
我正在设计一个依赖 SQL 数据库来存储数据的电影编目器。我不是数据库设计专家,老实说,除了基本的数据库查询之外,我对其他任何事情都没有那么老练。我的问题是执行以下操作的最有效方法是什么。
我目前创建了 5 个表
Movies
------
[id] integer
[title] nvarchar(100)
[duration] integer
[year] datetime
People
------
[people_id] integer
[person] nvarchar(100)
Writers
-------
[id] integer
[people_id] integer
Directors
---------
[id] integer
[people_id] integer
Actors
------
[id] integer
[people_id] integer
基本上使用联结表的多对多关系,电影->作家导演演员
我通过几篇网络文章阅读了有关设置多对多关系的信息,但我阅读的越多,我对如何设置这种情况就越感到困惑。大多数只是解决一个领域或使用作者/书籍类比,这无助于我理解如何实现我的情况。
如前所述,我的问题是,这是一种有效的方法吗?甚至是正确的?
我希望能够轻松地查询一部电影,并将与其相关的所有信息输出到一个表单中。
谢谢 -Res
【问题讨论】:
-
这是正确的设计,尤其是当您稍后添加在
Writers、Directors和Actors之间不同的字段或约束时。 OTOH,如果您留下 3 个具有相同字段/约束的联结表,您也可以将它们合并到一个表中,类似于已经提出的一些答案。
标签: sql database-design many-to-many