Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Master-Detail связь: программно или при проектировании? [D7, Firebird]


Страницы:   1 2

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 и зачем она нужна очень рекомендую почитать что-нибудь по теории РСУБД, например К.Дж.Дейт "Введение в системы баз данных"


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо