Я разрабатываю базу данных фильмов с обоими записями для актеров и кинематографистов. В настоящее время кредиты актера и режиссера объединяются в одну таблицу, потому что они отличаются только одним столбцом (внешний ключ «role_id» никогда не используется для кредитов режиссера - он всегда равен NULL). По-прежнему ли лучше держать их в одной таблице («movie_credits») или было бы лучше отделить («actor_credits» и «filmmaker_credits»)?Должен ли я иметь две отдельные таблицы, если они отличаются только одним столбцом?
Вот очень простая схема я определил, и я в том числе некоторых примеров в нем данные:
movie_credits +----+-----------+---------+---------------+----------+ | id | talent_id | role_id | identity_id | title_id | +----+-----------+---------+---------------+----------+ | 1 | 1 | 1 | 1 | 1 | | 2 | 2 | 2 | 1 | 2 | | 3 | 1 | NULL | 2 | 4 | +----+-----------+---------+---------------+----------+ talent +----+------------+-----------+ | id | first_name | last_name | +----+------------+-----------+ | 1 | Clint | Eastwood | | 2 | Sylvester | Stallone | +----+------------+-----------+ roles +----+---------------+ | id | name | +----+---------------+ | 1 | Walt Kowalski | | 2 | Rocky Balboa | +----+---------------+ identities +----+--------------+ | id | identity | +----+--------------+ | 1 | actor | | 2 | director | | 3 | producer | | 4 | screenwriter | +----+--------------+ titles +----+-----------------+ | id | name | +----+-----------------+ | 1 | Gran Torino | | 2 | Rocky | | 3 | Creed | | 4 | American Sniper | +----+-----------------+
Если вы видите совершенно другой способ структурирования данных для этого сценария, пожалуйста, сообщите я знаю. Я открыт для любого решения, которое может быть еще более эффективным и масштабируемым.
Моя первая мысль заключалась в том, что, поскольку один и тот же человек может использовать несколько «тождеств» (ваш термин) на разных изображениях или даже на одном и том же изображении, ваше текущее решение было бы более гибким, чем наличие отдельных таблиц для литых & экипаж. Есть возможность для улучшения, но мне нужно будет потратить на это некоторое время. –
Спасибо за ваш ответ. Просто для того, чтобы уточнить, я на самом деле не собираюсь отделять таблицу «талант» с актерами и кинематографистами, а скорее рассматривал разделение «кредитов кино» на две таблицы (у «actor_credits» будет столбец «role_id», а «filmmaker_credits» - столбец «identity_id») –