多对多的关系

时间:2010-10-04 04:00:55

标签: database-design

我有下表 - 演员,女演员,导演&电影。

前2个表与电影表有很多关系。

所以我创建了Celebrity_Movie表,其中包含主键 所有这些表都是外键。

所以我的问题是如何插入记录 在Celebrity_Movie表中。

因为可能有多个演员,女演员 电影。例如电影'种族'有多个演员&多位女演员。那怎么样 在Celebrity_Movie表格中为'Race'电影填充数据?

Actor table
Actor_id Actor_name
1        Amitabh
2        Akshay kumar
3        Hritik roshan
4        Amir khan
5        R. Madhavan
6        Sharman joshi
7        Ajay devgan
8        Tushar
9        Arshad varsi

Actress
Actress_id Actress_name
1          Aishwairya
2          Katrina
3          Bipasha
4          Sameera reddy
5          Kareena
6          Amrita rao

Director
Direct_id Direct_name
1         Abbas_Mustan
2         Priyadarshan

Movie
Movie_id Movie_name
M1       Race
M2       Golmal2
M3       3 Idiots

2 个答案:

答案 0 :(得分:1)

您需要三个多对多关系表,因为您想将导演,演员和女演员表与电影联系起来。

有几种方法可以做到这一点:

1)可能最好是简单地创建三个不同的关系表:

Actors_Movies
  id
  actor_id # foreign key
  movie_id

Actresses_Movies
  id
  actress_id
  movie_id

Directors_Movies
  id
  director_id
  movie_id

其他方式更复杂,其中单个连接表用于不同类型的连接(Actor,Actress,Director)。首先,我推荐三个连接表。

已添加如果您只想为演员/女演员多对多,最简单的方法是重新定义“Talent”表而不是Actor / Actress表来处理两者: / p>

Talent table
  id
  name
  actor   # boolean: true means an actor, false means an actress

Talent_Movie  # many to many
  id
  talent_id
  movie_id

答案 1 :(得分:1)

正如其他人之前所说,你需要三个多对多表。

我建议你考虑只使用一个人的桌子,并包括这个人的性别。此外,您可以在关系表中添加“角色”,以指示该人在给定电影中扮演的角色(演员/导演等)。