powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Ссылочная целостность
42 сообщений из 42, показаны все 2 страниц
Ссылочная целостность
    #32607646
Фотография Ggg_old
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В дискуссиях этого топика часто проскакивает тезис, что в "правильной" БД должны обязательно использоваться констрэйнты. Все БД, с которыми мне приходилось видеть не использовали констрэйнты, но работа с объектами БД была допустима только через ХП. Собственно я в своих БД я использую этот принцип - работа только через ХП, констрэйнты не используются (ну разве на этапе разработки БД, потом отключаю). Универсального правила естественно нет, особенно если едет речь о нагруженной OLTP системе.
Хочется услышать ваше мнение.
...
Рейтинг: 0 / 0
Ссылочная целостность
    #32607704
Фотография Сергей Васкецов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ggg_oldособенно если едет речь о нагруженной OLTP системе.
Хочется услышать ваше мнение.
Даже реализация ссылочной целостности на триггерах подчас быстрее будет в OLTP. Чего уж говорить про SP.
...
Рейтинг: 0 / 0
Ссылочная целостность
    #32607729
Фотография optimizer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Надежно и правилно будет использование ограничений. Это последняя линия обороны. Во всех программных проектах, особенно больших, имеется допущение, что в коде существует ошибка. Использование ограничений в СУБД даст возможнось увеличить надежность ("правильность"). А если это касается ссылочной целостности (и не только), то она логическим образом вытекает (чаще всего) прямо из ER - модели
...
Рейтинг: 0 / 0
Ссылочная целостность
    #32607807
