Задать вопрос
elitePr0ger
@elitePr0ger
Начинающий программист

Какой из вариантов схемы базы данных лучше?

У меня есть следующие сущности:
- документ, целью которого есть просто групировка связанных грузов (например, они все принадлежат одному клиенту);
- грузы;
- документ о перемещении груза.
На данный момент схема устроена таким образом, что каждый груз имеет свои собственные атрибуты.
65e6084e16867626645817.jpeg
Необходимо реализовать нововведение, которое приведет к уменьшению дублирования данных, которое происходит в результате того, что в пределах одного группирующего документа существуют почти идентичные грузы (с одинаковыми габаритами и весами), которые отличаются только ID.
Пока что есть 2 варианта реализации. Первый – разделить таблицу грузов так, что в одной таблице будут храниться атрибуты груза (габариты и вес), а в другой – экземпляры грузов.
65e60993897a9223931648.jpeg
Второй – ввести дополнительную колонку "Количество" прямиком в таблицу грузов, но тогда придется добавить колонку "Порядоковый номер груза" в таблицу "Документ о перемещении", чтобы знать какой именно груз записан в документ.
65e609ae224a9116852773.jpeg
Первый вариант мне нравится больше (тем, что он более удобный), но как минус при выборке данных придется делать лишний JOIN (а это лишняя нагрузка, но, наверное, не большая). Проект учебный, поэтому это не критично, но хочется узнать как лучше было бы сделать в настоящем приложении, а также стоит ли вообще внедрять эту функцию, если учесть, что грузы с дублирующимися данными встречаются редко.
  • Вопрос задан
  • 118 просмотров
Подписаться 1 Простой 8 комментариев
Пригласить эксперта
Ответы на вопрос 1
@mvv-rus
Настоящий админ AD и ненастоящий программист
Если я правильно понимаю (мало ли, вдруг есть какие-то стандарные коробки, контейнеры и т.д), то массогабаритные харастеристики груза отдельной сущностью не являются. Так что первый вариант противоречит подходу "сущность-связь" и тем самым плох.
Второй вариант годится, если каждый отдельный груз с одинаковыми массогабаритными характеристивами не является отдельной сущностью (т.е. других различающихся атрибутов у таких грузов нет и никогда не будет). Только тогда всю совокупность таких грузов можно считать отдельной сущностью, а потому - объеднить в одну запись с указанием количества. Стоит ли такая оптимизация снижение гибкости из-за введения указанного выше ограничения - решать вам. Но есть общее правило - не делать преждевременных, невынужденных оптимизаций, если они вызывают побочные эффекты. А эта, как выше указано - вызывает.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы