假设我有一个包含以下表格的数据库:
表movie
包含:
movie1
movie2
表actors
包含:
actor1
actor2
actor3
可以说出actor2
现在电影movie1
和movie2
. 我现在如何使用它,而不必为每个现在的演员输入不同的记录,以便在表中给它自己的电影 ID actors
,以节省一些空间?
假设我有一个包含以下表格的数据库:
表movie
包含:
movie1
movie2
表actors
包含:
actor1
actor2
actor3
可以说出actor2
现在电影movie1
和movie2
. 我现在如何使用它,而不必为每个现在的演员输入不同的记录,以便在表中给它自己的电影 ID actors
,以节省一些空间?
我认为您正在寻找的是连接表(链接表)(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
每当存在“多对多”关系时,它都需要一个链接表,如上一个答案中所示。