1

Таблица 1:

id|title|actors

Таблица 2:

id|actor_id|actor_name

Первая таблица содержит список фильмов, вторая список актёров. Естественно у фильма не может быть один актёр.

Как лучше всего связать таблицы, чтобы была возможность выборки по столбцу actors

Мои варианты:

  1. Хранить id актёров через запятую в поле типа SET и выбирать через FIND_IN_SET.

  2. Просто добавлять имена актёров через запятую. Убрать вторую таблицу (естественно таблица прибавит в весе так-как будет много повторов).

  3. Ещё одна таблица со списком актёров которые снимались в конкретных фильмах (опять таки лишние записи в БД).

Есть ли варианты получше?

John Doe
  • 128

2 Answers2

0

Так как в фильме может быть больше одного актера, а один актер за карьеру мог сняться больше чем в одном фильме, мы получаем связь многие-ко-многим. В РСУБД такая связь реализуется только через дополнительную таблицу с двумя столбцами-ссылками на связываемые сущности и ограничением на уникальность этой пары. Суррогатный ключ в данной таблице не нужен.

  • 2
    Актёр может сыграть в фильме более одной роли. Неизвестно, требуется ли эта информация, но если требуется, схема будет немного сложнее. – Akina Jan 28 '19 at 05:36
  • @Akina, Нет схема с более одной ролью не нужна. – John Doe Jan 28 '19 at 14:30
0
select Table1.title, * from Table2
 left join Table1 on Table1.actors like "%"+Table2.actor_name+"%"
santavital
  • 1,812