我正在建立一个电影数据库。每部电影都会有类型、 Actor 、导演等字段。 现在我的问题是我如何设计数据库并编写 SQL,因为每部电影可以有多个 Actor 或导演等。
现在我的表电影数据库设计是:
但这样一来,在一部电影中加入多个 Actor 似乎就更难了。
最佳答案
Actor 和电影之间存在多对多关系。每个 Actor 可以出演多部电影,每部电影都有很多 Actor 。要在 SQL 中建模多对多关系,您可以使用 junction table(也称为交叉引用表,以及其他名称)。
+-------------+ | Movie | +-------------+ | Id |<----+ | Title | | | Year | | +-------------+ | | +-------------+ | | Actor | | +-------------+ | | Id |<-+ | | Name | | | | Birthdate | | | +-------------+ | | | | +-------------+ | | | Movie_Actor | | | +-------------+ | | | ActorId |--+ | | MovieId |-----+ +-------------+
To query for the names of all the actors in the movie with ID 153:
SELECT Actor.Name
FROM Actor
JOIN Movie_Actor ON Movie_Actor.ActorId = Actor.Id
WHERE Movie_Actor.MovieId = 153
关于用于电影数据库搜索系统的 SQL,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3690745/