-2

假设我有一个包含以下表格的数据库:

movie包含:

movie1
movie2

actors包含:

actor1
actor2
actor3

可以说出actor2现在电影movie1movie2. 我现在如何使用它,而不必为每个现在的演员输入不同的记录,以便在表中给它自己的电影 ID actors,以节省一些空间?

4

2 回答 2

2

我认为您正在寻找的是连接表(链接表)(http://en.wikipedia.org/wiki/Junction_table):

(只是为了它,我在两个表名上都设置了复数)

tab movies 
      = movie1
      = movie2

tab actors
      = actor1
      = actor2
      = actor3

tab movies_actors
      = actors (id of tab_actors)
      = movies (id of tab_movies)

然后,您可以将 tab_movies_actors 与 tab_movies 和 tab_actors 连接起来,以获取哪些演员属于哪些电影:

SELECT * FROM tb_movies tm
JOIN tb_movies_actors tma ON (tm.id = tma.movies_id)
JOIN tb_actors ta ON  (tma.actors_id = ta.id)

或特定电影:

SELECT * FROM tb_movies tm
JOIN tb_movies_actors tma ON (tm.id = tma.movies_id)
JOIN tb_actors ta ON  (tma.actors_id = ta.id)
WHERE tm.id = 10
于 2013-08-25T12:35:12.533 回答
0

每当存在“多对多”关系时,它都需要一个链接表,如上一个答案中所示。

于 2013-08-25T12:56:32.370 回答