Скажімо, у мене є база даних із такими таблицями:
Таблиця 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
Всякий раз, коли існує зв'язок "багато до багатьох", для цього потрібна таблиця посилань, подібна до тієї, яка показана в попередній відповіді.