Страница 1 из 1

Делать связку Foreign Key или нет?

Добавлено: 23 авг 2007, 09:50
AnryGTR
Здравствуйте уважаемые гуру этого форума!
По вопросу проектирования.
Есть таблицы:

Код: Выделить всё

Визиты - ID,...,
Шаблоны_параметров - ID,Название_шаблона
Параметры - id,Id_шаблона,наименование,норма
Результаты - id,id_визита,наименование,норма,значение
Так вот сейчас у меня так:
при заполнении параметров ВИЗИТА выбирается шаблон параметров и затем тупо вставляется
в таблицу "Результаты", т.е. связки по внешнему ключу между таблицами "Результаты" и "Параметры" нет.
Таким образом при удалении шаблона(что повлечет за собой удаление его параметров) не произойдёт
удаления результатов.Это и хорошо, но не так уж и принципиально.
Реально в таблице результаты нужно заполнять только поле "Значение", а поля наименование и норма, как нетрудно
сообразить копируются из таблицы "Параметры".
Теперь вопрос: будет ли достигнута экономия дискового места(пусть даже мизерная), ну или какая другая оптимизация,
если реализовать-таки связку по внешнему ключу таблиц "Параметры" и "Результаты"?
Т.е. таблица "Результаты" примет примерно такой вид:

Код: Выделить всё

 ID, ID_Визита, ID_параметра, Значение.

Re: Делать связку Foreign Key или нет?

Добавлено: 23 авг 2007, 11:27
stix-s
AnryGTR писал(а): Теперь вопрос: будет ли достигнута экономия дискового места(пусть даже мизерная),
Свободное место на диске исчисляется байтами? или база за 100Г?

С FK будет не экономия места, а наоборот, а по производительности - от твоих запросов зависит

Добавлено: 23 авг 2007, 12:45
AnryGTR
ну запросы у меня к таблице "Результаты" самые примитивные:
результаты просматриваются и вводятся только на один конкретный визит, ну и чтобы распечатать - там максимум 20-25 строк(связка с визитом по ID_визита).
Никаких долговременных запросов использующих эти таблицы нет.
Значит я правильно сделал, что не стал создавать здесь FK?

Добавлено: 23 авг 2007, 12:53
Merlin
А мож таки стоит почитать хоть одну книжку по проектированию баз данных? И решить какой из апдейт-парадоксов тебе нужен в твоей задаче.

Re: Делать связку Foreign Key или нет?

Добавлено: 23 авг 2007, 12:55
Merlin
stix-s писал(а): С FK будет не экономия места, а наоборот
Ась? Инт-ссылка на блоб кило эдак на 30 займёт больше места в 10 записях, чем он сам?

Добавлено: 23 авг 2007, 13:10
AnryGTR
Ась? Инт-ссылка на блоб кило эдак на 30 займёт больше места в 10 записях, чем он сам?
Чо-т ваще не понял эту фразу. Можно разъяснить? :roll:

Re: Делать связку Foreign Key или нет?

Добавлено: 23 авг 2007, 13:23
stix-s
Merlin писал(а):
stix-s писал(а): С FK будет не экономия места, а наоборот
Ась? Инт-ссылка на блоб кило эдак на 30 займёт больше места в 10 записях, чем он сам?
а какая разница по блобам - все едино в базе лежат, хоть с FK, хоть без
FK индекс нужен - его и имел в виду :)

Re: Делать связку Foreign Key или нет?

Добавлено: 23 авг 2007, 13:53
Merlin
stix-s писал(а):
Merlin писал(а):
stix-s писал(а): С FK будет не экономия места, а наоборот
Ась? Инт-ссылка на блоб кило эдак на 30 займёт больше места в 10 записях, чем он сам?
а какая разница по блобам - все едино в базе лежат, хоть с FK, хоть без
Ы? В смысле сколько раз он будет там, в базе, один и тот же блоб лежать с FK и без?
stix-s писал(а): FK индекс нужен - его и имел в виду :)
А вот про это мы поговорим в следующей передаче и сааавсем не по поводу дискового пространства :lol:

Re: Делать связку Foreign Key или нет?

Добавлено: 23 авг 2007, 14:01
stix-s
Merlin писал(а): Ы? В смысле сколько раз он будет там, в базе, один и тот же блоб лежать с FK и без?
нее, я имел в виду один к одному - одна запись, адын блоб (у каждой свой) :)
Merlin писал(а): А вот про это мы поговорим в следующей передаче и сааавсем не по поводу дискового пространства :lol:
звучит пугающе :(