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

Модераторы: kdv, CyberMax

Ответить
AnryGTR
Сообщения: 116
Зарегистрирован: 15 янв 2007, 15:58

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

Сообщение AnryGTR » 23 авг 2007, 09:50

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

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

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

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

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

stix-s
Заслуженный разработчик
Сообщения: 557
Зарегистрирован: 13 дек 2005, 11:52

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

Сообщение stix-s » 23 авг 2007, 11:27

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

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

AnryGTR
Сообщения: 116
Зарегистрирован: 15 янв 2007, 15:58

Сообщение AnryGTR » 23 авг 2007, 12:45

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

Merlin
Динозавр IB/FB
Сообщения: 1502
Зарегистрирован: 27 окт 2004, 11:44

Сообщение Merlin » 23 авг 2007, 12:53

А мож таки стоит почитать хоть одну книжку по проектированию баз данных? И решить какой из апдейт-парадоксов тебе нужен в твоей задаче.

Merlin
Динозавр IB/FB
Сообщения: 1502
Зарегистрирован: 27 окт 2004, 11:44

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

Сообщение Merlin » 23 авг 2007, 12:55

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

AnryGTR
Сообщения: 116
Зарегистрирован: 15 янв 2007, 15:58

Сообщение AnryGTR » 23 авг 2007, 13:10

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

stix-s
Заслуженный разработчик
Сообщения: 557
Зарегистрирован: 13 дек 2005, 11:52

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

Сообщение stix-s » 23 авг 2007, 13:23

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

Merlin
Динозавр IB/FB
Сообщения: 1502
Зарегистрирован: 27 окт 2004, 11:44

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

Сообщение Merlin » 23 авг 2007, 13:53

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

stix-s
Заслуженный разработчик
Сообщения: 557
Зарегистрирован: 13 дек 2005, 11:52

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

Сообщение stix-s » 23 авг 2007, 14:01

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

Ответить