Да кажем, че имам база данни със следните таблици:
маса movie
съдържащ:
movie1
movie2
маса actors
съдържащ:
actor1
actor2
actor3
Да речем actor2
се появява и в двата филма movie1
и movie2
, Как мога да използвам това сега, без да се налага да въвеждам различен запис за всеки сега актьор, за да му дам свой собствен филмов идентификатор в таблицата actors
, за да спестите малко място?
Отговори:
2 за отговор № 1Мисля, че това, което търсите, е разклонителна таблица (линк-таблица) (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 за отговор № 2
Всеки път, когато има връзка „много към много“, тя изисква таблица с връзки като тази, която е показана в предишния отговор.