对一条记录使用多条记录

时间:2013-08-25 12:18:46

标签: mysql database-design

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

movie包含:

movie1
movie2

actors包含:

actor1
actor2
actor3

让我们在actor2movie1电影中都显示movie2。我现在如何使用它而不必为每个现在的actor输入不同的记录,在表actors中为它提供自己的电影ID,以节省一些空间?

2 个答案:

答案 0 :(得分: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和tab_actors加入tab_movies_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

答案 1 :(得分:0)

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