powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / FK или триггеры?
13 сообщений из 13, страница 1 из 1
FK или триггеры?
    #32069599
Сергей АБ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поделитесь, пожалуйста, своими соображениями по поводу того, что лучше использовать - внешние ключи или триггеры(например ErWin-овские) для обеспечения ссылочной целостности БД. Ведь кроме субъективных предпочтений, есть еще и реальные показатели производительности, оптимальности работы сервера в том и ином случае. Я, лично, склоняюсь к использованию везде, где можно, внешних ключей, тем более, что в MSSQL2000 поддерживаются каскадные изменения и удаления.
...
Рейтинг: 0 / 0
FK или триггеры?
    #32069608
Genady
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я, лично, склоняюсь к использованию везде, где можно, внешних ключей, тем более, что в MSSQL2000 поддерживаются каскадные изменения и удаления.
Правильно склоняетесь, тем более что это лучший подход с точки зрения производительности.
...
Рейтинг: 0 / 0
FK или триггеры?
    #32069613
Александр Спелицин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И правильно делаете.
...
Рейтинг: 0 / 0
FK или триггеры?
    #32069618
dkstranger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поддерживаю мысль о большей целесообразности FK

Контроль состояния (FK) всегда проще и, в конечном итоге, эффективнее попытки контроля изменений (триггеры).
...
Рейтинг: 0 / 0
FK или триггеры?
    #32069670
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Только не все варианты ссылочной целостности можно организовать с помощью PK-FK.
Например, "дерево" - нельзя.
...
Рейтинг: 0 / 0
FK или триггеры?
    #32069713
dkstranger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Glory
Согласен.
Но в этом случае проверку целостности мы проводим двумя способами

1. Процедуры проверки целостности записей, запускаемые по соответствующему флагу (или schedule)
2. Вся работа с данными (особенно, insert, update, delete) идет не через прямые запросы а через специальные интерфейсы (в простейшем случае ХП), в ктр осуществляется проверка целостности - некий аналог триггера
...
Рейтинг: 0 / 0
FK или триггеры?
    #32069720
Зайцев Фёдор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Glory
>>Например, "дерево" - нельзя.
Можно.
...
Рейтинг: 0 / 0
FK или триггеры?
    #32069722
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
23JIA9I CyKA
С каскадным удалением ?

Автор темы, насколько я понял, предлагает выбрать между PK-FK с каскадными операциями и триггерами.
...
Рейтинг: 0 / 0
FK или триггеры?
    #32069723
fima
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
23JIA9I CyKA
>>Можно.
Но не всякое :))
...
Рейтинг: 0 / 0
FK или триггеры?
    #32069764
Фотография Тимур
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В нашей системе вместо триггеров и FK используются хр. пр.
По-моему, достаточно гибкое решение - триггеры не "тормозят" и FK при изменении структур таблиц не мешаются.
Хотелось бы услышать ваше мнение по этому поводу.
...
Рейтинг: 0 / 0
FK или триггеры?
    #32069874
Фотография Гнездин Петр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Тимур: Неприятности рано или поздно появятся. Кто-нибудь запустит свой insert/update из QA и "прощай, целостность!". Или бага в процедуре. Самое неприятное в таких случаях то, что потом зачастую не удается без потерь восстановить нарушенные связки. IMHO везде, где это возможно, надо ставить FK. А изменение структуры, да еще такое, при котором нужно отключать проверку целостности - все же не ежедневная (надеюсь) операция, можно и потратить на это чуть-чуть времени.
...
Рейтинг: 0 / 0
FK или триггеры?
    #32075461
Mik Prokoshin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Единственный неприятный момент, связанный с FK - то, что MS до сих пор не реализовала каскады для двух FK в одной таблице, ссылающихся на одну и ту же другую таблицу - не самый редкий вариант :( Может и еще какие-то оговорки есть...
Как следствие, возникает вопрос, стоит ли частично работать с триггерами, частично с FK. Не лучше ли использовать единую схему (триггеры)...
Хотя с точки зрения скорости и качества разработки конечно, FK предпочтительнее.
...
Рейтинг: 0 / 0
FK или триггеры?
    #32076084
aag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FK - проверка констрайнтов вызывает блокировки. Обычно ничего страшного, но при большом кол-ве FK в таблице + активное изменение данных = м.б. потери скорости (и дедлоки). По крайней мере, так было в 6.5 и, думаю, 2000 мало отличается в этом отношении.

Триггеры - вообще очень опасная штука. Полностью согласен с Тимуром, у нас также все построено на пр-рах. Проверка целостности тоже находится там - даже если есть FK - в конце концов, сообщение об ошибке при нарушении констрайнта пользователям непонятно. К тому же, всегда проще, когда весь код сосредоточен в одном месте
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / FK или триггеры?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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