假设我有一个包含以下表格的数据库:
表movie
包含:
movie1
movie2
表actors
包含:
actor1
actor2
actor3
让我们在actor2
和movie1
电影中都显示movie2
。我现在如何使用它而不必为每个现在的actor输入不同的记录,在表actors
中为它提供自己的电影ID,以节省一些空间?
答案 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)
每当存在“多对多”的关系时,它需要一个类似上一个答案中所示的链接表。