Имеет ли смысл в этом случае использовать 1 таблицу вместо нескольких таблиц? - PullRequest
1 голос
/ 08 июля 2019

Допустим, я отслеживаю информацию, такую ​​как книги, автомобили, животные, и затем у каждого из них есть свойства для классификации, такие как жанр (ужасы, комедии и т. Д.), Тип (внедорожник, хэтчбек и т. Д.), Класс (млекопитающее и т. Д.) ). Мой инстинкт подсказывает мне, что у меня будет 3 таблицы, такие как book_genres, car_types, animal_classes для их хранения.

Но был бы случай или аргумент для использования только 1 таблицы классификаций и наличия 3 полей: id ,ification_name ,ification_option и просто ссылки на это в моих таблицах книг, автомобилей и животных?

Или даже 2 таблицы: таблица классификаций с идентификатором и именем (типы, жанры, классы) и таблица классификации_опции с идентификатором, классификационным идентификатором и именем (ужас, внедорожник, млекопитающее и т. Д.)

Ответы [ 2 ]

1 голос
/ 10 июля 2019

Ваш инстинкт говорит правильно: три таблицы лучше с точки зрения как логического, так и физического дизайна;целостность данных поддерживается базой данных, а запросы проще.

Однако, когда ваше приложение должно отслеживать некоторые абстрактные «элементы», и пользователи должны иметь возможность создавать свои собственные классификации, EAV-подобный дизайн для хранения свойств элементов может быть лучше независимо от отсутствия целостности данных, которое выНужна поддержка в приложении.

1 голос
/ 08 июля 2019

Лучше создать таблицу для каждого типа: скажем, что в следующем году вы захотите добавить свойство / столбец к car под названием «make» или «model».Имея отдельные таблицы для каждого типа, вы сможете добавить этот столбец только к cars, не затрагивая books и animals.

Сохранение структурных и модульных структур для каждого типа (принцип, называемый разделением задач) сделает ваш код в будущем более легким для чтения, обслуживания и тестирования!

...