Станислав C.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ggg_oldХочется услышать ваше мнение.
Мое мнение, основанное правда, лишь на теоретических знаниях по SQL-Server (сам я все еще работаю в ДОСе :-( ) и хранилищам данных, сводится к тому, что в правильно разработанной OLTP-системе (все таблицы находятся минимум в 3НФ или НФБК) не должно быть "ручных" (или через хранимые процедуры) проверок ссылочной целостности.
Ggg_oldУниверсального правила естественно нет, особенно если едет речь о нагруженной OLTP системе.
А по-моему, есть. Для любой OLTP-системы (хоть нагруженной, хоть нет).
И это - автоматический контроль ссылочной целостности при помощи СУБД. Для чего строить индексы, первичные и внешние ключи, связи и т.д., если затем все заново самому проверять! Не дело OLTP-систем проводить аналитическую работу. Они нужны лишь как накопители оперативных данных о заказах, продажах, покупках и т.д. за небольшой промежуток времени (день, неделя, месяц, максимум - год). Данные в них - динамически меняются. Порой по нескольку раз за день. Отследить же все возможные "подводные камни" в силах только СУБД с ее автоматическим контролем целостности.

А вот в OLAP-системах и хранилищах данных, где хранятся данные за несколько лет или десяток лет, и данные эти изменяются (дописываются) в лучшем случае раз в день (а то и значительно реже), на самом деле лучше отказаться от автоматического контроля целостности. По заявлениям Кодда (являющегося также родоначальником OLAP) объем данных OLAP-системы из-за различных видов группировок и суммирования в 2,5 - 100 раз больше, чем в OLTP-системе...
Но там несколько иная ситуация - частичная денормализация таблиц (приводящая к появлению дублирующихся записей) ради ускорения (и упрощения) SQL-запросов, различные заморочки с представлением данных из OLTP-систем в виде OLAP-кубов и т.д. А это уже совсем другая история...
...
Рейтинг: 0 / 0
Ссылочная целостность
    #32607930
Фотография Ggg_old
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ggg_old:
Использование констрэйнтов это хорошо и правильно. Я говорю о компромисе, который нужен для обеспечения скорости и уменьшения потребления ресурсов. Отсутствие прямого доступа в БД и работа через ХП это позволяют достичь, т.к. частенько в ХП делать проверки приходится все равно. ТОлько в ХП я могу выбирать что делать, а что нет, гибко отследить ошибку, принять решение о ее устранении и.т.д. Хотя, если БД разрабатывается не очень добросовестно, или очень много людей имеют доступ девелопера,не имея нужной квалификации, то ХП - это последний барьер.
...
Рейтинг: 0 / 0
Ссылочная целостность
    #32607940
Фотография Ggg_old
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
опечатка :(
читать надо
"...то констрэйнты - это последний барьер..."
...
Рейтинг: 0 / 0
Ссылочная целостность
    #32608445
*
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
*
Гость
Было бы интересно узнать, как с помощью программного кода реализовать проверку уникальности и корректности ссылки. Особенно интересно как это сделать в Oracle
...
Рейтинг: 0 / 0
Ссылочная целостность
    #32614351
TimKa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
/topic/103173

вот здесь в частности про это копья ломали.

Я себе взял за правило обеспечивать как ссылочную целостность, так и ограничения на значения все-таки средствами СУБД а не кодом триггеров и ХП, в котором

1. Могут быть ошибки
2. Может быть не оптимизирован.
3. Не столь явно диктуется бизнес правилами.
4. Может даже быть плохо переносим.
5. Не ясен для понимания людям из поддержки.

Насчет скорости я тоже сильносомневаюсь, что быстрее, по крайней мере на WEB нашел две рекомендации реализовать целостность декларативно ссылками и ни одной обратной рекомендации.
...
Рейтинг: 0 / 0
Ссылочная целостность
    #32616210
bokarev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а нафига тогда БД если не использовать то что она предоставляет,
зачем программировать то что уже реализовано в механизме БД.
потом при создании констраинтов создаются и соответствующие индексы.
Просто часто встречаются программисты не доверяющие никому,
они считают что правильно работает только то что они сами написали.
...
Рейтинг: 0 / 0
Ссылочная целостность
    #32616688
Фотография Denis Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сам код проверки "правильности" данных может быть основан на обработке исключений, возникающих при существовании ограничений целостности. Для 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.
create table master (
    master_id number( 9 )
  , constraint pk_master primary key (master_id)
);
create table detail (
    detail_id number( 9 )
  , master_id number( 9 )
  , constraint pk_detail primary key (detail_id)
  , constraint fk_detail_master foreign key (master_id) references master(master_id)
);

insert into master (master_id) values ( 1 );
commit;

declare
  parent_not_found exception;
  pragma exception_init(parent_not_found, - 2291 );
  child_record_found exception;
  pragma exception_init(child_record_found, - 2292 );
begin
  begin
    insert into detail (detail_id, master_id) values ( 1 ,  0 );
  exception when parent_not_found then
     -- Обработка исключения.
 

    null;
  end;
  insert into detail (detail_id, master_id) values ( 1 ,  1 );
  begin
    delete master where master_id =  1 ;
  exception when child_record_found then
     -- Обработка исключения.
 

    null;
  end;
end;
/

Соответственно, если в дальнейшем ограничения целостности будут убраны, то код будет работать несколько по-иному. Даже если административно запретить именно такой способ написания кода, то может сложиться ситуация, когда впоследствии будет разрабатываться новый код программистами, которым это ограничение по каким-то причинам было неизвестно.
...
Рейтинг: 0 / 0
Ссылочная целостность
    #32617464
Фотография Сергей Васкецов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bokarevпотом при создании констраинтов создаются и соответствующие индексы
Что это за бред?! Где это реализовано для Constraint не Primary key?
...
Рейтинг: 0 / 0
Ссылочная целостность
    #32617628
Фотография ChA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Например - UNIQUE
...
Рейтинг: 0 / 0
Ссылочная целостность
    #32617750
Фотография Сергей Васкецов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что UNIQUE?
...
Рейтинг: 0 / 0
Ссылочная целостность
    #32617885
Фотография ChA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ограничение UNIQUE тоже создает индех. По крайней мере в MS SQL...
...
Рейтинг: 0 / 0
Ссылочная целостность
    #32618078
bokarev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Что это за бред?! Где это реализовано для Constraint не Primary key?[/quot]

RBO в Oracle работает используя FK и PK и соответствующие индексы, и я так и не понял что вы называете бредом ?
обоснуйте пожалуйста.
...
Рейтинг: 0 / 0
Ссылочная целостность
    #32618247
Kassandra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Констрейнты - это святое в теории БД.
Подумайте о тех, кто придет после Вас и будет писать Приложения к Вашей БД. Я им не завидую.
А автоматическое (то бишь при создании констрейнта) создание индексов реализовано, например, в Interbase, Paradox etc.
wbr, k
...
Рейтинг: 0 / 0
Ссылочная целостность
    #32618349
TimKa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подумайте о тех, кто придет после Вас и будет писать Приложения к Вашей БД. Я им не завидую.

Есть мнение
"А нафига о ламаках думать - не разберутся в нашем крутом коде - их проблемы, у нас-то все работало, когда сдавали."
...
Рейтинг: 0 / 0
Ссылочная целостность
    #32618504
Kassandra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет, ну если "после нас хоть потоп", тогда ты верной дорогой идешь :)

Ggg_oldВ дискуссиях этого топика часто проскакивает тезис, что в "правильной" БД должны обязательно использоваться констрэйнты. Все БД, с которыми мне приходилось видеть не использовали констрэйнты, но работа с объектами БД была допустима только через ХП. Собственно я в своих БД я использую этот принцип - работа только через ХП, констрэйнты не используются (ну разве на этапе разработки БД, потом отключаю). Универсального правила естественно нет, особенно если едет речь о нагруженной OLTP системе.
Хочется услышать ваше мнение.

Сколько таблиц было в тех БД, которые тебе приходилось видеть?
Сколько таблиц в твоих в БД? Если пара-тройка, тогда твой вопрос может, и имеет смысл.
А, вообще, есть бизнес-правила (в частности, констрэйнты) - это как бы врожденное :)
А есть прикладной код на сервере/клиенте, который заведует функциональностью: сегодня такой, завтра сякой.
Отними сейчас твой код, и вместо БД получится просто набор таблиц - Куча
Поэтому имхо лучше, все-таки, отделять мух от котлет.
А какие доводы против констрэйнтов?
Ggg_oldно работа с объектами БД была допустима только через ХП. Собственно я в своих БД я использую этот принцип - работа только через ХП,
И что хорошего в этом ограничении?
wbr, k
...
Рейтинг: 0 / 0
Ссылочная целостность
    #32618590
