powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / ввести ограничения (логику)...
54 сообщений из 54, показаны все 3 страниц
ввести ограничения (логику)...
    #36041544
Фотография Cheerful Calf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Категории - торты, диваны
Цвета - коричневый, красный
Тип покрытия - кожа, шоколадная глазурь, велюр
Продукт - Торт "Нежность", диван "Серерио"
Покрытия - шоколадная глазурь коричневая, Кожа коричневая, велюр красный

надо ввести ограничение чтобы при вводе заказа диван не покрыли шоколадной глазурью. Какие есть более правильные варианты с точки зрения нормальной бд?
...
Рейтинг: 0 / 0
ввести ограничения (логику)...
    #36041600
Фотография bured
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
semantic web если только
...
Рейтинг: 0 / 0
ввести ограничения (логику)...
    #36041631
Фотография D129
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cheerful Calf,
Мы в таком случае ввели группу типов покрытия, и каждый продукт выбирает только из своей группы.

То есть, еще один слой.
...
Рейтинг: 0 / 0
ввести ограничения (логику)...
    #36041642
M234
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
D129Cheerful Calf,
Мы в таком случае ввели группу типов покрытия, и каждый продукт выбирает только из своей группы.

То есть, еще один слой.
+1
...
Рейтинг: 0 / 0
ввести ограничения (логику)...
    #36041645
Фотография Cheerful Calf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не понял, так чтоли? О_о
...
Рейтинг: 0 / 0
ввести ограничения (логику)...
    #36041650
Фотография Cheerful Calf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
M234, D129,

нарисуйте, или скриптом покажите какие поля в том слое (тьху ты, в таблице то ест, развелось тут сапистов всяких ))) должны быть и связи )
...
Рейтинг: 0 / 0
ввести ограничения (логику)...
    #36041653
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cheerful Calfнадо ввести ограничение чтобы при вводе заказа диван не покрыли шоколадной глазурью.
Тип покрытия связать с категорией (многие ко многим). Из продуктов ссылаться на эту связку.
...
Рейтинг: 0 / 0
ввести ограничения (логику)...
    #36041658
Фотография Cheerful Calf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer,

так это и есть первая картинка. или я что то не понял?
...
Рейтинг: 0 / 0
ввести ограничения (логику)...
    #36041662
Фотография ChA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cheerful Calfнадо ввести ограничение чтобы при вводе заказа диван не покрыли шоколадной глазурью. Какие есть более правильные варианты с точки зрения нормальной бд?Использовать мигрирующие составные ключи, в состав которых будут входить идентификатор категории. В результате продукту в "ОрдерРоуз" будет соответствовать покрытие только из той же категории.
P.S. И тогда, кстати, таблица "Ограничения" окажется лишней.
...
Рейтинг: 0 / 0
ввести ограничения (логику)...
    #36041735
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cheerful Calfтак это и есть первая картинка. или я что то не понял?
Может быть я не понял идеи, но "ограничения" там вроде бы не действуют. На них нет ссылки из продукта или заказа.

ChAИспользовать мигрирующие составные ключи, в состав которых будут входить идентификатор категории.
Это ограничивает единственной категорией. Если покрытием можно накрыть как диван, так и стул, придётся его дублировать.
...
Рейтинг: 0 / 0
ввести ограничения (логику)...
    #36041740
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А почему там замкнутый цикл? Такого не может быть!
...
Рейтинг: 0 / 0
ввести ограничения (логику)...
    #36041768
Фотография Cheerful Calf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир Саныч,

не поверишь, я на лестнице даже сообщение искал, в котором ты что-то про "кольца" рассказывал, но не нашел )))
а как быть?
...
Рейтинг: 0 / 0
ввести ограничения (логику)...
    #36041848
Фотография ChA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerChAИспользовать мигрирующие составные ключи, в состав которых будут входить идентификатор категории.Это ограничивает единственной категорией. Если покрытием можно накрыть как диван, так и стул, придётся его дублировать.Только если диван и стул будут в разных категориях. Из примера ТС это предположение не является очевидным. Если же предположить обратное, т.е., покрытие - сущность абсолютно независимая от категории, тогда действительно имело бы смысл выносить связь отдельно. Впрочем, при таком варианте, ничто не помешает сделать связь между шоколадной глазурью и мебелью.
...
Рейтинг: 0 / 0
ввести ограничения (логику)...
    #36041853
Сахават Юсифов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cheerful Calf,

надо ввести типы - диван, покрытия для дивана, цвет для дивана,.... цвет для шоколада, потом
сделать агрегирующие типы Изделия{Диваны, Торты} Покрытия{велюр, шоколад...}... а не пытаться натянуть кривоые модели типа РБД
...
Рейтинг: 0 / 0
ввести ограничения (логику)...
    #36041858
Сахават Юсифов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Объектная модель это
...
Рейтинг: 0 / 0
ввести ограничения (логику)...
    #36041887
Сахават Юсифов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот
...
Рейтинг: 0 / 0
ввести ограничения (логику)...
    #36041896
Фотография Cheerful Calf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сахават Юсифоввотчто вот?
...
Рейтинг: 0 / 0
ввести ограничения (логику)...
    #36041898
Сахават Юсифов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cheerful Calf,
поспешил
...
Рейтинг: 0 / 0
ввести ограничения (логику)...
    #36041916
Фотография Compositum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это была рекламмная пауза от Сахавата ;)
...
Рейтинг: 0 / 0
ввести ограничения (логику)...
    #36041918
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cheerful CalfВладимир Саныч,

не поверишь, я на лестнице даже сообщение искал, в котором ты что-то про "кольца" рассказывал, но не нашел )))
а как быть?
Если имеется в виду, что один справочник используется для двух разных полей, то нарисовать этот справочник два раза. А иначе получается, что в этих двух полях должно быть одинаковое значение.
...
Рейтинг: 0 / 0
ввести ограничения (логику)...
    #36041919
Саха, вот вечно Вы лезете со своим тормозным хламом. Искру, ей богу, напоминаете
...
Рейтинг: 0 / 0
ввести ограничения (логику)...
    #36041926
Фотография Cheerful Calf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сахават Юсифов,

опять таки что вот? Что это: IDEF1X ? - нет, EER ? - нет, EER(1,n) ? - нет.... Как трактовать ваш рисунок?
...
Рейтинг: 0 / 0
ввести ограничения (логику)...
    #36041927
Сахават Юсифов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ в прюдбанничке,

хехе, братва нагрянула
умишком то никак??? не вЪезжаете???? или просто ваш ынстрУмент не позволяет быстро все это сделать?
...
Рейтинг: 0 / 0
ввести ограничения (логику)...
    #36041930
Сахават Юсифов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cheerful Calf,

это твоя модель в жизни
...
Рейтинг: 0 / 0
ввести ограничения (логику)...
    #36041935
Фотография Compositum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сахават ЮсифовМСУ в прюдбанничке,

хехе, братва нагрянула
умишком то никак??? не вЪезжаете???? или просто ваш ынстрУмент не позволяет быстро все это сделать?
Согласно вашей схеме, Чирфа будут интересовать только диваны и торты? А для каждого типа будете новую таблу создавать, т.е. "доплетать структурку" ? ;)

п.с. прямо как паучокс... :)
...
Рейтинг: 0 / 0
ввести ограничения (логику)...
    #36041945
Сахават ЮсифовМСУ в прюдбанничке,

хехе, братва нагрянула
умишком то никак??? не вЪезжаете???? или просто ваш ынстрУмент не позволяет быстро все это сделать?

Ну как всегда, Сахушка. Все дураки, один Ваш софтошлак все задачи решает

Пишите еще, не останавливайтесь )))
...
Рейтинг: 0 / 0
ввести ограничения (логику)...
    #36041965
Фотография ChA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cheerful CalfКатегории - торты, диваны
Цвета - коричневый, красный
Тип покрытия - кожа, шоколадная глазурь, велюр
Продукт - Торт "Нежность", диван "Серерио"
Покрытия - шоколадная глазурь коричневая, Кожа коричневая, велюр красный

надо ввести ограничение чтобы при вводе заказа диван не покрыли шоколадной глазурью. Какие есть более правильные варианты с точки зрения нормальной бд?Ты ждешь полную схему связей ? Или что ? Первоначальная схема больше задаёт вопросов, чем даёт ответов. Варианты уже были предложены. Тебе только надо определиться, что от чего зависит. Есть предположение, что типы покрытий должны зависеть от категории товаров. Но ! Неизвестна арность отношения, так как непонятно по каким признакам будет происходить категоризация. Пока ты с этим не определишься, можно будет долго обсуждать сферического коня в вакууме. Как на схемах Сахавата...
...
Рейтинг: 0 / 0
ввести ограничения (логику)...
    #36041976
Фотография Cheerful Calf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не понимаю что не понятного. я же четко написал - "надо ввести ограничение чтобы при вводе заказа диван не покрыли шоколадной глазурью", само собой чтобы торт не обтянули велюром тоже. Все! не надо додумывать что там у меня еще есть и может быть.
...
Рейтинг: 0 / 0
ввести ограничения (логику)...
    #36041981
Фотография Cheerful Calf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ChAЕсть предположение, что типы покрытий должны зависеть от категории товаров.опять не понятно - почему это только предположение?? я четко сказал, что так и должно быть, даже таблицу "ограничения" нарисовал, где тип покрытия писобачивается именно к категории.
...
Рейтинг: 0 / 0
ввести ограничения (логику)...
    #36042043
Фотография D129
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cheerful Calf,

не вижу, уже расшифровали решение или нет....

