2016-12-10 2 views
1

Я занимаюсь разработкой веб-сайта статистики фильмов, и я пытаюсь выяснить, что лучше всего подходит для базы данных.Поля базы данных PHP Mysql

Веб-сайт о кино. Но каждый фильм будет иметь разные поля. Мне нужна помощь, чтобы найти лучший способ хранения этих данных.

Например. У меня есть одна таблица под названием «фильмы». Это будет общая информация. Но для некоторых фильмов я хочу, чтобы у них были свои поля с другой информацией.

Я мог бы создать таблицу для каждого фильма, но после того, как количество фильмов будет расти, его создание будет выглядеть очень грязным и неорганизованным, чего я не хочу. Затем я мог бы создавать поля заполнителя для таблицы «фильмы», но мне может понадобиться один или два, или мне может понадобиться 10 или 20 дополнительных полей.

Может кто-нибудь будет рекомендовать, каким образом я должен подходить к этому?

Спасибо

ответ

1

Один простой способ справиться с вашей ситуацией, чтобы создать фильм атрибуты таблицы, где каждая запись в этой таблице представляет один Attribué для определенного фильма. Определение таблицы как следующий может иметь смысл:

CREATE TABLE movie_attribute (
    movie_attr_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, 
    movie_id NOT NULL 
    attr_name VARCHAR(255) NOT NULL, 
    attr_value VARCHAR(255) NOT NULL, 
    FOREIGN KEY fk_movie(movie_id) REFERENCES movies(id) 
) 

Используя эту конструкцию, любое количество атрибутов может быть добавлено для данного фильма, не требуя большие изменения дизайна. Таблицы базы данных были разработаны для комфортного роста по ряду причин, а не по столбцам.

+0

Суррогат, безусловно, лишний. Удовлетворительный ПК может быть сформирован по сущности и атрибуту. – Strawberry

+0

Это предполагает, что каждый атрибут пары ключей и значений для данного фильма различен, что может не всегда быть истинным, особенно если эти атрибуты исходили из неконтролируемого внешнего источника. –

+0

Итак, здесь нет естественного ключа? – Strawberry