Фотография Сергей Васкецов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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.
create table xxx
(id numeric( 16 , 0 ) identity,
 code int not null,
 descript varchar( 255 ) null,
 constraint PK_xxx primary key clustered (id))
go

alter table xxx
add constraint UK_xxx unique (code)
go

alter table xxx
add parent_id numeric( 16 , 0 ) null references xxx
go

select *
 from sysindexes
 where id = object_id('xxx')
go

последний запрос возвращает PK_xxx и UK_xxx. То есть, для FK индекс НЕ СОЗДАЛСЯ, что правильно, ибо нафиг он не нужен по умолчанию (если в Oracle это не так - мне искренне жаль). Но зачем создается индекс UK_xxx - не понятно, в общем случае в нем может не быть необходимости (опять же, проще всего вообще внутри сервера не разделять UK и UI, что в большинстве серверов имеет место, за исключением статистики по UI).
...
Рейтинг: 0 / 0
Ссылочная целостность
    #32618676
bokarev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
c FK нет индексов - согласен.
я сейчас как раз сижу на базе в которой нет ссылочной целостности,
и скажу это очень не весело. Это как раз тот случай когда многа кода,
большая база (>1000 таблиц) и приложению уже больше 15 лет.
сейчас в эту базу ввести ссылочную целостность очень сложно(может вообще невозможно), а втыки с дублирующимсяи и висящими записями встречаются постоянно
...
Рейтинг: 0 / 0
Ссылочная целостность
    #32618744
