![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Master-Detail связь: программно или при проектировании? [D7, Firebird]
ZiTrAX © (2006-10-15 21:16:00)Обязательно ли при проектировании БД использовать ограничения ссылочной целостности, master-detail связь? Просто мне удобнее наделать кучу отдельных таблиц, а все связи между ними поддерживать при программировании на Delphi (т.е., если в каком-то поле нужен выбор из другой таблицы, то мне это проще сделать программно). Влияет ли это как-то на скорость работы или на что-то ещё? Или, может, то, что мне удобно, считается дурным стилем или привычкой?
ANB (2006-10-16 12:22:00) [21]
> ИМХО, когда ссылка идет на маленький и стабильный справочник,
> типа "единиц измерения" или "валюта платежа"
угу. и когда тебе нужно удалить строку из этого справочника, сервер ложится, т.к. в подчиненных таблицах пара миллиардов непроиндексированных записей. И таблица - не одна.
Sergey13 (2006-10-16 12:08:00) [22]> Это когда ?
ИМХО, когда ссылка идет на маленький и стабильный справочник, типа "единиц измерения" или "валюта платежа"
Zacho (2006-10-16 12:01:00) [23]ANB © (16.10.06 11:47) [4]
Это когда ?
В IB/FB иногда любой индекс может помешать. Оптимизатор может "подцепить" индекс, даже в том случае, если его использование приведёт к более медленному выполнению запроса. Правда, бороться с этим не сложно, да и оптимизатор с каждой версией становится всё совершеннее.
ANB (2006-10-16 11:47:00) [24]
> при создании внешних ключей обычно автоматом создаются индексыпо
> этим полям
не всегда. во всяком случае, в оракле при create constraint индексы автоматом не создаются.
> Иногда индексы по FK мешают.
Это когда ?
Deniz (2006-10-16 07:09:00) [25]
> Desdechado © (15.10.06 23:01) [2]
>
> при создании внешних ключей обычно автоматом создаются индексыпо этим полям, чтоочень положительно сказывается на скорости доступа к данным
Иногда индексы по FK мешают.
> ZiTrAX (15.10.06 21:16)
Никто не мешает " ...все связи между ними поддерживать при программировании на Delphi" при наличие ссылочной целостности, просто в некотрых случаях очень помогает напримет cascade delete.
Desdechado (2006-10-15 23:01:00) [26]при создании внешних ключей обычно автоматом создаются индексыпо этим полям, чтоочень положительно сказывается на скорости доступа к данным
Zacho (2006-10-15 21:42:00) [27]То, что тебе удобно, рано или поздно приводит к нарушению ссылочной целостности (Referential Integrity, RI).
Единственный способ гарантированного соблюдения RI - внешние ключи (Foreign Keys, FK)
В некоторых (довольно редких) случаях ради производительности можно пожертвовать FK, но тогда необходимо принимать дополнительные меры для контроля, и в случае нарушения - для восстановления RI.
А вообще для понимания того, что такое RI и зачем она нужна очень рекомендую почитать что-нибудь по теории РСУБД, например К.Дж.Дейт "Введение в системы баз данных"