【问题标题】:Movie database relationship电影数据库关系
【发布时间】:2012-10-08 22:38:38
【问题描述】:

我正在设计一个存储电影相关信息的数据库。我被一个问题困住了,似乎不知道如何解决它。

所以我正在创建一个存储电影的数据库,对于我的电影表,这些是它的属性

-movieID NUMBER PRIMARY KEY,
-title VARCHAR(10),
-genres genre_varray,
-producers
-director
-cast

我将为制片人、演员和导演创建另一个表格。我的问题是对于现场制作人和演员我必须插入一个人员列表和演员我必须为每个演员添加一个角色,我不确定我会怎么做,我正在考虑使用嵌套表?另一个问题是,一个人可以是演员、导演、制片人或所有。

到目前为止我所拥有的是

supertype person_type - personID, name, sex
subtype actor_type - country
subtype director_type - country
subtype producer_type - company
table of people of type person_type
table of movie_people - profession

感谢您的帮助。

【问题讨论】:

    标签: database database-design oracle11g relationship rdbms


    【解决方案1】:

    任何人都可以在一部电影中扮演一个或多个角色,不同的电影他们扮演的角色会有所不同。

    我将有一张人员表、一张电影表、一张角色类型表(例如:演员、导演、制片人等),以及一张将所有三者与(PersonID、MovieID、RoleID)字段连接起来的表

    我还会为 MovieGenres 提供一个单独的表,而不是您详细说明的数组。

    【讨论】:

      【解决方案2】:

      总共需要六张表:

      GENRES
      GenreID
      GenreName
      
      ROLES
      RoleID
      RoleName  
      
      PEOPLE
      PersonID
      PersonName
      
      MOVIES
      MovieID
      MovieName
      MovieYear
      
      CASTLIST
      CastID
      MovieID
      PersonID
      RoleID 
      
      MOVIEGENRE
      MovieID
      GenreID
      

      一个人可以以多个角色出现在电影的演员表中,这就是为什么我给表格指定了一个代理 ID。否则,您将需要一个由所有三个外键组成的主键(假设您只想列出一个扮演三个不同角色的人 - 查看 Strangelove 博士)。

      已编辑以包含 MovieGenre 表。

      【讨论】:

      • 在这种结构中,一部电影只能有一种类型。
      • 因此,您无需在电影表中使用 GenreID 字段,而是定义另一个连接表,将 MovieId 和 GenreID 作为复合主键。
      猜你喜欢
      • 1970-01-01
      • 2022-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-16
      • 1970-01-01
      • 2023-04-05
      • 1970-01-01
      相关资源
      最近更新 更多