电影数据库关系

时间:2012-10-18 12:53:38

标签: database database-design oracle11g relationship rdbms

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

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

-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

感谢您的帮助。

2 个答案:

答案 0 :(得分:4)

任何人都可以在电影上扮演一个或多个角色,而他们所执行的角色对于不同的电影会有所不同。

我会有一个人员表,一个电影表,一个角色类型表(例如:演员,导演,制片人等),以及一个将所有三个字段与(PersonID,MovieID,RoleID)字段链接的表格< / p>

我还有一个单独的MovieGenres表,而不是你详细说明的数组。

答案 1 :(得分: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表。