Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Foreign keys: теория... / 7 сообщений из 7, страница 1 из 1
05.09.2001, 03:32
    #32013482
Denniz
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Foreign keys: теория...
То что по примари key формируется индекс - это понятно...
Но вот если в другой таблице использует этот key в качестве foreign key и
мы теперь пытаемся удалить запись из примари таблицы. Сервер выкидывает
сообщение об ошибке - это понятно... Но как он узнает, что в во второй
таблице есть уже запись ссылающаяся на первую таблицу? Строится
ли неявный индекс по полю со ссылкой на первую таблицу для второй таблицы
или производится полное сканирование?

Зачем мне это нужно знать: можно ли безболезненно вводить "лишние" ключи
и ссылки без потери производительности?
...
Рейтинг: 0 / 0
05.09.2001, 04:18
    #32013483
pkarklin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Foreign keys: теория...
При создании связи между таблицами, поле таблицы, составляющее FK явно не индексируется, это нужно сделать самому. А на счет производительности, могу сказать вот что. У меня работает довольно большая база. При чем к таблице со справочником продукции через FK привязано более 80 таблиц. И вот что я заметил, чем больше таблиц привязываеш, тем дольше идет процесс удаления записей. И это понятно, ведь сервер должен проверить все связянные таблицы на наличие записей. Так что я всегда индексирую поля, составляющие FK.
...
Рейтинг: 0 / 0
05.09.2001, 05:07
    #32013489
Genady
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Foreign keys: теория...
>Зачем мне это нужно знать: можно ли безболезненно вводить "лишние" ключи
и ссылки без потери производительности?

Ключи не могут быть лишними, если ключ лишний, значит это ошибка проектирования, что как сами понимаете есть плохо.
...
Рейтинг: 0 / 0
05.09.2001, 05:43
    #32013495
Denniz
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Foreign keys: теория...
ключ таки может быть "лишним", если он несет неявную/вспомогательную нагрузку.
конечно, в конечном итоге это проистекает из-за ошибок проектировная
но на уже готовой базе иначе может выхода и не быть...
...
Рейтинг: 0 / 0
05.09.2001, 05:45
    #32013496
Denniz
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Foreign keys: теория...
2:pkarklin
понял, спасибо...
...
Рейтинг: 0 / 0
05.09.2001, 07:18
    #32013499
Genady
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Foreign keys: теория...
>ключ таки может быть "лишним", если он несет неявную/вспомогательную нагрузку.
Какую, какую нагрузку?


Нда... Вот про первичные ключи слышал, алтернативные тоже слышал, даже про внешние знаю..... а вот о лишних слышу в первый раз.
...
Рейтинг: 0 / 0
05.09.2001, 11:56
    #32013526
Denniz
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Foreign keys: теория...
2Genady:
я может быть не селен в терминологии...
ситуация: есть таблица с процентными ставками, таблица с договорами и таблица с магазинами.
ставки связаны с магазинами (причем неявно, через таблицу партнеров), магазины с договорами.
далее формируется отчет, где в селекте необходимо что-то посчитать используя нужный процент
для нужного магазина. Теперь если из таблицы процентов удалить какую-то запись то в
отчет не будет считаться процент. Что я делаю - завожу в договорах дополнительное
поле и делаю foreign key на таблицу процентов. В результате если запись в процентах
уже где-то используется, то удалить ее сервер не даст...
Я где-то не прав?

И как назвать вот такой вот foreign key, кроме как лишний?
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Foreign keys: теория... / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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