Ну в частном случае можно так:
(в Визии я не проффессионал :( )
...
Рейтинг: 0 / 0
ввести ограничения (логику)...
    #36042050
Фотография D129
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cheerful Calf,

Каждая запись из "Группы Покрытий для Товара"

Ссылается на свой товар, "Торт" например и на Группу покрытий "Для еды"
На "Группу покрытий" ссылается соответственная запись из "Типов покрытий", и в случае с тортом это должны быть Глазурь и Сливки.

Такая схема позволяет (если нужно)
для автомобиля присоединить группу покрытий для мебели, и покрыть все велюром...
...
Рейтинг: 0 / 0
ввести ограничения (логику)...
    #36042055
Фотография ChA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cheerful CalfВсе! не надо додумывать что там у меня еще есть и может быть.Слишком часто в подобных ситуациях появлялся рояль из кустов со словами "А вот тут ещё..."

Cheerful Calfдаже таблицу "ограничения" нарисовал, где тип покрытия писобачивается именно к категории.Так вариант уже были предложены. Чтобы ограничение работало, то либо категория должна зависеть от типа покрытия, либо тип покрытия от категории. У тебя этой зависимости на первоначальной схеме нет. Вот один из вариантов:
КатегорияIDName
ПродуктКатегория_IDIDName
PK (Категория_ID, ID); FK (Категория_ID) => Категория(ID)

Тип покрытияIDКатегория_IDName
PK (Категория_ID, ID);FK (Категория_ID) => Категория(ID)

ПокрытияКатегория_IDIDТип покрытия_IDName
PK (Категория_ID, ID);FK (Категория_ID, Тип покрытия_ID) => Тип покрытия(Категория_ID, Тип покрытия_ID)

ОрдерСтрокаIDКатегория_IDПродукт_IDПокрытие_IDName
PK (неважно, например - ID);
FK1 (Категория_ID, Продукт_ID) => Продукт(Категория_ID, ID)
FK2 (Категория_ID, Покрытие_ID) => Покрытие(Категория_ID, ID)

Где-то так. В результате, принадлежность Продукт и Покрытия только одной категории будет диктоваться самой схемой данных.
...
Рейтинг: 0 / 0
ввести ограничения (логику)...
    #36042229
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ChAТолько если диван и стул будут в разных категориях.
Я именно об этом. То, что категории строятся "не по покрытиям" - имхо очевидно.

ChAВпрочем, при таком варианте, ничто не помешает сделать связь между шоколадной глазурью и мебелью.
Помешает. Эксперт по предметной области, который должен был бы внести в настройки такую пару.
...
Рейтинг: 0 / 0
ввести ограничения (логику)...
    #36042327
Фотография Cheerful Calf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ChA,

а где цвета?
...
Рейтинг: 0 / 0
ввести ограничения (логику)...
    #36042439
Фотография ChA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerChAТолько если диван и стул будут в разных категориях. Я именно об этом. То, что категории строятся "не по покрытиям" - имхо очевидно.Я где-то написал обратное ? Но типы покрытия зависят от категории, если верить ТСCheerful CalfChAЕсть предположение, что типы покрытий должны зависеть от категории товаров.опять не понятно - почему это только предположение ?? я четко сказал, что так и должно быть, даже таблицу "ограничения" нарисовал, где тип покрытия писобачивается именно к категории.Хотя я допускаю, что он не совсем понял смысла моего предположения. Вы, фактически, предложили сделать то же самое, что он и так уже сделал в стартовом топике. Т.е., просто ввести дополнительный справочник всевозможных допустимых комбинаций. Что он не сделал, так этоsoftwarerТип покрытия связать с категорией (многие ко многим). Из продуктов ссылаться на эту связку .Но смысл и достаточность такой связи неочевидны, так как она, на мой взгляд, никак
softwarerChA не помешает сделать связь между шоколадной глазурью и мебелью. Помешает. Эксперт по предметной области, который должен был бы внести в настройки такую пару.Как вы собираетесь проверять эту настройку, кроме использования знаний новой сущности "эксперта" ? Тригерами или процедурами ? Если "нет", то как она может помешать в строку ордера добавить "диван" в качестве продукта и в качестве покрытия - "синюю шоколадную глазурь" обычным insert-ом ? Если "да", то и первоначального варианта ТС вполне достаточно для подобного рода проверки.
Не то чтобы проверка в триггерах или процедурах как-то задевала мои религиозные чувства, но лично я предпочитаю по возможности реализовать ограничения декларативно и по возможности именно тем способом, который для этого формально предназначен.
Cheerful Calfа где цвета?Предполагал, что это очевидно. Добавьте таблицу цвета и установите связь(FK) с таблицей покрытий, как это было изображено в Вашем первом топике. Просто она не имеет отношения к озвученной Вами проблеме.
P.S. Хотя мне кажется, было бы разумнее вынести ссылку на цвет покрытия в строку ордера. Но не настаиваю, Вам виднее.
P.P.S. На всякий: связи могут устанавливаться не только с помощью PK, но и UQ. Поэтому вполне возможно заменить в моем примере PK, на UQ. А роль PK будет традиционно выполнять ID.
...
Рейтинг: 0 / 0
ввести ограничения (логику)...
    #36042442
Сахават Юсифов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Compositum,

дА
...
Рейтинг: 0 / 0
ввести ограничения (логику)...
    #36042444
Сахават Юсифов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Compositum,

питому что такова сеави не не кодд опИсывает жисть
...
Рейтинг: 0 / 0
ввести ограничения (логику)...
    #36042754
Фотография Cheerful Calf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ChA,

я не въехал или так и предлогалось??
...
Рейтинг: 0 / 0
ввести ограничения (логику)...
    #36042906
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А циклов все больше и больше...
...
Рейтинг: 0 / 0
ввести ограничения (логику)...
    #36042939
Фотография Cheerful Calf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир СанычДа, мне тоже это не дает покоя. А вот попробовал сделать справочник (продукт, покрытие, цвет, ширина, высота, цена) чтобы циклов не было - получил для 40 товаров 22500000000 записей.
...
Рейтинг: 0 / 0
ввести ограничения (логику)...
    #36043592
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ChAНо типы покрытия зависят от категории, если верить ТС
"Зависят" не означает "определяются". Велюр может быть покрытием для кресла или дивана, может - для куртки. Ваша схема требует в этом случае ввести в справочник два велюра. Что имхо - недостаток, который стоит иметь в виду.

ChAКак вы собираетесь проверять эту настройку, кроме использования знаний новой сущности "эксперта" ? Тригерами или процедурами ? Если "нет", то как она может помешать в строку ордера добавить "диван" в качестве продукта и в качестве покрытия - "синюю шоколадную глазурь" обычным insert-ом ?
Помешает очень легко - отсутствием поля, куда можно было бы внести такую информацию. В строку ордера добавляется "диван артикул такой-то", согласны? Это ссылка на таблицу продуктов (внешний ключ). В таблице продуктов у "диван артикул такой-то" стоит ссылка на развязку (которая у ТС названа "ограничения"). В этих ограничениях эксперт вводит: категория=диван, покрытие=велюр. И до тех пор, пока эксперт не введёт категория=диван, покрытие=глазурь, ни один insert в ордера и в продукты ничего такого сформировать не сможет.

Если полагать изделия уникальными, скажем "диваны и торты на заказ", таблица продуктов становится лишней, тогда ссылка на ограничения идёт прямо из строки ордера, принцип остаётся тот же.

ChAно лично я предпочитаю по возможности реализовать ограничения декларативно и по возможности именно тем способом, который для этого формально предназначен.
И? Я разве где-то протестую? Я бы предпочёл, чтобы смотрели написанное мное, а не фантазировали "вместо меня".
...
Рейтинг: 0 / 0
ввести ограничения (логику)...
    #36043596
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир СанычА циклов все больше и больше...
А что в них не даёт спать?
...
Рейтинг: 0 / 0
ввести ограничения (логику)...
    #36043642
Фотография Compositum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerВладимир СанычА циклов все больше и больше...
А что в них не даёт спать?
полагаю скорость ;)
...
Рейтинг: 0 / 0
ввести ограничения (логику)...
    #36043660
