|
foreign key on update cascade
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovПредлагаю разобраться: кто именно проектирует БД - ты или начальник Начальник проектирует не во всех случаях, но вот каскадные FK для него - святое. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2018, 14:20 |
|
foreign key on update cascade
|
|||
---|---|---|---|
#18+
PolesovТогда уж озвучь, как правильно. Ограничение уникальности в данном случае не нужно. В лучшем случае его все будут тупо обходить, в худшем - оно создаст проблемы и опять же его придётся обходить. PolesovНачальник проектирует не во всех случаях, но вот каскадные FK для него - святое. Раз "он начальник, ты дурак", то твоё дело маленькое - доложить ему о возникшей проблеме и запросить инструкции по дальнейшему поведению. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2018, 14:24 |
|
foreign key on update cascade
|
|||
---|---|---|---|
#18+
Ребята, вопрос был не о правильности структуры, а об ошибке каскадного обновления FK. Выяснилось, что каскадное обновление такого FK технически не возможною В принципе, тему можно считать закрытой. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2018, 14:24 |
|
foreign key on update cascade
|
|||
---|---|---|---|
#18+
PolesovМожно ли сказать, что в системных таблицах FB поля RDB$RELATION_NAME, RDB$FIELD_NAME являются суррогатными, а не естественными ключами? Нет. Это АЛЬТЕРНАТИВНЫЙ ключ. Кроме того, не надо воспринимать структуру метаданных ФБ как образец для подражания. Между прочим, там констрейнтов вообще нет. Там есть только индексы, уникальные или нет. Тем не менее, у RDB$RELATIONS есть RDB$RELATION_ID. В общем, бывают БД без constraints. Редкий случай, но в таких системах целостность поддерживает нечто вроде трехзвенки, центрального сервера. В случае ФБ сам ФБ и есть этот "центральный сервер" для поддержки целостности в RDB$. Конечно, можно было бы переделать эту структуру "красиво", но она была создана в середине 80х годов, и как я уже сказал выше, это не совсем прикладная модель БД. Если вернуться к каскадным обновлениям, то, как уже было сказано - каскадные обновления зло, но зло косвенное, возникающее из-за применения естественных ключей - естественные ключи - зло, потому что могут меняться, ухудшают производительность, вынуждают использовать каскадные ФК, и т.д. Так что, первопричина проблем в данном случае - естественные ключи. О чем, как бы, пережевано уже лет тридцать. Если твой шеф (или еще кто-то) считает, что ЕК - это нормально (и вследствие - за каскадные обновления), то это просто означает, что он никогда не проектировал прикладные БД. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2018, 14:26 |
|
foreign key on update cascade
|
|||
---|---|---|---|
#18+
kdvТак что, первопричина проблем в данном случае - естественные ключи Да кто бы с этим спорил. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2018, 14:28 |
|
foreign key on update cascade
|
|||
---|---|---|---|
#18+
PolesovРебята, вопрос был не о правильности структуры, а об ошибке каскадного обновления FK. да ё-мое. То есть, выходит, ФБ плохой, MS SQL плохой, а наша структура - хорошая? Ошибка - это следствие кривости структуры. Если бы ты не напоролся на ошибку - и дальше использовал бы ЕК и каскадные апдейты? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2018, 14:33 |
|
foreign key on update cascade
|
|||
---|---|---|---|
#18+
kdvТо есть, выходит, ФБ плохой, MS SQL плохой MS SQL при попытке наложения такого каскадного FK ругается. И, согласись, вопрос не стоял "я тут со своей гениальной структурой БД, а он...". ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2018, 14:37 |
|
foreign key on update cascade
|
|||
---|---|---|---|
#18+
Уберите одно из вот этих FK: alter table COST add constraint FK_COST_DELIVERY foreign key ( SUPPLIER, DELIVERY_NO ) references DELIVERY ( SUPPLIER, DELIVERY_NO ) on update cascade; -xor- alter table COST add constraint FK_COST_PRODUCT foreign key ( SUPPLIER, PRODUCT ) references PRODUCT ( SUPPLIER, PRODUCT ) on update cascade; - и реализуйте обновление тех полей таблицы COST, что теперь без контроля со стороны FK, через after-update триггер его "бывшей" родительской таблицы. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2018, 14:38 |
|
foreign key on update cascade
|
|||
---|---|---|---|
#18+
Да кто его разберёт...Уберите одно из вот этих FK: alter table COST add constraint FK_COST_DELIVERY foreign key ( SUPPLIER, DELIVERY_NO ) references DELIVERY ( SUPPLIER, DELIVERY_NO ) on update cascade; -xor- alter table COST add constraint FK_COST_PRODUCT foreign key ( SUPPLIER, PRODUCT ) references PRODUCT ( SUPPLIER, PRODUCT ) on update cascade; - и реализуйте обновление тех полей таблицы COST, что теперь без контроля со стороны FK, через after-update триггер его "бывшей" родительской таблицы. Ну, и ссылочную целостность по удаленному FK поддерживать тоже через триггер. В принципе, да, но легче переделать схему на суррогатные ключи - тогда каскадное обновление вообще не потребуется. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2018, 14:42 |
|
foreign key on update cascade
|
|||
---|---|---|---|
#18+
PolesovПривет. Вопрос по каскадным обновлениям внешнего ключа. Структура БД: Таблица поставщиков: ... Код: sql 1. 2. 3. 4. 5. 6. 7. 8.
... С уважением, Poleosv. Ой, спасибо, положил ссылку в закладки. У меня начальник изредка пытается начать руководить разработкой детальной структуры БД, ему тоже естественные ключи по необъяснимый причине нравятся, вот и этот пример будет в копилке. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2018, 15:19 |
|
foreign key on update cascade
|
|||
---|---|---|---|
#18+
Убийственные денормализация и избыточность! ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2018, 09:36 |
|
foreign key on update cascade
|
|||
---|---|---|---|
#18+
интересный топег. про КГ/АМ уже было? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2018, 11:48 |
|
foreign key on update cascade
|
|||
---|---|---|---|
#18+
Мимопроходящий, было, но в более мягкой форме. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2018, 11:55 |
|
foreign key on update cascade
|
|||
---|---|---|---|
#18+
Мимопроходящийинтересный топег. про КГ/АМ уже было?Весь топик про это, после первого поста общественность другой версии не выдвигала. С небольшими лирическими отступлениями типа "начальник-тиран". ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2018, 12:26 |
|
foreign key on update cascade
|
|||
---|---|---|---|
#18+
12.02.2018 12:26, Ivan_Pisarevsky пишет: > Весь топик про это, после первого поста общественность другой версии не выдвигала. > С небольшими лирическими отступлениями типа "начальник-тиран". спасибо. я так и думал. зы: весь топег не Асилил, ибо в моменты алкогольного воздержания становлюсь чрезвычайно нетолерантным. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2018, 12:34 |
|
foreign key on update cascade
|
|||
---|---|---|---|
#18+
Polesov, Может быть я не прав, но у вас в таблице поставщиков только 1 поле: Код: sql 1. 2. 3.
судя по всему в этом и проблема. Вы пытаетесь использовать "ИМЯ" поставщика. Но если в эту таблицу добавить "код поставщика" (условный для вашей БД, можно даже инкремент) и при добавлении записей в другие таблицы использовать не имя, а код - то при изменении имени никто не пострадает. И целостность данных будет, и имя можно исправить. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2018, 10:01 |
|
foreign key on update cascade
|
|||
---|---|---|---|
#18+
akrush, дык весь топик ему об этом твердят ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2018, 10:03 |
|
foreign key on update cascade
|
|||
---|---|---|---|
#18+
Симонов Денис, Извините, может не заметил, но Полесову все говорят что это проблема связей и т.п. А вот добавить отдельное поле "код поставщика" я не увидел, поэтому и написал сообщение. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2018, 10:16 |
|
foreign key on update cascade
|
|||
---|---|---|---|
#18+
akrush, нет, ему говорят что естественные ключи зло, и каскадные обновления то же зло. Что собственно мало отличается от того, что ты озвучил ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2018, 10:21 |
|
foreign key on update cascade
|
|||
---|---|---|---|
#18+
Симонов Денис, некоторым людям нравится магия каскадного обновления. Некоторые люди полагают, что использование естественных ключей позволит "работать проще": обойтись совсем простыми SELECT (без соединений), ускорить получение данных ("джойны тормозят"). В действительности, дело прежде всего в плохом знании SQL а также особенностей используемой СУБД. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2018, 11:30 |
|
|
start [/forum/topic.php?fid=40&msg=39599996&tid=1561239]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
37ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
59ms |
get tp. blocked users: |
1ms |
others: | 306ms |
total: | 446ms |
0 / 0 |