powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Каскадный ФК
25 сообщений из 55, страница 1 из 3
Каскадный ФК
    #39195647
Swv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте.

Есть табличка, на которую ссылаются штук 20 других. В них ФК на первую таблицу каскадные.

Возможно ли как-то отследить в каком порядке срабатывают эти самые каскады при обновлении ПК в основной таблице?


Спасибо
...
Рейтинг: 0 / 0
Каскадный ФК
    #39195651
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Swv,

каскады зло. А каскады с обновлением зло в квадрате. Лучше не делать никаких предположений о порядке срабатывания, ибо его никто не гарантирует
...
Рейтинг: 0 / 0
Каскадный ФК
    #39195652
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
опять "естественные" ключи...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Каскадный ФК
    #39195669
Swv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисSwv,

каскады зло. А каскады с обновлением зло в квадрате. Лучше не делать никаких предположений о порядке срабатывания, ибо его никто не гарантирует

почему зло то? в теле документа ПК из 5 полей. надо "перелинковать" в теле документа строку в другой документ - просто поменял в нем ссылку на другую строку шапки и все. а все прочие, зависимые от этой строки документа таблицы сами поменяли значения ФК на основную. В противном случае сложно было бы "перелинковать" строку одного документа в другой документ. а надо
...
Рейтинг: 0 / 0
Каскадный ФК
    #39195674
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, Swv!
You wrote on 18 марта 2016 г. 18:22:51:

Swv> почему зло то? в теле документа ПК из 5 полей.о! я знал...

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Каскадный ФК
    #39195675
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Swv,

я ещё могу понять каскадное удаление. Оно иногда требуется. Но каскадное обновление может потребоваться только для естественных ключей, а они сами по себе не сахар. А у вас там ещё и ПК аж из 5 полей. Это вообще адский ад.

Swv ... просто поменял в нем ссылку на другую строку шапки и все. а все прочие, зависимые от этой строки документа таблицы сами поменяли значения ФК на основную. В противном случае сложно было бы "перелинковать" строку одного документа в другой документ.

По моему кривой дизайн БД. Неплохо бы почитать про 3 НФ.
...
Рейтинг: 0 / 0
Каскадный ФК
    #39195678
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, Симонов Денис!
You wrote on 18 марта 2016 г. 18:27:29:

Симонов Денис> По моему кривой дизайн БД. Неплохо бы почитать про 3 НФ.
и А.Тенцера про "ключ и отмычку"
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Каскадный ФК
    #39195687
Swv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,

не пойму чем не нравится такая перелинковка )


есть такая последовательность документов.

Шапка 1 - шапка 2 - шапка 3 - шапка 4 - шапка 5

при нормальном функционировании последовательно создаются все 5 документов.

но есть вариант, когда создается сразу 5 документ. а 1-4 не видны в журналах документов. по сути фэйковые они.
Перед этим отрабатывает процедурка, которая создает всю цепочку 1-4.
в первом документе есть некий атрибут-признак. и он же является частью ПК.
Который в данном случае был указан как параметр для процедуры создания цепочки документов.
Ошибся пользователь при задании параметров. указал 1, а надо было 0 в качестве этого атрибута. Можно конечно заставить его удалить документ и создать его снова с нужным параметром. А можно просто в 5 документе этот самый параметр исправить. Но исправив этот параметр , по сути получится, что вся цепочка должна приходить к документу 1 с признаком 0 а не 1. Он в системе тоже имеется.
Вот тут как раз и пригодится каскад
...
Рейтинг: 0 / 0
Каскадный ФК
    #39195701
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
каскадная проктостоматология...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Каскадный ФК
    #39195707
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Swv,

Вы слышали анекдот о полностью каскадной БД, когда случайное удаление организации привело к полному схлопыванию всей базы в ноль, по зависимостям от этого корневого элемента справочника?
...
Рейтинг: 0 / 0
Каскадный ФК
    #39195710
Swv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий,



Ок. Признак это был введен в пк первой таблице (и идет он по всем остальным четырем) собственно для того, чтобы таблицу пятых документов можно было бы быстро отфильтровать по этому признаку не joinив все вплоть до первой таблицы.
...
Рейтинг: 0 / 0
Каскадный ФК
    #39195714
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, Swv!
You wrote on 18 марта 2016 г. 18:54:39:

Swv> отфильтровать по этому признаку не joinив все вплоть до первой таблицы.
вы произвели денормализацию не начав нормализации
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Каскадный ФК
    #39195715
Swv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WildSery,

Согласен. Есть такая опастность. Но как же быть тогда с этим самым признаком, который проходит от первой до последней таблицы?? Можно конечно делать в триггере апдейт и тд. Но тут есть опастность просто забыть об этом в очередном документе
...
Рейтинг: 0 / 0
Каскадный ФК
    #39195720
Swv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий,

Может конечно что то и недопонимаю.

Но признак этот по сути важен только в первом документе.
А вот как не джойнить все при фильтре пятого документа - тут не соображу) тем более на жтом же форуме в аналогичной ситуации все дружно советовали этотсамый признак так и завернуть.
...
Рейтинг: 0 / 0
Каскадный ФК
    #39195721
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WildSerySwv,

Вы слышали анекдот о полностью каскадной БД, когда случайное удаление организации привело к полному схлопыванию всей базы в ноль, по зависимостям от этого корневого элемента справочника?

хороший.

но кстати поэтому и разделяют каскады на изменение и на удаление
...
Рейтинг: 0 / 0
Каскадный ФК
    #39195726
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Swv, советовать тебе сейчас что-либо, не зная предметной области и поставленной задачи смысла не имеет.
есть общие принципы проектирования БД (помимо нормализации).
один из них - избегать составных ПЕРВИЧНЫХ ключей.
нужна уникальность по группе полей - создавай УНИКАЛЬНЫЙ ключ (но не первичный).
а первичный ключ обычно делают суррогатным, на генераторах, сиквенсах, автоинкрементах, UUID-ах и т.п.
на такой ключ гораздо удобнее ссылаться из FK и не нужно городить каскадные обновления.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Каскадный ФК
    #39195732
Swv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий,

ок. будет он уникальный, а не первичный.

И на уникальный ФК у детей. Вопрос о каскаде остается актуальным )
...
Рейтинг: 0 / 0
Каскадный ФК
    #39195784
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WildSeryВы слышали анекдот о полностью каскадной БД
это не анекдот. это у меня в техсаппорте было. человек жаловался, что при удалении одной записи из таблицы А удалялась пропасть данных из этой же и других нескольких связанных таблиц. Прислал копию БД, я этот ужас воочию наблюдал.
Удаляешь 1 запись, потом refresh, и ... опа!
Выяснилось, что у человека ссылки по каскадным ФК при очередном добавлении ФК замкнулись в кольцо из 4-5 таблиц. Кстати, что-то из запросов, вылавливающих циклические ссылки по ФК, попало в IBPump. Или наоборот, Борис мне такой запрос прислал (или я ему). Не помню уже.
...
Рейтинг: 0 / 0
Каскадный ФК
    #39195787
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv,

что-то школа вспомнилась, Norton Disk Edit и зацикливание папок в FAT на корень диска - чтобы учитель гад не пытался больше стирать папки с игрушками....
...
Рейтинг: 0 / 0
Каскадный ФК
    #39195808
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Опять 25, да ещё к ночи.

Симонов Денис> каскады зло. А каскады с обновлением

С какого буя необновляемые каскады - зло?

WildSery> Вы слышали анекдот

Как будто если бы удаление в этой БД было на
триггерах, а не каскадное - стало бы легче/лучше.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Каскадный ФК
    #39195811
Swv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да нет у меня каскадов на удаление ) есть только на обновление

а вопрос задал по той причине, что при одном из update на одной из таблиц ругнулось на нарушение FK
...
Рейтинг: 0 / 0
Каскадный ФК
    #39195812
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам,

каскадное удаление нормально, но только в том случае если это тщательно обдумано. Если уж где то нужно применить каскадное удаление, то лучше делать его не глубже одного уровня. Типа шапка документа - позиции.
...
Рейтинг: 0 / 0
Каскадный ФК
    #39195821
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Swv> да нет у меня каскадов на удаление ) есть только на обновление

Обычно это ещу хуже. :)

> а вопрос задал по той причине, что при одном из
> update на одной из таблиц ругнулось на нарушение FK

Дык смотреть надо было, с DDL и данными.
Может у тебя циклическая зависимость.
Проблема ещё актуальна или уже разобрался?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Каскадный ФК
    #39195822
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис> каскадное удаление нормально

В таком случае тебя (и остальных, желательно)
не затруднит не называть это злом?

При чём это уже в N-ый раз, и каждый раз
одно и то же, но через полгода по новой.

> но только в том случае если это тщательно обдумано

Во-первых, нет. Во-вторых, всё остальное
тоже "если обдумано". Практически любой
оператор, даже DML нужно использовать
"только обдуманно".

> Если уж где то нужно применить каскадное удаление,
> то лучше делать его не глубже одного уровня.

Если очень кратко говоря, это бред и глупость.
Или будешь оспаривать и нужно подробнее ?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Каскадный ФК
    #39195828
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам,

ну про каскады вообще страшилок много. Во первых порядок их срабатывания вовсе не тот что многие ожидают. Во вторых цепочка каскадов это всё равно что цепочка триггеров. Код становится совершенно не понятным и не предсказуемым. А уж если на каждой таблице участвующей в каскаде ещё и триггеры на удаление навешаны, то тут вообще пиши пропало.
...
Рейтинг: 0 / 0
25 сообщений из 55, страница 1 из 3
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Каскадный ФК
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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