Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Ссылочная целостность
|
|||
|---|---|---|---|
|
#18+
В дискуссиях этого топика часто проскакивает тезис, что в "правильной" БД должны обязательно использоваться констрэйнты. Все БД, с которыми мне приходилось видеть не использовали констрэйнты, но работа с объектами БД была допустима только через ХП. Собственно я в своих БД я использую этот принцип - работа только через ХП, констрэйнты не используются (ну разве на этапе разработки БД, потом отключаю). Универсального правила естественно нет, особенно если едет речь о нагруженной OLTP системе. Хочется услышать ваше мнение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2004, 11:37 |
|
||
|
Ссылочная целостность
|
|||
|---|---|---|---|
|
#18+
Ggg_oldособенно если едет речь о нагруженной OLTP системе. Хочется услышать ваше мнение. Даже реализация ссылочной целостности на триггерах подчас быстрее будет в OLTP. Чего уж говорить про SP. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2004, 11:52 |
|
||
|
Ссылочная целостность
|
|||
|---|---|---|---|
|
#18+
Надежно и правилно будет использование ограничений. Это последняя линия обороны. Во всех программных проектах, особенно больших, имеется допущение, что в коде существует ошибка. Использование ограничений в СУБД даст возможнось увеличить надежность ("правильность"). А если это касается ссылочной целостности (и не только), то она логическим образом вытекает (чаще всего) прямо из ER - модели ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2004, 12:00 |
|
||
|
Ссылочная целостность
|
|||
|---|---|---|---|
|
#18+
Ggg_oldХочется услышать ваше мнение. Мое мнение, основанное правда, лишь на теоретических знаниях по SQL-Server (сам я все еще работаю в ДОСе :-( ) и хранилищам данных, сводится к тому, что в правильно разработанной OLTP-системе (все таблицы находятся минимум в 3НФ или НФБК) не должно быть "ручных" (или через хранимые процедуры) проверок ссылочной целостности. Ggg_oldУниверсального правила естественно нет, особенно если едет речь о нагруженной OLTP системе. А по-моему, есть. Для любой OLTP-системы (хоть нагруженной, хоть нет). И это - автоматический контроль ссылочной целостности при помощи СУБД. Для чего строить индексы, первичные и внешние ключи, связи и т.д., если затем все заново самому проверять! Не дело OLTP-систем проводить аналитическую работу. Они нужны лишь как накопители оперативных данных о заказах, продажах, покупках и т.д. за небольшой промежуток времени (день, неделя, месяц, максимум - год). Данные в них - динамически меняются. Порой по нескольку раз за день. Отследить же все возможные "подводные камни" в силах только СУБД с ее автоматическим контролем целостности. А вот в OLAP-системах и хранилищах данных, где хранятся данные за несколько лет или десяток лет, и данные эти изменяются (дописываются) в лучшем случае раз в день (а то и значительно реже), на самом деле лучше отказаться от автоматического контроля целостности. По заявлениям Кодда (являющегося также родоначальником OLAP) объем данных OLAP-системы из-за различных видов группировок и суммирования в 2,5 - 100 раз больше, чем в OLTP-системе... Но там несколько иная ситуация - частичная денормализация таблиц (приводящая к появлению дублирующихся записей) ради ускорения (и упрощения) SQL-запросов, различные заморочки с представлением данных из OLTP-систем в виде OLAP-кубов и т.д. А это уже совсем другая история... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2004, 12:25 |
|
||
|
Ссылочная целостность
|
|||
|---|---|---|---|
|
#18+
Ggg_old: Использование констрэйнтов это хорошо и правильно. Я говорю о компромисе, который нужен для обеспечения скорости и уменьшения потребления ресурсов. Отсутствие прямого доступа в БД и работа через ХП это позволяют достичь, т.к. частенько в ХП делать проверки приходится все равно. ТОлько в ХП я могу выбирать что делать, а что нет, гибко отследить ошибку, принять решение о ее устранении и.т.д. Хотя, если БД разрабатывается не очень добросовестно, или очень много людей имеют доступ девелопера,не имея нужной квалификации, то ХП - это последний барьер. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2004, 13:00 |
|
||
|
Ссылочная целостность
|
|||
|---|---|---|---|
|
#18+
опечатка :( читать надо "...то констрэйнты - это последний барьер..." ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2004, 13:02 |
|
||
|
Ссылочная целостность
|
|||
|---|---|---|---|
|
#18+
Было бы интересно узнать, как с помощью программного кода реализовать проверку уникальности и корректности ссылки. Особенно интересно как это сделать в Oracle ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2004, 15:27 |
|
||
|
Ссылочная целостность
|
|||
|---|---|---|---|
|
#18+
/topic/103173 вот здесь в частности про это копья ломали. Я себе взял за правило обеспечивать как ссылочную целостность, так и ограничения на значения все-таки средствами СУБД а не кодом триггеров и ХП, в котором 1. Могут быть ошибки 2. Может быть не оптимизирован. 3. Не столь явно диктуется бизнес правилами. 4. Может даже быть плохо переносим. 5. Не ясен для понимания людям из поддержки. Насчет скорости я тоже сильносомневаюсь, что быстрее, по крайней мере на WEB нашел две рекомендации реализовать целостность декларативно ссылками и ни одной обратной рекомендации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2004, 12:05 |
|
||
|
Ссылочная целостность
|
|||
|---|---|---|---|
|
#18+
а нафига тогда БД если не использовать то что она предоставляет, зачем программировать то что уже реализовано в механизме БД. потом при создании констраинтов создаются и соответствующие индексы. Просто часто встречаются программисты не доверяющие никому, они считают что правильно работает только то что они сами написали. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2004, 10:13 |
|
||
|
Ссылочная целостность
|
|||
|---|---|---|---|
|
#18+
Сам код проверки "правильности" данных может быть основан на обработке исключений, возникающих при существовании ограничений целостности. Для Oracle: Код: 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. Соответственно, если в дальнейшем ограничения целостности будут убраны, то код будет работать несколько по-иному. Даже если административно запретить именно такой способ написания кода, то может сложиться ситуация, когда впоследствии будет разрабатываться новый код программистами, которым это ограничение по каким-то причинам было неизвестно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2004, 12:39 |
|
||
|
Ссылочная целостность
|
|||
|---|---|---|---|
|
#18+
bokarevпотом при создании констраинтов создаются и соответствующие индексы Что это за бред?! Где это реализовано для Constraint не Primary key? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2004, 16:58 |
|
||
|
Ссылочная целостность
|
|||
|---|---|---|---|
|
#18+
Например - UNIQUE ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2004, 18:03 |
|
||
|
Ссылочная целостность
|
|||
|---|---|---|---|
|
#18+
Ограничение UNIQUE тоже создает индех. По крайней мере в MS SQL... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2004, 01:45 |
|
||
|
Ссылочная целостность
|
|||
|---|---|---|---|
|
#18+
Что это за бред?! Где это реализовано для Constraint не Primary key?[/quot] RBO в Oracle работает используя FK и PK и соответствующие индексы, и я так и не понял что вы называете бредом ? обоснуйте пожалуйста. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2004, 10:01 |
|
||
|
Ссылочная целостность
|
|||
|---|---|---|---|
|
#18+
Констрейнты - это святое в теории БД. Подумайте о тех, кто придет после Вас и будет писать Приложения к Вашей БД. Я им не завидую. А автоматическое (то бишь при создании констрейнта) создание индексов реализовано, например, в Interbase, Paradox etc. wbr, k ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2004, 11:04 |
|
||
|
Ссылочная целостность
|
|||
|---|---|---|---|
|
#18+
Подумайте о тех, кто придет после Вас и будет писать Приложения к Вашей БД. Я им не завидую. Есть мнение "А нафига о ламаках думать - не разберутся в нашем крутом коде - их проблемы, у нас-то все работало, когда сдавали." ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2004, 11:37 |
|
||
|
Ссылочная целостность
|
|||
|---|---|---|---|
|
#18+
Нет, ну если "после нас хоть потоп", тогда ты верной дорогой идешь :) Ggg_oldВ дискуссиях этого топика часто проскакивает тезис, что в "правильной" БД должны обязательно использоваться констрэйнты. Все БД, с которыми мне приходилось видеть не использовали констрэйнты, но работа с объектами БД была допустима только через ХП. Собственно я в своих БД я использую этот принцип - работа только через ХП, констрэйнты не используются (ну разве на этапе разработки БД, потом отключаю). Универсального правила естественно нет, особенно если едет речь о нагруженной OLTP системе. Хочется услышать ваше мнение. Сколько таблиц было в тех БД, которые тебе приходилось видеть? Сколько таблиц в твоих в БД? Если пара-тройка, тогда твой вопрос может, и имеет смысл. А, вообще, есть бизнес-правила (в частности, констрэйнты) - это как бы врожденное :) А есть прикладной код на сервере/клиенте, который заведует функциональностью: сегодня такой, завтра сякой. Отними сейчас твой код, и вместо БД получится просто набор таблиц - Куча Поэтому имхо лучше, все-таки, отделять мух от котлет. А какие доводы против констрэйнтов? Ggg_oldно работа с объектами БД была допустима только через ХП. Собственно я в своих БД я использую этот принцип - работа только через ХП, И что хорошего в этом ограничении? wbr, k ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2004, 12:22 |
|
||
|
Ссылочная целостность
|
|||
|---|---|---|---|
|
#18+
bokarevиспользуя FK и PK и соответствующие индексы, и я так и не понял что вы называете бредом ? В общем случае это не так. Только для PK гарантировано должен создаваться индекс, все остальное нивелирует разницу между UNIQUE INDEX и UNIQUE CONSTRAINT и является ошибкой разработчиков многих серверов БД (точнее, большинства, потому что так легче). Вот, например, скрипт для MSSQL: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. последний запрос возвращает PK_xxx и UK_xxx. То есть, для FK индекс НЕ СОЗДАЛСЯ, что правильно, ибо нафиг он не нужен по умолчанию (если в Oracle это не так - мне искренне жаль). Но зачем создается индекс UK_xxx - не понятно, в общем случае в нем может не быть необходимости (опять же, проще всего вообще внутри сервера не разделять UK и UI, что в большинстве серверов имеет место, за исключением статистики по UI). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2004, 12:54 |
|
||
|
Ссылочная целостность
|
|||
|---|---|---|---|
|
#18+
c FK нет индексов - согласен. я сейчас как раз сижу на базе в которой нет ссылочной целостности, и скажу это очень не весело. Это как раз тот случай когда многа кода, большая база (>1000 таблиц) и приложению уже больше 15 лет. сейчас в эту базу ввести ссылочную целостность очень сложно(может вообще невозможно), а втыки с дублирующимсяи и висящими записями встречаются постоянно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2004, 13:24 |
|
||
|
Ссылочная целостность
|
|||
|---|---|---|---|
|
#18+
2kassandra: БД - опердень банка. Таблиц - сотни, процедур - аналогично. Есть основные таблицы (например таблица платежей и остатков), есть куча справочников (например коды банков, коды операций, исполнителей и.т.п). В таблице платежей - за все время записей около 20 млн. Констрэйнты не используются. При операции ввода или проведения нового платежа все проверки по любому делаются только в соответствующей ХП. Как бы работала система по скорости, если бы на таблицу платежей еще бы был констрэйнт практически на все ее поля я не знаю - но предполагаю, что-бы тормоз был конретный, хотя я не имел опыта работы с большими БД с интенсивной нагрузкой аналогичной нашей. БД разрабатывается выделенными разработчиками, естественно уровень отвественности и исполнения очень высокий. Имея в качестве примера "большую" БД, свои мелкие БД (действительно пара-тройка таблиц и десяток-другой процедур)я делаю по такому-же принципу. Единственно, что при процедуроориентированной работе БД, я стараюсь делить ХП на несколько как-бы уровней (интерфейсные ХП, - которые вызываются пользователями и ХП уровня "ядра" - которых гораздо меньше и только через них ведется манипулирование свойствами объектов БД. В целом - принцип работающий. Но я еще раз повторяюсь - я за констрэйнты, но между теорией и практикой всегда есть разрыв. Хочется услышать аргументы за частичный или полный отказ от констрэйнтов в БД и когда это оправдано. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2004, 13:46 |
|
||
|
Ссылочная целостность
|
|||
|---|---|---|---|
|
#18+
Сергей ВаскецовТолько для PK гарантировано должен создаваться индекс Это где-то в теории РБД протоколируется ? Ссылку, если можно... Насколько я понимаю, ограничения относятся к теории, а их реализация к практике. Ни в одной книге по теории БД я не встречал такого сильного утверждения, теория вообще не знает ничего об индексах. Создание уникальных индексов для PRIMARY и UNIQUE, как Вы правильно заметили, выполняется именно для простоты, так как иначе для поддержки соответствующих ограничений пришлось бы сканировать всю таблицу. Ограничение UNIQUE является потенциальным или альтернативным ключом и в некотором смысле аналогичным PRIMARY. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2004, 13:53 |
|
||
|
Ссылочная целостность
|
|||
|---|---|---|---|
|
#18+
В ORACLE для UK индекс создается, для FK нет. Если бы не создавался, как проверить уникальность? Для проверки корректности FK индекс не нужен, НО попытка удалить запись в главной таблице приводит к неприятносттям если в подчиненной нет подходящего индекса ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2004, 13:57 |
|
||
|
Ссылочная целостность
|
|||
|---|---|---|---|
|
#18+
ChAНи в одной книге по теории БД я не встречал такого сильного утверждения, теория вообще не знает ничего об индексах Верно, на самом деле я немного утрирую, только для CLUSTERED PK он обязан создаваться (по смыслу CLUSTERED), для NONCLUSTERED тоже не обязательно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2004, 14:18 |
|
||
|
Ссылочная целостность
|
|||
|---|---|---|---|
|
#18+
Сергей Васкецов только для CLUSTERED PK он обязан создаваться В теории РБД мне также не встречалось понятие CLUSTERED, это опять же относится к реализации. P.S. Истины для... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2004, 14:32 |
|
||
|
Ссылочная целостность
|
|||
|---|---|---|---|
|
#18+
ChAВ теории РБД мне также не встречалось понятие CLUSTERED, это опять же относится к реализации Никто и не спорит. А при чем тут голая теория-то вообще? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2004, 14:45 |
|
||
|
Ссылочная целостность
|
|||
|---|---|---|---|
|
#18+
Ggg_old2kassandra: БД - опердень банка. Таблиц - сотни, процедур - аналогично. Есть основные таблицы (например таблица платежей и остатков), есть куча справочников (например коды банков, коды операций, исполнителей и.т.п). В таблице платежей - за все время записей около 20 млн. Констрэйнты не используются. При операции ввода или проведения нового платежа все проверки по любому делаются только в соответствующей ХП. Как бы работала система по скорости, если бы на таблицу платежей еще бы был констрэйнт практически на все ее поля я не знаю - но предполагаю, что-бы тормоз был конретный, хотя я не имел опыта работы с большими БД с интенсивной нагрузкой аналогичной нашей. И не узнаешь, пока не попробуешь :) Имхо проблемы быстродействия работы БД нужно решать мощностью используемых ресурсов, а не отказом от механизма целостности и непротиворечивости данных, тем более в банковских системах. Ну и, разумеется, не забывать об оптимизации запросов. Кстати, на чем все это реализовано (СУБД? Hard?), если не секрет? Конечно, случаи отказа от констрэйнтов бывают, но чтобы в БД из нескольких сотен таблиц не было ни одного к-та..... Но хоть индексы то у вас есть?:) wbr, k ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2004, 14:57 |
|
||
|
Ссылочная целостность
|
|||
|---|---|---|---|
|
#18+
Реализовано на Sybase ASE 12.5 on WinNT. Хард - 4xCPU Xeon (сколько гигагерцев точно не помню)+Raid10+4Gb RAM. Я думаю можно поставить вопросы так: 1. В каких случаях на практике отказ от констрэйнтов допустим? Можно ли сказть, что ХП ориентированная БД с жестким котролем за изменениями - это допустимый случай? 2. Как использование констрэйнтов влияет на производительность? Можно ли ее как-то оценить? Если в форуме есть разработчики или эксплуататоры биллинговых систем в телекомах, то интересно узнать - использутся в их БД констрэйнты на нагруженную основную таблицу (наверное это таблица звонков)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2004, 15:45 |
|
||
|
Ссылочная целостность
|
|||
|---|---|---|---|
|
#18+
Скорее всего это продукт фирмы Диасофт. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2004, 15:48 |
|
||
|
Ссылочная целостность
|
|||
|---|---|---|---|
|
#18+
автор Как бы работала система по скорости, если бы на таблицу платежей еще бы был констрэйнт практически на все ее поля я не знаю - но предполагаю, что-бы тормоз был конретный Многие из нас ( и я в том числе) страдают тем, что думают, но не проверяют это экспериментом. Тормозов не будет. Посмотри другие банковские системы. Просто летает все. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2004, 15:51 |
|
||
|
Ссылочная целостность
|
|||
|---|---|---|---|
|
#18+
На самом деле они там отказались от констрейнов на сервере не по вопросам производительности. У них были другие причины. 1) Для WF Отказаличь потому, что она многоплатформенная т.е может запускаться на Oracle,MS SQL, битрив 2) В 5 NT отказались потому что без констрейнов на базе проще писать ПАТЧИ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2004, 15:58 |
|
||
|
Ссылочная целостность
|
|||
|---|---|---|---|
|
#18+
Ggg_old1. В каких случаях на практике отказ от констрэйнтов допустим? Можно ли сказть, что ХП ориентированная БД с жестким котролем за изменениями - это допустимый случай? Да. Но не только, в случае пакетных изменений/репликации если выбирать между references и реализацией на триггерах, выбирают обычно первое ввиду большей гибкости... Ggg_old2. Как использование констрэйнтов влияет на производительность? Можно ли ее как-то оценить? ... и скорости. Оценивать сей факт всегда надо по месту, на конкретных данных/запросах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2004, 16:00 |
|
||
|
Ссылочная целостность
|
|||
|---|---|---|---|
|
#18+
Сергей ВаскецовА при чем тут голая теория-то вообще? Сергей ВаскецовВерно, на самом деле я немного утрирую, только для CLUSTERED PK он обязан создаваться (по смыслу CLUSTERED), для NONCLUSTERED тоже не обязательно. Тогда утверждение должно быть в контексте конкретной СУБД, а не вообще. Пример: в MS SQL 2K ограничение PRIMARY KEY автоматически создает уникальный индекс по соответствующим полям с таким же именем, если таковой отсутствует, либо использует ранее созданный, если таковой существует. CLUSTERED это индекс или нет, роли никакой не играет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2004, 16:12 |
|
||
|
Ссылочная целостность
|
|||
|---|---|---|---|
|
#18+
Сергей Васкецовмежду references и реализацией на триггерах, выбирают обычно первое LOL. Естественно второе, описался. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2004, 16:22 |
|
||
|
Ссылочная целостность
|
|||
|---|---|---|---|
|
#18+
Вообще на RI можно смотреть как на уже написанные тригеры для наиболее стандартных ситуаций - таким образом выбор между ними лежит совершенно в другой плоскости ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2004, 16:29 |
|
||
|
Ссылочная целостность
|
|||
|---|---|---|---|
|
#18+
Особенно кайфово реализовывать ссылочную целостность на триггерах в MSSQL и SybaseASE, в которых отсутствуют триггеры BEFORE. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2004, 16:36 |
|
||
|
Ссылочная целостность
|
|||
|---|---|---|---|
|
#18+
gardenman А INSTEAD ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2004, 16:53 |
|
||
|
Ссылочная целостность
|
|||
|---|---|---|---|
|
#18+
А В ASE даже и INSTED нету.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2004, 17:23 |
|
||
|
Ссылочная целостность
|
|||
|---|---|---|---|
|
#18+
не выдержал и проверил, как оно - вставлять с Fk и без них... есть разница, аднака... MS SQL Server 2000 SE SP3, 2 таблички с одинаковой структурой, одна с Fk (6 штук), другая без, вставлял по 20000 записей. Таблички, на которые ссылаемся - 800000, 50, 1800, 500000, 20, 98000000 записей. С Fk elapsed time 30672 ms, без Fk - 29294 ms, разница - около 5%. с использованием Fk конечно много логических чтений из табличек, на которые ссылаемся, но физических - всего порядка 130. Без Fk - логических чтений ессно не было. как на мой взгляд, так лучше бы Fk были.... конечно, я сам всё делаю через XP,всё проверяю, ничего "такого" никуда не должно вставится/удалится... вроде бы... но есть еще другие программеры (у заказчика), которые могут тово... сотворить... да и сам ведь не без греха, ошибешься где-нить, или 100 пудов забудешь чего-нить.... уж лучше будет "последний рубеж", который не даст тебе сделать каку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2004, 23:47 |
|
||
|
Ссылочная целостность
|
|||
|---|---|---|---|
|
#18+
Честно говоря я не понимаю откуда возмутся тормоза, если констрейн реализован не триггером, а средствами базы. В общем случае. В частности - Конечно надо проверять на практике - смотря какой констрейн и на какой базе. Насчет того что большинство программеров голосуют за ХП против констрейнов - не правда. Это проще только тем, кто привык (читай: привык работать с файловыми базами типа старого фокса) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2004, 08:04 |
|
||
|
Ссылочная целостность
|
|||
|---|---|---|---|
|
#18+
I'm completely agree with TimKa! Сколько я всякого дерьма исправлял из-за отсутствия FK в нешей базе... А сколько еще предстоит..((( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2004, 09:56 |
|
||
|
Ссылочная целостность
|
|||
|---|---|---|---|
|
#18+
Некоторые СУБД например позволяют очень гибко настраивать момент срабатывания для foreign-key-constraint's. Например в ASA есть такая опция БД (database options) как WAIT_FOR_COMMIT. Смысл в том, что если она вкл., то проверка целостности будет проверяться только в момент фиксации изменений, т. е. выполнения COMMIT. Если же опция выкл., то проверка целостности будет проверяться в момент непосредственного выполнения Insert, update, delete. WAIT_FOR_COMMIT может устанавливаться как для одиночного коннекта, так и для групп. Кроме того для foreign-key-constraint при создании таблицы можно указать опцию CHECK ON COMMIT (переопределят опцию WAIT_FOR_COMMIT, если последняя - выключена), которая откладывает проверку RESTRICT Action для foreign key. При этом не происходит задержки CASCADE, SET NULL, SET DEFAULT ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2004, 10:33 |
|
||
|
|

start [/forum/topic.php?all=1&fid=32&tid=1546338]: |
0ms |
get settings: |
8ms |
get forum list: |
16ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
47ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
| others: | 248ms |
| total: | 381ms |

| 0 / 0 |