Фотография Ggg_old
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2kassandra:
БД - опердень банка. Таблиц - сотни, процедур - аналогично. Есть основные таблицы (например таблица платежей и остатков), есть куча справочников (например коды банков, коды операций, исполнителей и.т.п). В таблице платежей - за все время записей около 20 млн. Констрэйнты не используются. При операции ввода или проведения нового платежа все проверки по любому делаются только в соответствующей ХП. Как бы работала система по скорости, если бы на таблицу платежей еще бы был констрэйнт практически на все ее поля я не знаю - но предполагаю, что-бы тормоз был конретный, хотя я не имел опыта работы с большими БД с интенсивной нагрузкой аналогичной нашей. БД разрабатывается выделенными разработчиками, естественно уровень отвественности и исполнения очень высокий. Имея в качестве примера "большую" БД, свои мелкие БД (действительно пара-тройка таблиц и десяток-другой процедур)я делаю по такому-же принципу. Единственно, что при процедуроориентированной работе БД, я стараюсь делить ХП на несколько как-бы уровней (интерфейсные ХП, - которые вызываются пользователями и ХП уровня "ядра" - которых гораздо меньше и только через них ведется манипулирование свойствами объектов БД. В целом - принцип работающий.
Но я еще раз повторяюсь - я за констрэйнты, но между теорией и практикой всегда есть разрыв. Хочется услышать аргументы за частичный или полный отказ от констрэйнтов в БД и когда это оправдано.
...
Рейтинг: 0 / 0
Ссылочная целостность
    #32618765
Фотография ChA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей ВаскецовТолько для PK гарантировано должен создаваться индекс
Это где-то в теории РБД протоколируется ? Ссылку, если можно... Насколько
я понимаю, ограничения относятся к теории, а их реализация к практике.
Ни в одной книге по теории БД я не встречал такого сильного утверждения,
теория вообще не знает ничего об индексах.
Создание уникальных индексов для PRIMARY и UNIQUE, как Вы правильно
заметили, выполняется именно для простоты, так как иначе для поддержки
соответствующих ограничений пришлось бы сканировать всю таблицу.
Ограничение UNIQUE является потенциальным или альтернативным ключом
и в некотором смысле аналогичным PRIMARY.
...
Рейтинг: 0 / 0
Ссылочная целостность
    #32618776
*
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
*
Гость
В ORACLE для UK индекс создается, для FK нет.
Если бы не создавался, как проверить уникальность?
Для проверки корректности FK индекс не нужен,
НО попытка удалить запись в главной таблице приводит
к неприятносттям если в подчиненной нет подходящего индекса
...
Рейтинг: 0 / 0
Ссылочная целостность
    #32618856
Фотография Сергей Васкецов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ChAНи в одной книге по теории БД я не встречал такого сильного утверждения, теория вообще не знает ничего об индексах
Верно, на самом деле я немного утрирую, только для CLUSTERED PK он обязан создаваться (по смыслу CLUSTERED), для NONCLUSTERED тоже не обязательно.
...
Рейтинг: 0 / 0
Ссылочная целостность
    #32618899
Фотография ChA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Васкецов только для CLUSTERED PK он обязан создаваться
В теории РБД мне также не встречалось понятие CLUSTERED, это опять же
относится к реализации.

P.S. Истины для...
...
Рейтинг: 0 / 0
Ссылочная целостность
    #32618931
Фотография Сергей Васкецов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ChAВ теории РБД мне также не встречалось понятие CLUSTERED, это опять же относится к реализации
Никто и не спорит. А при чем тут голая теория-то вообще?
...
Рейтинг: 0 / 0
Ссылочная целостность
    #32618971
Kassandra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ggg_old2kassandra:
БД - опердень банка. Таблиц - сотни, процедур - аналогично. Есть основные таблицы (например таблица платежей и остатков), есть куча справочников (например коды банков, коды операций, исполнителей и.т.п). В таблице платежей - за все время записей около 20 млн. Констрэйнты не используются. При операции ввода или проведения нового платежа все проверки по любому делаются только в соответствующей ХП. Как бы работала система по скорости, если бы на таблицу платежей еще бы был констрэйнт практически на все ее поля я не знаю - но предполагаю, что-бы тормоз был конретный, хотя я не имел опыта работы с большими БД с интенсивной нагрузкой аналогичной нашей.
И не узнаешь, пока не попробуешь :)
Имхо проблемы быстродействия работы БД нужно решать мощностью используемых ресурсов, а не отказом от механизма целостности и непротиворечивости данных, тем более в банковских системах. Ну и, разумеется, не забывать об оптимизации запросов.
Кстати, на чем все это реализовано (СУБД? Hard?), если не секрет?
Конечно, случаи отказа от констрэйнтов бывают, но чтобы в БД из нескольких сотен таблиц не было ни одного к-та.....
Но хоть индексы то у вас есть?:)
wbr, k
...
Рейтинг: 0 / 0
Ссылочная целостность
    #32619129
Фотография Ggg_old
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Реализовано на Sybase ASE 12.5 on WinNT. Хард - 4xCPU Xeon (сколько гигагерцев точно не помню)+Raid10+4Gb RAM.
Я думаю можно поставить вопросы так:
1. В каких случаях на практике отказ от констрэйнтов допустим? Можно ли сказть, что ХП ориентированная БД с жестким котролем за изменениями - это допустимый случай?
2. Как использование констрэйнтов влияет на производительность? Можно ли ее как-то оценить?
Если в форуме есть разработчики или эксплуататоры биллинговых систем в телекомах, то интересно узнать - использутся в их БД констрэйнты на нагруженную основную таблицу (наверное это таблица звонков)?
...
Рейтинг: 0 / 0
Ссылочная целостность
    #32619138