Фотография ChA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cheerful Calfили так и предлогалось??Похоже всё-таки не въехали. Во-первых, связь от "Категория" к "Покрытия" это не моё, в ней нет смысла, так как они уже связаны через "Типы покрытия". Кроме того, от "Тип покрытия" к "Покрытия" связь насколько понимаю "1 ко многим", так же как и от "Продукты" и "Покрытия" к "ОрдерСтрока", причем в последнем случае это обычные одиночные, а не двойные непонятные связи.
В общем, ещё раз, но уже на MS SQL DDL:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
CREATE TABLE "Категория" (
	ID int PRIMARY KEY
	, Name varchar( 30 )
)

CREATE TABLE "Продукт" (
	"Категория_ID" int
	, ID int PRIMARY KEY
	, Name varchar( 30 )
	, UNIQUE("Категория_ID", ID)
	, FOREIGN KEY ("Категория_ID") REFERENCES "Категория"(ID)
)


CREATE TABLE "Тип покрытия" (
	"Категория_ID" int
	, ID int PRIMARY KEY
	, Name varchar( 30 )
	, UNIQUE("Категория_ID", ID)
	, FOREIGN KEY ("Категория_ID") REFERENCES "Категория"(ID)
)

CREATE TABLE "Цвет" (
	ID int PRIMARY KEY
	, Name varchar( 30 )
)

CREATE TABLE "Покрытие" (
	"Категория_ID" int
	, ID int PRIMARY KEY
	, "Цвет_ID" int
	, Name varchar( 30 )
	, UNIQUE("Категория_ID", ID)
	, FOREIGN KEY ("Категория_ID", ID) REFERENCES "Тип покрытия" ("Категория_ID", ID)
	, FOREIGN KEY ("Цвет_ID") REFERENCES "Цвет" (ID)
)


CREATE TABLE "ОрдерСтрока" (
	ID int PRIMARY KEY
	, OrderID int UNIQUE
	, "Категория_ID" int
	, "Продукт_ID" int
	, "Покрытие_ID" int
	, "Цена" money
	, "Количество" decimal( 28 ,  10 )
	, FOREIGN KEY ("Категория_ID", "Продукт_ID") REFERENCES "Продукт" ("Категория_ID", ID)
	, FOREIGN KEY ("Категория_ID", "Покрытие_ID") REFERENCES "Покрытие" ("Категория_ID", ID)
)

P.S. Не понимаю, о каких-таких "циклах" вы здесь толкуете, в предлагаемой схеме они отсутствуют. Здесь обычный однонаправленный граф.
...
Рейтинг: 0 / 0
ввести ограничения (логику)...
    #36043880
