使用多個記錄,可以說,我有以下各表數據庫:一條記錄
表movie
包含:
movie1
movie2
表actors
包含:
actor1
actor2
actor3
比方說actor2
出現在兩部電影movie1
和movie2
。我現在如何使用這個,而不必爲每個現在的演員輸入一個不同的記錄,以便在表actors
中給它自己的電影ID,以節省一些空間?
使用多個記錄,可以說,我有以下各表數據庫:一條記錄
表movie
包含:
movie1
movie2
表actors
包含:
actor1
actor2
actor3
比方說actor2
出現在兩部電影movie1
和movie2
。我現在如何使用這個,而不必爲每個現在的演員輸入一個不同的記錄,以便在表actors
中給它自己的電影ID,以節省一些空間?
我知道你在尋找的是一個結表(鏈接表)(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
每當存在「多對多」的關係時,它需要一個鏈接表,如上一個答案中所示。
您正試圖進行微型優化。只需使用數據庫來設計它:標準化的數據,不用擔心重複的數據。 –
好吧,thx很快爲重播;) –
http://stackoverflow.com/questions/1273715/many-to-many-relationship-in-database-design – DCoder