我正在建立一个电影数据库。每部电影都会有类型、 Actor 、导演等字段。 现在我的问题是我如何设计数据库并编写 SQL,因为每部电影可以有多个 Actor 或导演等。

现在我的表电影数据库设计是:

  • movie_id
  • movie_title
  • actor_id
  • 董事_id
  • 流派_id

  • 但这样一来,在一部电影中加入多个 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/

    10-16 07:55