Re: Ссылочная целостность в Фоксе | |
---|---|
Петров Андрей Сообщений: 2506 Откуда: Химки (М.О.) Дата регистрации: 17.04.2002 |
2 Combat
Да знаю я что это не верный подход. Но по трудозатратам он в моем случае более правильный. 2 Igor Korolev Ну что тут скажешь все правтльно но вот мне когда я писал (не зная о существовании DBC точнее его еще и не было 2.6 версия) необходимо в виде диалога пользователю выдать что он должен удалить при попытке удаления данных верхнего уровня (те из справочника). А вот триггер насколько я помню этого возвращать не умеет По крайней мере стандартный. Насчет триплета. Хм. Всегда делал это не через триггера а через транзакцию те добавление данных произвожу программно а не через триггер. Да и обновление тоже.
Первый раз слышу термины. ------------------ PS Недочитал тему до конца... |
Re: Ссылочная целостность в Фоксе | |
---|---|
Combat Сообщений: 816 Откуда: Клайпеда Дата регистрации: 26.10.2000 |
Эти термины, как "термины", я тоже первый раз слышу, но раньше чувствовал, что что-то такое должно быть, и страдал от этого, ибо штатными никак не обходился. Когда научился правильно проектировать базы - стало хватать штатных Хотя, если есть проблемы с производительностью и база с целью решения этой проблемы денормализована, придётся использовать что-то похитрее... Единственное, что не нравится в штатных - некорректная обработка NULL на инсерт, если триггер контролирует более чем одно поле в исходной таблице. Надо будет в девятке проверить, не пофиксили ли чего доброго... ------------------ |
Re: Ссылочная целостность в Фоксе | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Hi, Андрей!
1) На нет и суда нет - странно ставить сейчас аргументом то, что в FPD не было DBC и вообще триггеров. 2) Никто не говорит что "оно не будет работать" - будет! Но это ненадёжно и в "общем случае" нужно сделать более современно и надёжно - т.е. как "рекомендация" это не катит. 3) Триггер НЕ ДОЛЖЕН никаких диалогов выводить! Ещё раз - триггер это свойство данных - потому обычно используют всё-же не каскадные триггера, а "ограничивающие" - Restrict - т.е. блокирующие то действие, которое приведёт к нарушению целостности! И конечно тогда задача "удалить связанные строки ДО удаления шапки" ложится на программу - триггер это так сказать последний барьер, предохраняющий базу от разрушения. 4) хез как те термины правильно называются. Суть думаю понятна - Nullify - это значит выставить поле внешнего ключа в Null при удалении той записи, куда ссылался этот ключ - т.е. не "блокируем" удаление из справочника, и не удаляём каскадно все записи на которые ссылалась удаляемая из "справочника", а просто разрываем связь. Получаем своеобразных "сирот" - как пример - удаление клиента - не обязательно удалять все связанные с ним бумажки - платёжки там, старые заказы, договора и т.п. - просто переводим их к одному "неизвестному/не важно какому" клиенту. "связанная вставка" - это когда связь у нас типа один к один-или-много, и мы ДОЛЖНЫ удостовериться, что при вставке в таблицу со стороны "один" обязательно вставится как минимум одна запись и во вторую таблицу. Вообще в реальном мире существует масса разных типов связи сущностей, и уложиться в то убогое множество что предлагает штатный построитель RI конечно нельзя - другой вопрос что в 80-90% случаев штатное RI таки устраивает. ------------------ WBR, Igor |
© 2000-2024 Fox Club  |