2013-08-25 149 views
-2

使用多個記錄,可以說,我有以下各表數據庫:一條記錄

movie包含:

movie1 
movie2 

actors包含:

actor1 
actor2 
actor3 

比方說actor2出現在兩部電影movie1movie2。我現在如何使用這個,而不必爲每個現在的演員輸入一個不同的記錄,以便在表actors中給它自己的電影ID,以節省一些空間?

+2

您正試圖進行微型優化。只需使用數據庫來設計它:標準化的數據,不用擔心重複的數據。 –

+0

好吧,thx很快爲重播;) –

+0

http://stackoverflow.com/questions/1273715/many-to-many-relationship-in-database-design – DCoder

回答

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 
0

每當存在「多對多」的關係時,它需要一個鏈接表,如上一個答案中所示。

相關問題