1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скорее всего это продукт фирмы Диасофт.
...
Рейтинг: 0 / 0
Ссылочная целостность
    #32619159
1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор
Как бы работала система по скорости, если бы на таблицу платежей еще бы был констрэйнт практически на все ее поля я не знаю - но предполагаю, что-бы тормоз был конретный


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

1) Для WF Отказаличь потому, что она многоплатформенная т.е может запускаться на Oracle,MS SQL, битрив

2) В 5 NT отказались потому что без констрейнов на базе проще писать ПАТЧИ.
...
Рейтинг: 0 / 0
Ссылочная целостность
    #32619199
Фотография Сергей Васкецов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ggg_old1. В каких случаях на практике отказ от констрэйнтов допустим? Можно ли сказть, что ХП ориентированная БД с жестким котролем за изменениями - это допустимый случай?
Да. Но не только, в случае пакетных изменений/репликации если выбирать между references и реализацией на триггерах, выбирают обычно первое ввиду большей гибкости...

Ggg_old2. Как использование констрэйнтов влияет на производительность? Можно ли ее как-то оценить?
... и скорости. Оценивать сей факт всегда надо по месту, на конкретных данных/запросах.
...
Рейтинг: 0 / 0
Ссылочная целостность
    #32619236
Фотография ChA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей ВаскецовА при чем тут голая теория-то вообще?
Сергей ВаскецовВерно, на самом деле я немного утрирую, только для CLUSTERED PK он обязан создаваться (по смыслу CLUSTERED), для NONCLUSTERED тоже не обязательно.
Тогда утверждение должно быть в контексте конкретной СУБД, а не вообще.
Пример: в MS SQL 2K ограничение PRIMARY KEY автоматически создает
уникальный индекс по соответствующим полям с таким же именем, если
таковой отсутствует, либо использует ранее созданный, если таковой
существует. CLUSTERED это индекс или нет, роли никакой не играет.
...
Рейтинг: 0 / 0
Ссылочная целостность
    #32619268
Фотография Сергей Васкецов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Васкецовмежду references и реализацией на триггерах, выбирают обычно первое
LOL. Естественно второе, описался.
...
Рейтинг: 0 / 0
Ссылочная целостность
    #32619283
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще на RI можно смотреть как на уже написанные тригеры для наиболее стандартных ситуаций - таким образом выбор между ними лежит совершенно в другой плоскости
...
Рейтинг: 0 / 0
Ссылочная целостность
    #32619306
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Особенно кайфово реализовывать ссылочную целостность на триггерах в MSSQL и SybaseASE, в которых отсутствуют триггеры BEFORE.
...
Рейтинг: 0 / 0
Ссылочная целостность
    #32619342
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gardenman

А INSTEAD ?
...
Рейтинг: 0 / 0
Ссылочная целостность
    #32619395
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А В ASE даже и INSTED нету....
...
Рейтинг: 0 / 0
Ссылочная целостность
    #32619738
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не выдержал и проверил, как оно - вставлять с 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 пудов забудешь чего-нить.... уж лучше будет "последний рубеж", который не даст тебе сделать каку.
...
Рейтинг: 0 / 0
Ссылочная целостность
    #32622293
TimKa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Честно говоря я не понимаю откуда возмутся тормоза, если констрейн реализован не триггером, а средствами базы. В общем случае. В частности - Конечно надо проверять на практике - смотря какой констрейн и на какой базе.

Насчет того что большинство программеров голосуют за ХП против констрейнов - не правда. Это проще только тем, кто привык (читай: привык работать с файловыми базами типа старого фокса)
...
Рейтинг: 0 / 0
Ссылочная целостность
    #32622442
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
I'm completely agree with TimKa!
Сколько я всякого дерьма исправлял из-за отсутствия FK в нешей базе...
А сколько еще предстоит..(((
...
Рейтинг: 0 / 0
Ссылочная целостность
    #32622533
Guest_2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Некоторые СУБД например позволяют очень гибко настраивать момент срабатывания для 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
...
Рейтинг: 0 / 0
42 сообщений из 42, показаны все 2 страниц
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Ссылочная целостность
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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