Фотография ChA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerChAто как она может помешать в строку ордера добавить "диван" в качестве продукта и в качестве покрытия - "синюю шоколадную глазурь" обычным insert-ом ?
Помешает очень легко - отсутствием поля, куда можно было бы внести такую информацию. В строку ордера добавляется "диван артикул такой-то", согласны? Это ссылка на таблицу продуктов (внешний ключ). В таблице продуктов у "диван артикул такой-то" стоит ссылка на развязку (которая у ТС названа "ограничения"). В этих ограничениях эксперт вводит: категория=диван, покрытие=велюр. И до тех пор, пока эксперт не введёт категория=диван, покрытие=глазурь, ни один insert в ордера и в продукты ничего такого сформировать не сможет.А куда это поле денется-то ? Или предлагаете в строке ордера из комбинации (Продукт, Покрытие) выбросить Покрытие ? Если "нет", то в строку ордера благополучно вставляем диван с шоколадной глазурью, так как Покрытие не контролируется явно заданными ограничениями. Если "да", то где связь между конкретным продуктом и конкретным покрытием ? В предлагаемой Вами схеме в продуктах я вижу только ссылку на связь категорий и типов покрытий .
В общем, не мешало бы как-нибудь более внятно проиллюстрировать все необходимые изменения первоначальной схемы ТС. Тогда можно будет разговаривать более предметно, а не ждать очередных кроликов из шляпы.

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

softwarerЯ бы предпочёл, чтобы смотрели написанное мное, а не фантазировали "вместо меня".Я тоже, но люди такие фантазеры, все время норовят прочитать между строчек. Какая жалость, что нет телепатии...
...
Рейтинг: 0 / 0
ввести ограничения (логику)...
    #36044066
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ChAИли предлагаете в строке ордера из комбинации (Продукт, Покрытие) выбросить Покрытие ?
Да, безусловно. Это вообще.. странная мысль иметь их рядом, поскольку Покрытие - очевидный атрибут Продукта.

ChAто где связь между конкретным продуктом и конкретным покрытием ?
Согласен, забыл оговорить этот момент. Я пока не вижу смысла в сущности "конкретное покрытие". По изложенному в неё кроме типа покрытия входит только цвет, и имхо этого мало; удобнее вставить цвет в продукты.

ChAЛично я не знаю, какие варианты могут встречаться у ТС,
Я тоже. Поэтому я отметил общий недостаток схемы, нигде не сказав "её нельзя применять". Даже если у ТС встречается такой вариант, дублирование может в его ситуации быть более удачным ходом. Просто об этом надо подумать заранее.
...
Рейтинг: 0 / 0
ввести ограничения (логику)...
    #36044165
Фотография Cheerful Calf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerудобнее вставить цвет в продукты.тогда надо будет два ограичения - торт не только не может быть покрыт велюром, но и красным шоколадом.
в реале есть 20 диванов и 750 цветов/покрытий, если делать полный справочник диван/цвет/покрытие - уже выходит довольнотаки большой объем...
...
Рейтинг: 0 / 0
ввести ограничения (логику)...
    #36044195
Фотография ChA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerChAИли предлагаете в строке ордера из комбинации (Продукт, Покрытие) выбросить Покрытие ? Да, безусловно. Это вообще.. странная мысль иметь их рядом, поскольку Покрытие - очевидный атрибут Продукта.Т.е., очередной кролик, кроме добавления связи надо еще и поле выбросить из строки ордера. А без фантазии было так простоsoftwarerТип покрытия связать с категорией (многие ко многим). Из продуктов ссылаться на эту связку.IMHO, очевидность является прерогативой ТС и он тоже сильно просил за него не фантазировать. Вот если судить по его первоначальной схеме, то покрытие не является атрибутом продукта.

softwarerChAто где связь между конкретным продуктом и конкретным покрытием ? Согласен, забыл оговорить этот момент. Я пока не вижу смысла в сущности "конкретное покрытие". По изложенному в неё кроме типа покрытия входит только цвет, и имхо этого мало; удобнее вставить цвет в продукты.Ну вот как тут можно было обойтись только тем, что Вы пишете ? Там выбросили, здесь вообще всё не так, начинает напоминать допрос партизана. Может было бы проще нарисовать схему данных или DDL в качестве иллюстрации, дабы не оставлять место фантазиям читателям ?

softwarerChAЛично я не знаю, какие варианты могут встречаться у ТС,
Я тоже. Поэтому я отметил общий недостаток схемы, нигде не сказав "её нельзя применять". Даже если у ТС встречается такой вариант, дублирование может в его ситуации быть более удачным ходом. Просто об этом надо подумать заранее.Абсолютно здравый подход, ноCheerful Calfне надо додумывать что там у меня еще есть и может быть.
...
Рейтинг: 0 / 0
ввести ограничения (логику)...
    #36044246
Фотография Cheerful Calf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>>Покрытие - очевидный атрибут Продукта
я говорил, если описать справочник продуктов со всевозможномы покрытиями - одних диванов 15к, а где еще торты да и не дай бог раскладушки на будущее.... а разложив это по таблицам получается оч хорошо - 700 цветов, 20 типов покрытий, 20 товаров. Но возникла проблема, что на торт велюр натянут..
каждый "продаваемый" продукт индивидуален, то есть береться продукт простой, покрываетсяя покрытием и продается (ордер роуз).
...
Рейтинг: 0 / 0
ввести ограничения (логику)...
    #36044535
Сахават Юсифов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CompositumСахават ЮсифовМСУ в прюдбанничке,

хехе, братва нагрянула
умишком то никак??? не вЪезжаете???? или просто ваш ынстрУмент не позволяет быстро все это сделать?
Согласно вашей схеме, Чирфа будут интересовать только диваны и торты? А для каждого типа будете новую таблу создавать, т.е. "доплетать структурку" ? ;)

п.с. прямо как паучокс... :)
Я так и не пнял, что тебя пугает? Ведь таблицу то на самом деле никто не генерирует. Просто одни и те же вещи переклассифицируются. Множественная классфификация. Ты наверное согласишься что, "Диван" все же не "Торт" - КОГДА ВОПРОС ИДЕТ о "Покрытии"? и "Цвет покрытии" дивана и торта вооще то определяется МАТЕРИАЛОМ откуда этот "цвет" получается???

Описывать жизнь надо как можно точнее, введя дополнительные классификаторы, а КАК ВСЕ ЭТО ХРАНИТЬ и к нему достучаться - отдельный вопрос.
...
Рейтинг: 0 / 0
ввести ограничения (логику)...
    #36044543
Сахават Юсифов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cheerful Calf,

Вообще, вопрос конифигурации изделия по заказу очень сложен. В определенных случах приходится разрабатывать язык описания сложных связей (см. Аксапта, ОЕБС и т.д.), но можно все свести к модификациям при групповой спецификации и потянуть эти модификации сквозь технологически-производственнйых спецификаций. Так что не особо обольшайся схемками БД.
...
Рейтинг: 0 / 0
ввести ограничения (логику)...
    #36045311
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cheerful CalfВладимир СанычДа, мне тоже это не дает покоя. А вот попробовал сделать справочник (продукт, покрытие, цвет, ширина, высота, цена) чтобы циклов не было - получил для 40 товаров 22500000000 записей.
22500000000 - это типа максимально возможное количество сочетаний, которое позволяет выбрать система? Ну и хорошо, что она столько позволяет. Не вижу, что в этом плохого.
...
Рейтинг: 0 / 0
ввести ограничения (логику)...
    #36047295
Фотография Cheerful Calf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну вообщето это должен быть справочник для пользователя, желательно в виде комбы. но мне нравится ход ваших мыслей ))))))
...
Рейтинг: 0 / 0
ввести ограничения (логику)...
    #36047328
Pav77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Cheerful Calf,

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

И если производные берутся из одних и тех-же таблиц...

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

Разграничить только программированием?
...
Рейтинг: 0 / 0
54 сообщений из 54, показаны все 3 страниц
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / ввести ограничения (логику)...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]