SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 22.04.2014 00:53:35

YAAP
Завсегдатай
Зарегистрирован: 17.02.2010
Сообщений: 31

ERD для продукта и нескольких его декораторов разного типа

Добрый день. Подскажите как лучше составить структуру продукта и его декораторов.
Под декораторами тут понимается, например:
1) Упаковочная бумага (FK  на соотв. справочник)
2) Упаковочная лента (просто как услуга, есть или нет)
3) Гравировка продукта - нанесение текста (нескольких текстов) на продукт
и другие.

С одной стороны все декораторы вынесены в справочник, имеют свой ключ и свою стоимость:
Decorators

id    name    price
1    Бумага    10
2    Лента    5
3    Текст    2


Напрашивается сводная табличка между продуктом и несколькими его декораторами
ProductDecorators
id    product_id    decorator_id    decorator_price

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

Как лучше поступить в таком случае?
Можно, например, вынести декораторы вроде "Упаковочная бумага", "Текст" в отдельные сущности с FK  на продукт, а однотипные и "линейные" декораторы оставить в ProductDecorators.
Однако в этом случае получаем зависимость - часть декораторов разнесена в одни таблички (и должна обрабатываться на уровне кода), часть подчиняется общей логике ... что уже совсем не хорошо.

Неактивен

 

#2 24.04.2014 11:33:43

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: ERD для продукта и нескольких его декораторов разного типа

Первая мысль, что лучше - меньше таблиц, даже есть в таблицах будут какие-то неиспользуемые поля. В противном случае усложнится логика запросов к товарам (нарушится полиморфизм). Но с этим тоже нельзя переборщить. Единого решения тут нет.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson