|
Foreign key VS triggers
|
|||
---|---|---|---|
#18+
Собственно subj. На RSDN.RU меня закидали помидорами, и сказали что я очень сильно не прав. Так ли это? Какие будут ваши мнения? Отлаживать код вдвойне сложнее, чем писать. Поэтому, если при написании программы вы используете весь свой интеллект, вы по определению недостаточно умны, чтобы ее отладить. (Brian W. Kernighan) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.02.2006, 22:49 |
|
Foreign key VS triggers
|
|||
---|---|---|---|
#18+
В чем неправ - непонятно, ибо вопрос не задан. FK работают вне контекста транзакций, триггера - в транзакциях. Из этого вытекают ограничения на использование триггеров по поддержке целостности. Но, бывает что использовать FK тоже невыгодно, например создаются очень плохие индексы - и тогда если посмотреть пристально на конкретный случай, то в некоторых случаях можно заменить FK на триггер. Но 100% гарантии они не дают. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.02.2006, 05:38 |
|
Foreign key VS triggers
|
|||
---|---|---|---|
#18+
to fraks & Сергей Фролов На днях же обсуждали. Скачайте IBAnalyst и прочитайте справку. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.02.2006, 08:23 |
|
Foreign key VS triggers
|
|||
---|---|---|---|
#18+
для тех, кто не может скачать IBAnalyst, и не может нажать F1, и не может ткнуть... и т.п. Цитирую: 7. Почему индексы названы "плохими"? Индексы, имеющие критическую селективность (ниже 0.01) IBAnalyst называет "плохими" по нескольким причинам: Селективность (избирательность) такого индекса ниже той, которая используется оптимизатором (константа 0.01). Теоретически оптимизатор не должен использовать такой индекс, тем не менее использует, если ничего другого нет. - Такой индекс приводит к очень медленной сборке мусора. Данная проблема решена только в InterBase 7.1/7.5, и будет решена в Firebird 2.0. - Такие индексы сильно замедляют процесс restore, и вообще сами по себе создаются долго (create/alter index active), по причине очень больших цепочек номеров записей для одного ключа индекса. - Если этот индекс используется в where для проверки на неизвестное значение (по которому много дубликатов ключа), то есть шанс что его использование приведет к сильному потреблению памяти на хранение большого количества ссылок на записи - Если такой индекс используется в order by, и дубликатов меньших значений больше (т.е. тех, которые располагаются в начале индекса), то будет много чтений страниц с диска, что ухудшит скорость выборки. IBAnalyst не может не сигнализировать о наличии таких индексов. Худшим случаем "плохого" индекса является индекс со большим количеством ключей и значением 1 в Uniques, то есть с всего одним единственным значением ключа (см. "Бесполезные индексы" на странице Общая информация IBAnalyst). 8. Что делать, если "плохой" индекс построен по FK? Действительно, из предыдущего пункта ясно, что от "плохих" индексов стоит избавиться. Однако, если такой индекс построен по Foreign Key, то удалить его можно только вместе с Foreign Key. А это приведет к отсутствию контроля целостности между двумя таблицами. Вы можете заменить FK контролем целостности в триггерах, но с определенными ограничениями. FK контролирует связи между таблицами посредством индекса, а индексы "видят" все значения ключей, независимо от состояния транзакций, их модифицирующих. Как результат, очень легко отслеживается ситуация с изменением столбца PK (первичного ключа) в справочной таблице, удалением записи из справочника и т.п. Триггерами отследить такие ситуации нельзя, т.к. они "видят" только те записи, которые разрешено видеть транзакции, их вызвавшей. Поэтому, при замене FK триггерным контролем целостности должны быть соблюдены условия: - записи из справочника никогда не удаляются, или удаляются в монопольном режиме (см. транзакции reserving в статье по транзакциям) - столбец первичного ключа справочника никогда не модифицируется (можно создать такой запрет триггером before update). При соблюдении этих условий FK можно удалить, и разумеется, строить индекс по этому же столбцу не нужно. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.02.2006, 13:54 |
|
Foreign key VS triggers
|
|||
---|---|---|---|
#18+
автор Поэтому, при замене FK триггерным контролем целостности должны быть соблюдены условия: - записи из справочника никогда не удаляются, или удаляются в монопольном режиме (см. транзакции reserving в статье по транзакциям) - столбец первичного ключа справочника никогда не модифицируется (можно создать такой запрет триггером before update). если исключить такую строку автор или удаляются в монопольном режиме то возникает вопрос, а зачем тогда вообще через триггер контролировать целостность? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.02.2006, 23:42 |
|
Foreign key VS triggers
|
|||
---|---|---|---|
#18+
Chernomor автор Поэтому, при замене FK триггерным контролем целостности должны быть соблюдены условия: - записи из справочника никогда не удаляются, или удаляются в монопольном режиме (см. транзакции reserving в статье по транзакциям) - столбец первичного ключа справочника никогда не модифицируется (можно создать такой запрет триггером before update). если исключить такую строку автор или удаляются в монопольном режиме то возникает вопрос, а зачем тогда вообще через триггер контролировать целостность? Ну, милай, ну, напряги чуток думалку-то самостоятельно. Кроме удалений и апдейтов ПК справочника случаются ещё иногда, панимаш, вставки в ссылающиеся таблицы и модификация в них ссылочных полей ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2006, 00:53 |
|
Foreign key VS triggers
|
|||
---|---|---|---|
#18+
Amris Mirddin Кроме удалений и апдейтов ПК справочника случаются ещё иногда, панимаш, вставки в ссылающиеся таблицы и модификация в них ссылочных полей ;) Если в таблице-справочнике запрещено удаление, или обновление первичного ключа... то хоть убей не могу понять, каким боком триггера в ссылающихся таблицах могут мне помочь. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2006, 22:56 |
|
Foreign key VS triggers
|
|||
---|---|---|---|
#18+
Ох, яду мне, яду... (С) А при вставке наличие в справочнике записи с таким ID Пушкин проверять будет? А при перемещении ссылки на другой объект - Лермонтов? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2006, 23:00 |
|
Foreign key VS triggers
|
|||
---|---|---|---|
#18+
Здравствуйте, Amris. >А при вставке наличие в справочнике записи > с таким ID Пушкин проверять будет? А при перемещении ссылки на > другой объект - Лермонтов? Мужики они конечно мощные :) но пусть уж лучше спят спокойно -- Dik76 Posted via ActualForum NNTP Server 1.3 ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2006, 23:07 |
|
Foreign key VS triggers
|
|||
---|---|---|---|
#18+
Весенне обострение темы что ли? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2006, 11:42 |
|
Foreign key VS triggers
|
|||
---|---|---|---|
#18+
Сергей ФроловСобственно subj. На RSDN.RU меня закидали помидорами, и сказали что я очень сильно не прав.Самое интересное - кто его там закидал помидорами... ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2006, 11:47 |
|
Foreign key VS triggers
|
|||
---|---|---|---|
#18+
Гаджимурадов Рустам Сергей ФроловСобственно subj. На RSDN.RU меня закидали помидорами, и сказали что я очень сильно не прав.Самое интересное - кто его там закидал помидорами... Самое интересное - как и чем он его закидал :) Не узрел я там не только разбивающихся об физию овощей, но даже их полёта, я Его просто не узнал, другой человек, мяхкий, обходительный, как в реале ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2006, 13:36 |
|
Foreign key VS triggers
|
|||
---|---|---|---|
#18+
Amris MirddinСамое интересное - как и чем он его закидал :) Не узрел я там не только разбивающихся об физию овощей, но даже их полёта+1 Абсолютно так... Но афтару виднее - может он "повышенной обидчивости"... :) Amris Mirddinя Его просто не узнал, другой человек, мяхкий, обходительный, как в реале +1 Сам подивился немножка... (хотя объяснение есть - ты там подпись в одном из постов не заметил ;) ) P.S. Того и гляди щас спровоцируем его... ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2006, 13:40 |
|
Foreign key VS triggers
|
|||
---|---|---|---|
#18+
Ну набросились, набросились :) Это так сказать образное выражение насчет помидор :) А вообще за нормальный ответ +1 kdv. Если я не ошибаюсь - он владелец ibase.ru Отлаживать код вдвойне сложнее, чем писать. Поэтому, если при написании программы вы используете весь свой интеллект, вы по определению недостаточно умны, чтобы ее отладить. (Brian W. Kernighan) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2006, 18:37 |
|
Foreign key VS triggers
|
|||
---|---|---|---|
#18+
Amris Mirddin ) А при вставке наличие в справочнике записи с таким ID Пушкин проверять будет? А при перемещении ссылки на другой объект - Лермонтов? Звыняйте что раньше не ответил, больно уж занят был. Итак речь о том, что в справочнике не удаляются записи, кроме того не изменяется id записи в справочники. Возможно я смотрю на все со своей колокольни, и я не прав, если так, то хотелось бы понять в чем. Итак стандартная ситуация. Справочник групп, их не более 10 штук, заданы жестко, без возможности удаления и изменения id. Таблица ссылающияся на справочник большая 100 000 записей, может и больше. На клиенте стандартно дерево слева, таблица с ссылками справа. При вставке в группу, берем id группы и делаем вставку. Каким образом меня спасает в данной ситуации триггер? Удалять нельзя, обновлять тоже? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2006, 20:17 |
|
Foreign key VS triggers
|
|||
---|---|---|---|
#18+
авторберем id группы и делаем вставку. Каким образом меня спасает в данной ситуации триггер? Удалять нельзя, обновлять тоже? вопрос почти риторический, если я его правильно понял. Клиент видит только то, что зашито в БД, и справочная таблица спокойно может быть заменена на набор констант в приложении. Чего я не понял, так это где именно должен "спасти" триггер. И вообще зачем он нужен в данной ситуации, для пользователя. Для девелопера он нужен, чтобы тот не сломал целостность в БД через IBExpert. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2006, 21:53 |
|
Foreign key VS triggers
|
|||
---|---|---|---|
#18+
Chernomor Amris Mirddin ) А при вставке наличие в справочнике записи с таким ID Пушкин проверять будет? А при перемещении ссылки на другой объект - Лермонтов? Звыняйте что раньше не ответил, больно уж занят был. Да не беспокойся ты так, я ж тоже не караулил здесь решения жизненно важного вопроса :) Chernomor Итак стандартная ситуация. Справочник групп, их не более 10 штук, заданы жестко, без возможности удаления и изменения id. Таблица ссылающияся на справочник большая 100 000 записей, может и больше. На клиенте стандартно дерево слева, таблица с ссылками справа. При вставке в группу, берем id группы и делаем вставку. Каким образом меня спасает в данной ситуации триггер? Удалять нельзя, обновлять тоже? А если на клиенте вдруг кто-то сделает наоборот - дерево справа, таблицу слева? Или вообще допустит полное святотатство - не станет сажать дерево вообще, а будет поднимать справочник в случае надобности во всплывающем окошке? Что будет, ох что будет... Знать бы кто придумал этим садоводством программерам со школьной скамьи мозги засирать - убил бы гада. Все первым делом содют на автомате в базе дерево, а потом начинают водить вокруг хороводы с прибамбасами - селектить всё исключительно рекурсивными процедурами и выполнять прочие сложные эротические ритуальные танцы в извращённых формах и позах. Когда на практике редко требуется в качестве справочников чего-то больше нормальной трёхуровневой иерархии системы 1:n со своей атрибутикой на каждом уровне, описывающей естественную иерархию сущностей. И простых джойнов. Нда, что-то я отвлёкся. Так вот, про Эксперта kdv тебе уже сказал. И это не единственный враг - есть ещё Консоль, искл, Хаммер, Админ, Марафон, Рабочая Скамейка... Ой, что-то меня опять понесло. Ещё нюанец - ты всегда пишешь программы без ошибок? И модифицируешь их в случае надобности тоже лёгким мазком кисти? Снимаю шляпу. Триггер - одна из последних линий самообороны базы от тупости программера-админа, проявлящейся в природе в любой непредсказуемой форме. Лично у меня её хватает. Особенно с бодуна. А поскольку бодун - нормальное утреннее состояние здрового самца гомосапиенса, то на создание триггеров в дневное время я не скуплюсь. И тебе не советую :) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2006, 22:39 |
|
Foreign key VS triggers
|
|||
---|---|---|---|
#18+
сдаюсь... :), если для того чтобы от админов спастись, или от себя после веселого вечера, то да, усе понятно. одно но... Amris Mirddin А если на клиенте вдруг кто-то сделает наоборот - дерево справа, таблицу слева? Или вообще допустит полное святотатство - не станет сажать дерево вообще, а будет поднимать справочник в случае надобности во всплывающем окошке? какая разница где справочник, ведь его содержимое выбирается, клиент его убить как бы не может :) А вообще спасибо... ... |
|||
:
Нравится:
Не нравится:
|
|||
04.03.2006, 01:45 |
|
Foreign key VS triggers
|
|||
---|---|---|---|
#18+
kdv Поэтому, при замене FK триггерным контролем целостности должны быть соблюдены условия: - записи из справочника никогда не удаляются, или удаляются в монопольном режиме (см. транзакции reserving в статье по транзакциям) - столбец первичного ключа справочника никогда не модифицируется (можно создать такой запрет триггером before update). Странное дело. Чувствую, что спрашиваю глупость, а не спросить не могу. Так вот. А если речь, например, о многоуровневых документах, и если вероятность одновременной работы нескольких транзакций с одним и тем же мастером и его деталями не очень велика, но все же существует (например, договор и его приложения - как правило редко два оператора будут одновременно править один и тот же договор), а перед вставкой детали или изменением ссылки в детали на мастера блокировать требуемую мастер-запись с одновременной проверкой ее существования, плюс все изменения БД в snapshot? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2006, 19:32 |
|
Foreign key VS triggers
|
|||
---|---|---|---|
#18+
Дяденька, дяденька, я знаю что нельзя, я знаю как можно, но если вота тута дырочку заткнуть, а тут прищепочкой прищемить, то может обойдётся 8 раз из 10, ну разреши, а, ну разреши... ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2006, 20:00 |
|
Foreign key VS triggers
|
|||
---|---|---|---|
#18+
Amris MirddinДяденька, дяденька, я знаю что нельзя, я знаю как можно, но если вота тута дырочку заткнуть, а тут прищепочкой прищемить, то может обойдётся 8 раз из 10, ну разреши, а, ну разреши... Значит, 2 раза из 10 может выйти прокол. "Но Холмс, черт возьми, как?!" Ведь блокировка позволит "увидеть" межтранзакционный конфликт. Или речь идет о том, что юзер время от времени будет озадачиваться сообщением lock conflict ? Тогда можно делать несколько попыток, прежде чем огорчить пользователя. Речь не идет об универсальных способах - их нет, это понятно. Речь идет о проктологии, когда очень хочется, и обстоятельства позволяют (или в приведенном примере все равно нет гарантии)? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2006, 20:17 |
|
Foreign key VS triggers
|
|||
---|---|---|---|
#18+
Sextonесли вероятность одновременной работы нескольких транзакций с одним и тем же мастером и его деталями не очень велика, но все же существует (например, договор и его приложения - как правило редко два оператора будут одновременно править один и тот же договор)Неправильно. Либо вер. должна быть равна нулю, либо предохраняться. А лучше все равно предохраняться (от шустрых Гонзалесов etc). Sextonплюс все изменения БД в snapshot?Это как раз необязательно. Как говорится depends on. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2006, 20:20 |
|
Foreign key VS triggers
|
|||
---|---|---|---|
#18+
Гаджимурадов Рустам Sextonесли вероятность одновременной работы нескольких транзакций с одним и тем же мастером и его деталями не очень велика, но все же существует (например, договор и его приложения - как правило редко два оператора будут одновременно править один и тот же договор)Неправильно. Либо вер. должна быть равна нулю, либо предохраняться. А лучше все равно предохраняться (от шустрых Гонзалесов etc). А если делать несколько попыток с клиента (можно в сервере приложений, если он есть), прежде чем выдать exception наверх? Меня этот вопрос больше теоретически интересует, правильно ли я понимаю механизм: существует ли в приведенном способе (на триггерах с блокировкой мастера) вероятность нарушения ссылочной целостности? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2006, 20:28 |
|
Foreign key VS triggers
|
|||
---|---|---|---|
#18+
НУ ЁЁМААЁЁ!!! (С) Один раз, в каком-то экстренном случае, дрожащими рууками, под вопли - 10 вагонов на простое - лезешь туда не приложением, а Экспертом - и пожалте бриться. Или забываешь в очередном приложении ткнуться в блокировку. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2006, 20:37 |
|
Foreign key VS triggers
|
|||
---|---|---|---|
#18+
Amris MirddinНУ ЁЁМААЁЁ!!! (С) Один раз, в каком-то экстренном случае, дрожащими рууками, под вопли - 10 вагонов на простое - лезешь туда не приложением, а Экспертом - и пожалте бриться. Или забываешь в очередном приложении ткнуться в блокировку. Угу, намек понял. Но блокировку я подразумевал делать в триггерах детали, а не с приложения-клиента (как бы не запутаться, кто имеет в виду приложение к договору, а кто - приложение-клиент). Если в этом способе такое допустимо, почему недопустимо в вышеприведенном ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2006, 21:05 |
|
Foreign key VS triggers
|
|||
---|---|---|---|
#18+
Ну що ты докопался до общины, аки пьяный до радио? В природе можно сделать всё что сделать можно. Просчитавши все влияющие факторы и возможные последствия в конкретном частном случае. Тебе что, обязательно нужно чтоб папа разрешил? Чтоб в случае чего было кого ругать? Не буду я вникать в каждый частный случай, у меня своих выше крыши. С принципами знаком, опасности знаешь - вперёд на мины. Самостоятельно. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2006, 21:11 |
|
Foreign key VS triggers
|
|||
---|---|---|---|
#18+
SextonУгу, намек понял.Никуя ты не понял!... Амрис привел тебе пример (один из) шустрого Гонзалеса. Теперь обдумай когда, что и с чем будет. Если не получается в уме - рисуй на бумажке. SextonНо блокировку я подразумевал делать в триггерах детали, а не с приложения-клиента... Если в этом способе такое допустимо, почему недопустимо в вышеприведенном Начинаешь доставать... Кроме того, удивляешь упорством достойным лучшего применения. Перечитай топик, со второго раза думаю должно дойти. Топики Дилайна тоже перечитай - вижу что не осмыслил, т.к. там это тоже обсуждалось вроде. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2006, 21:47 |
|
Foreign key VS triggers
|
|||
---|---|---|---|
#18+
Ой, пост Амриса не заметил. Заметил бы, не стал бы наезжать. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2006, 21:48 |
|
Foreign key VS triggers
|
|||
---|---|---|---|
#18+
Спокойно, любители загадок. Видимо, на этом короткая дискуссия по вопросу замены FK на триггеры с блокоровкой мастер-записи и закончится, поэтому резюмирую свое мнение. Кто захочет поправить, дополнить, послать - пожалуйста. Следующие триггеры можно использовать как замену FK, не запрещая удаление из мастера и не используя монопольный режим, в случае, когда одновременное редактирование одного и того же мастера (и его деталей) происходит не часто (влияет лишь на вероятность возникновения lock-конфликта): Код: 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.
Посты Di_LIne просмотрел бегло, вроде бы ничего подходящего по теме не заметил. Но и других топиков хватает, но обсуждения блокировки мастера для замены FK не обнаружил, вполне возможно, плохо смотрел. Меня это интересует только с теоретической стороны. Для себя пока практической нужды не вижу в этом. Не все бойцы - турнирные, Amris, или не всегда. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2006, 04:18 |
|
Foreign key VS triggers
|
|||
---|---|---|---|
#18+
SextonСпокойно, любители загадок.Сенкс на добром слове. Желание помочь, если где запутаешься в следующий раз, поубавилось. Sextonв случае, когда одновременное редактирование одного и того же мастера (и его деталей) происходит не частоВсе, дальше можно не читать, потому как неинтересно. SextonМетод, безусловно, проктологический.Впрочем, сам же и сознался. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2006, 04:47 |
|
Foreign key VS triggers
|
|||
---|---|---|---|
#18+
Гаджимурадов Рустам SextonСпокойно, любители загадок.Сенкс на добром слове. Желание помочь, если где запутаешься в следующий раз, поубавилось. Рустам , а почему это выражение воспринято с негативным смыслом? Как уже тут было замечено, в других форумах "серьезный технический тон" (со второй частью высказывания по поводу "жлобства" совсем не согласен). А в этом форуме редко отвечают напрямую, все больше загадками (впрочем, вопросы задают еще большими загадками, и я не исключение). Но именно это заставляет лишний раз подумать, что несомненно приносит только пользу. Так что в "любители загадок" в данном случае я вложил положительный смысл. Сама идеология "общественного" продукта Firebird распологает к не стандартному мышлению и общению. Гаджимурадов Рустам Sextonв случае, когда одновременное редактирование одного и того же мастера (и его деталей) происходит не частоВсе, дальше можно не читать, потому как неинтересно. Но вероятность lock-конфликтов в базе - норма жизни (если не wait, конечно). Конечно, если у одного мастера тысячи деталей, а сотни машинисток хотят долбить детали именно этого мастера, то его блокировка может стать серьезной проблемой. Но, по крайней мере, блокировка мастера - более мягкий способ в смысле разграничения доступа, чем монопольный режим работы. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2006, 05:23 |
|
Foreign key VS triggers
|
|||
---|---|---|---|
#18+
Sexton Рустам , а почему это выражение воспринято с негативным смыслом?Хм... А я должен был ему обрадоваться? Ладно, здесь не архив учета грехов и обид, посему забудем. SextonКак уже тут было замеченоМлин, нашел аворитета. Кроме того, там же ему и ответили. SextonА в этом форуме редко отвечают напрямую, все больше загадками (впрочем, вопросы задают еще большими загадками, и я не исключение). Но именно это заставляет лишний раз подумать, что несомненно приносит только пользу.Неправда, что все больше загадками. На большую часть (может даже и на все) вопросов новичков есть ответы (прямо или косвенно) в архивах форума и на ibase.ru. Впрочем насчет пользы загадок ты сам часть правды уже выдал - думать (хотя бы пытаться) иногда полезно. SextonНо вероятность lock-конфликтов в базе - норма жизни (если не wait, конечно).1. При wait тоже легко возникают конфликты. Я не знаю откуда Вы вообще себе в голову вбили, что раз "ждем", значит обязательно дождемся "птицы счастья завтрашнего дня" в виде отсутствия конфликтов (куча нюансов да и вообще этот метод очень-очень чреват, потому его каждому не посоветуешь). 2. lock-конфликты в чистом виде не единственный важный момент темы. SextonНо, по крайней мере, блокировка мастера - более мягкий способ в смысле разграничения доступа, чем монопольный режим работы.Пустопереливание, виток №2. Что ты подразумеваешь под "монопольный режим работы"? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2006, 05:37 |
|
Foreign key VS triggers
|
|||
---|---|---|---|
#18+
Гаджимурадов Рустам SextonНо вероятность lock-конфликтов в базе - норма жизни (если не wait, конечно).1. При wait тоже легко возникают конфликты. Я не знаю откуда Вы вообще себе в голову вбили, что раз "ждем", значит обязательно дождемся "птицы счастья завтрашнего дня" в виде отсутствия конфликтов (куча нюансов да и вообще этот метод очень-очень чреват, потому его каждому не посоветуешь). Я wait не использую, но само название располагает не думать, что и тут могут быть конфликты. Вообщем, об этом мне надо еще почитать, хотя бы для общего развития. Гаджимурадов Рустам Sexton [quot Sexton]Но, по крайней мере, блокировка мастера - более мягкий способ в смысле разграничения доступа, чем монопольный режим работы.Пустопереливание, виток №2. Что ты подразумеваешь под "монопольный режим работы"? kdv Поэтому, при замене FK триггерным контролем целостности должны быть соблюдены условия: - записи из справочника никогда не удаляются, или удаляются в монопольном режиме (см. транзакции reserving в статье по транзакциям) - столбец первичного ключа справочника никогда не модифицируется (можно создать такой запрет триггером before update). Вообщем-то задачка замены FK на триггеры возникает не часто, так что может и не стоит, действительно, тратить на обсуждение время. А то я и сам увлекаюсь "шахматными этюдами" и других отвлекаю. Общие понятия тут понятны - в любом случае придется приделывать костыли, а обсасывать тонкости - какого цвета костыли и из чего их делать - имеет смысл, если уж приспичит это практиковать. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2006, 05:52 |
|
Foreign key VS triggers
|
|||
---|---|---|---|
#18+
SextonНо, по крайней мере, блокировка мастера - более мягкий способ в смысле разграничения доступа, чем монопольный режим работы.Да. SextonВообщем-то задачка замены FK на триггеры возникает не часто, так что может и не стоит, действительно, тратить на обсуждение время. А то я и сам увлекаюсь "шахматными этюдами" и других отвлекаю.Засим закончим, т.к. мне это тоже малоинтересно. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2006, 06:13 |
|
Foreign key VS triggers
|
|||
---|---|---|---|
#18+
а ни какого мастера по замене FK на триггеры нет в IBExpert? Чет влом руками всё писать. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2015, 12:29 |
|
Foreign key VS triggers
|
|||
---|---|---|---|
#18+
Vad72, а ты точно уверен, что оно того стоит? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2015, 12:33 |
|
Foreign key VS triggers
|
|||
---|---|---|---|
#18+
Симонов ДенисVad72, а ты точно уверен, что оно того стоит? я на 90% уверен, что не стоит, но хотел узнать, может "умные" люди уже всё продумали. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2015, 13:16 |
|
Foreign key VS triggers
|
|||
---|---|---|---|
#18+
Vad72, я в том смысле откуда уверенность что индексы тебе мешают и надо FK заменять? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2015, 13:23 |
|
Foreign key VS triggers
|
|||
---|---|---|---|
#18+
Симонов ДенисVad72, я в том смысле откуда уверенность что индексы тебе мешают и надо FK заменять? попались на глаза "статьи" типа http://koder.kz/articles/firebird-chto-ne-nado-delat Не надо увлекаться ссылочной целостностью больше чем это требуется Не рекомендуется делать FK от больших таблиц на короткие справочники, в которых никогда не выполняются update и delete. Рекомендуется замещать такие FK контролем на триггерах и явным запретом модификации справочника в его триггерах. Кроме того, излишнее увлечение каскадным удалением, в совокупности с удалением через триггеры, может сильно запутать логику или привести к непредсказуемым удалениям или ошибкам нарушения целостности. подумал, может и мне что-то там замутить вместо FK. Тут что, экономия в объеме базы данных получим на выходе? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2015, 13:54 |
|
|
start [/forum/topic.php?all=1&fid=40&tid=1562523]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
35ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
59ms |
get tp. blocked users: |
1ms |
others: | 12ms |
total: | 143ms |
0 / 0 |