Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 сложное ограничение  [new]
jio+
Guest
Подскажите как организовать следующее ограничени:
Допустим есть марки авто и детали авто. Есть справочник совместимости деталей в зависимости от марок. Многие ко многим. Надо ограничить вот что: если какая-то деталь подходит к марке1 и к марке2, то иная деталь, подходящая к марке1 должна подходить только к марке1 и марке2, то есть также, как и первая. Поясню эту кашу на примере:

марка     деталь
*************
марка1  бампер1
марка2  бампер1
марка1  крепление бампера1
марка2  крепление бампера1
это штатный вариант, все в норме: бампер1 и крепление бампера1 имеют хотя бы одну общую
марку, и полный набор марок бампера1 и крепления бампера1 совпадают

а вот недопустимая ситуация
марка     деталь
*************
марка1  бампер1
марка2  бампер1
марка1  крепление бампера1
марка2  крепление бампера1
марка3  крепление бампера1

то есь крепление бампера1 подходит к маркам 1,2 и 3
в итоге марка1 по одному товару получает совместимость с маркой 2, а если смотерть по другому
товару, совместимость получается с марками 2 и 3, что в моем случае недопустимо.

также недопустима такая фигня
марка     деталь
*************
марка1  бампер1
марка2  бампер1
марка1  крепление бампера1
марка2  крепление бампера1
марка1  фара на бампер1

как разгрызть этот орешек в многопользовательской среде?
20 фев 08, 12:48    [5315380]     Ответить | Цитировать Сообщить модератору
 Re: сложное ограничение  [new]
Тифа
Guest
в момент вставки такое не сделать, на третей детали валится будет

а как вы себе сами представляете в какой момент времени производит проверку?
20 фев 08, 13:09    [5315570]     Ответить | Цитировать Сообщить модератору
 Re: сложное ограничение  [new]
wdelete
Member

Откуда:
Сообщений: 63
чесно говоря фиговая логика.
пример
марка     деталь
*************
марка1  бампер1
марка2  бампер1
марка1  крепление бампера1
марка2  крепление бампера1
вот уже внесены данные
затем одупляются что
бампер1 подходит к марка3 ну и соответсвено и крепление бампера1 подходит к марка3
как решить это :).
ну а ответ на вопрос писать в эту таблицу с помошью хранимки в которой делать селект который будет проверят условия
20 фев 08, 13:13    [5315605]     Ответить | Цитировать Сообщить модератору
 Re: сложное ограничение  [new]
jio+
Guest
я не против отложенных ограничений :-)
20 фев 08, 13:14    [5315617]     Ответить | Цитировать Сообщить модератору
 Re: сложное ограничение  [new]
Andrey.L
Member

Откуда: Харьков
Сообщений: 1546
Если кто-то выпустит крепление48 подходящее к марке1 и к марке2, а так же подходящее к бамперу1 и бамперу2, но бампер1 не подходит к марке2.
Как такое описать?
По-моему что-то в корне неверно.
20 фев 08, 13:14    [5315618]     Ответить | Цитировать Сообщить модератору
 Re: сложное ограничение  [new]
jio+
Guest
Andrey.L
Если кто-то выпустит крепление48 подходящее к марке1 и к марке2, а так же подходящее к бамперу1 и бамперу2, но бампер1 не подходит к марке2.
Как такое описать?
По-моему что-то в корне неверно.


такое не надо описывать, ибо это нарушение моих условий.
20 фев 08, 13:15    [5315628]     Ответить | Цитировать Сообщить модератору
 Re: сложное ограничение  [new]
jio+
Guest
как-то напрашивается таблички со структурой
marka, detal_list с уникальным индексом по марке...
в купе с
detal, marka_list с уникальным индексом по детали..
как только это раскурить при dml на таблице...
20 фев 08, 13:27    [5315741]     Ответить | Цитировать Сообщить модератору
 Re: сложное ограничение  [new]
RA\/EN
Member

Откуда:
Сообщений: 3658
jio+
я не против отложенных ограничений :-)

Это справочная информация.
Значит, модифицируется нечасто.
Значит, следав доступ с этому справочнику сериализованным, проблем даже в многопользовательской среде не получешь, если транзакции быстрые.
См. про dbms_lock.
А ВСЕ соответствия "А подходит к Б" можно держать в отдельной таблице (если ее не разорвет, конечно). Или если выделить набо "корневых" объектов, которые друг к другу явно не подходят (например, сами модели), то хранить все соответствия "модель-деталь", в т.ч. полученные через соответсвия деталей.
20 фев 08, 13:33    [5315803]     Ответить | Цитировать Сообщить модератору
 Re: сложное ограничение  [new]
Andrey.L
Member

Откуда: Харьков
Сообщений: 1546
Возможно подойдет сущность "Группа марок".
Детали цепляй не к марке, а к группе марок.
Каждая марка должна входить в одну группу (судя по твоим условиям).
И не нужны отложенные ограничения, процедуры ...
20 фев 08, 13:41    [5315887]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить