Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Firebird, InterBase |
![]() ![]() |
Топик располагается на нескольких страницах: ←Ctrl назад 1 .. 20 21 22 23 24 [25] 26 27 28 29 .. 55 вперед Ctrl→ |
rdb_dev Member Откуда: с болот Сообщений: 3604 |
|
||||||
24 янв 19, 13:22 [21793286] Ответить | Цитировать Сообщить модератору |
rdb_dev Member Откуда: с болот Сообщений: 3604 |
P.S. Ну хоть кто-то понял, о чем я толкую... |
||
24 янв 19, 13:26 [21793290] Ответить | Цитировать Сообщить модератору |
hvlad Member Откуда: Сообщений: 11135 |
|
||||
24 янв 19, 13:31 [21793295] Ответить | Цитировать Сообщить модератору |
Симонов Денис Member Откуда: Рязань Сообщений: 10733 |
rdb_dev, ну если ты такой любитель триггеров и вообще странных извращённых решений. Напиши себе универсальный триггер на мастер таблицу, который сползает в системные таблицы, вытащит все зависимые таблицы и сделает для них холостой апдейт. |
24 янв 19, 13:36 [21793303] Ответить | Цитировать Сообщить модератору |
rdb_dev Member Откуда: с болот Сообщений: 3604 |
Я, с горем пополам, вполне переживу без этой фичи, но если разработчики сочтут её нелишней и реализуют, то это, ИМХО, поспособствует созданию более стройных архитектур БД, в которых необходимо использовать подобных подход. |
||||||
24 янв 19, 13:36 [21793305] Ответить | Цитировать Сообщить модератору |
Симонов Денис Member Откуда: Рязань Сообщений: 10733 |
для этого привилегии придумали. Ты можешь вообще запретить прямое изменение таблиц для не ДБА, только через ХП |
||
24 янв 19, 13:41 [21793311] Ответить | Цитировать Сообщить модератору |
rdb_dev Member Откуда: с болот Сообщений: 3604 |
Симонов Денис, я устал объяснять... |
24 янв 19, 13:44 [21793314] Ответить | Цитировать Сообщить модератору |
Vlad F Member Откуда: Сообщений: 1335 |
Много лучше. Ибо оверхеда почти никакого нет (поле м.б. простейшим Char(1) и всегда иметь значение Null), а самое главное, оно оционально больше ничего не затрагивает. Первоначальный архитектор сразу предусматривает его в создаваемом мастере, а все последующие проектировщики всевозможных деталей при необходимости мигрируют его также в них и охватывают каскадом. И все, проблема решена и никаких искусственных телодвижений в движке. И в чем тут нарушение нормальных форм, не понимаю. Поясни хоть какой именно.
Ну, дык, какой рассказчик, такое и понимание.. |
||||
24 янв 19, 13:47 [21793321] Ответить | Цитировать Сообщить модератору |
rdb_dev Member Откуда: с болот Сообщений: 3604 |
|
||||||||
24 янв 19, 13:57 [21793337] Ответить | Цитировать Сообщить модератору |
Симонов Денис Member Откуда: Рязань Сообщений: 10733 |
rdb_dev, ага, а потом надо какой-то апдейт сделать вне этой логики и побежал выключать триггеры. Нет уж спасибо. Есть одна система доставшаяся по наследству с триггерной логикой на Оракуле. Там чёрт ногу сломит. Поменял что-то а оно где то в триггерах что-то передёрнуло на что ты вообще не рассчитывал. |
24 янв 19, 14:00 [21793342] Ответить | Цитировать Сообщить модератору |
rdb_dev Member Откуда: с болот Сообщений: 3604 |
|
||
24 янв 19, 14:10 [21793358] Ответить | Цитировать Сообщить модератору |
hvlad Member Откуда: Сообщений: 11135 |
Лучше пишется. Лучше сопровождается. Лучше анализируется. Лучше контролирует связность подсистем\слоёв. Не создаёт бардак в виде косвенных, никому не известных зависимостей. Не делает из системы жёстко связанную головоломку. Рекурсия из вызовов триггеров - то ещё удовольствие. ...ещё 100500 разных лучше...
И от того страшного дня, когда по изменению спец поля в мастере нужно будет что-то сделать не только в дочерних таблицах (или не во всех) - и триггерная логика пойдёт лесом в сад. И процедурной логике, кстати, тоже не нужно знать что и где прикручено. Способ "прикручивания" - часть прикладной архитектуры, от этого не уйти. |
||||||||
24 янв 19, 14:12 [21793362] Ответить | Цитировать Сообщить модератору |
Dimitry Sibiryakov Member Откуда: Сообщений: 52116 |
Один из нас путает третью НФ со второй. В любом случае дублирование информации мастера с деталях и наоборот есть денормализация. Posted via ActualForum NNTP Server 1.5 |
||
24 янв 19, 14:12 [21793364] Ответить | Цитировать Сообщить модератору |
rdb_dev Member Откуда: с болот Сообщений: 3604 |
Поэтому я и не хочу тащить опорное поле из мастер таблицы в дочерние, так как это приводит к избыточности (денормализации), но, при этом, наступаю на грабли возможной несогласованности при изменении опорного поля в мастере. Вопрос, конечно, решаемый с помощью существующего функционала, как минимум, тремя способами, но все эти способы мне не очень нравятся и это моё "не очень нравятся", по всей видимости, теперь исключительно моя проблема. :) |
||
24 янв 19, 14:24 [21793378] Ответить | Цитировать Сообщить модератору |
Фэйтл Эра Member Откуда: Сообщений: 615 |
rdb_dev, ну ты хоть приведи пример, что ты за данные в деталях формируешь "на основе мастера". |
24 янв 19, 14:28 [21793381] Ответить | Цитировать Сообщить модератору |
rdb_dev Member Откуда: с болот Сообщений: 3604 |
|
||||
24 янв 19, 14:34 [21793388] Ответить | Цитировать Сообщить модератору |
Dimitry Sibiryakov Member Откуда: Сообщений: 52116 |
Чо? В каком месте выборки будет несогласованность: select мастер.опорное_поле, деталь.* from мастер, деталь Posted via ActualForum NNTP Server 1.5 |
||
24 янв 19, 14:40 [21793392] Ответить | Цитировать Сообщить модератору |
Симонов Денис Member Откуда: Рязань Сообщений: 10733 |
rdb_dev, не надо сравнивать огурцы с яблоками. Про объектно-ориентированной программирование написано множество книжек, как и что надо проектировать чтобы не было мучительно больно. Ещё есть паттерны проектирования. С триггерами совсем другая заморочка, ты не можешь сделать хороший триггер который в одном случае используется в другом нет без введения совершенно не нужных спец полей или глобальных сессионных переменных. Особенно весело отлаживать цепочку триггеров, когда изменение производится в одной таблицы, а ошибку ты поймал в триггере на другую таблицу, которая связана через 20 других триггеров. |
24 янв 19, 14:44 [21793401] Ответить | Цитировать Сообщить модератору |
rdb_dev Member Откуда: с болот Сообщений: 3604 |
|
||||
24 янв 19, 15:15 [21793469] Ответить | Цитировать Сообщить модератору |
Vlad F Member Откуда: Сообщений: 1335 |
rdb_dev, А если все таки так (следи за руками), - первоначальный Создатель мастера создает, среди прочего, первоначально пустую, SP БалансировкаВсевозможныхДеталей, помещает ее вызов в триггер на апдейт мастера и пока все. Затем последующие экземпляры SP БалансировкаКонкретнойДетали и последовательно помещают их вызовы в упомянутую "абстрактную" SP мастера, самого мастера и его самые ближние институты при этом уже никак не затрагивая. Ну и, типа, все, - все как ты хотел, без затрагивания непосредственно мастера, без "денормализации", дешево, надежно и практично.)) |
24 янв 19, 15:19 [21793479] Ответить | Цитировать Сообщить модератору |
rdb_dev Member Откуда: с болот Сообщений: 3604 |
Паттерны прекрасно выводятся из самой концепции ООП, но один сообразительный чувак подумал - "почему бы не срубить на этом бабла?", взял, да и классифицировал все возможные варианты, опубликовав их. Молодец, чо!... Кто успел, того и денежки. :) |
||
24 янв 19, 15:19 [21793483] Ответить | Цитировать Сообщить модератору |
rdb_dev Member Откуда: с болот Сообщений: 3604 |
Vlad F, это один из тех вариантов, который мне не нравиться. :) Нелаконично, что ли... |
24 янв 19, 15:23 [21793487] Ответить | Цитировать Сообщить модератору |
Dimitry Sibiryakov Member Откуда: Сообщений: 52116 |
Ну как я и говорил, нарушение второй НФ, которая запрещает одним полям быть функцией других полей. Выкидываешь их из деталь-таблицы, добавляешь f(x) в запрос и твои волосы становятся обратно шелковистыми. Posted via ActualForum NNTP Server 1.5 |
||
24 янв 19, 15:29 [21793505] Ответить | Цитировать Сообщить модератору |
rdb_dev Member Откуда: с болот Сообщений: 3604 |
Dimitry Sibiryakov, f(x) - условность, которая вообще может быть неким правилом для формирования графа самого "x". Если ты меняешь элемент графа, влекущего за собой проверку и/или пересчёт всех узлов графа, никакое вычисляемое поле тебе не поможет. |
24 янв 19, 15:34 [21793514] Ответить | Цитировать Сообщить модератору |
Vlad F Member Откуда: Сообщений: 1335 |
rdb_dev, У всякого, видишь ли, свой вкус: один любит арбуз, другой - свиной хрящик (с)))) Но не тащить же из за этого в привычный сервер всякие извраты. Тем более, что в нем сейчас много чего более полезного и по факту стандартного пока нет. |
24 янв 19, 15:34 [21793517] Ответить | Цитировать Сообщить модератору |
Топик располагается на нескольких страницах: ←Ctrl назад 1 .. 20 21 22 23 24 [25] 26 27 28 29 .. 55 вперед Ctrl→ |
Все форумы / Firebird, InterBase | ![]() |