Гость
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Прошу подсказать варианты решения задачки / 9 сообщений из 9, страница 1 из 1
29.06.2021, 21:23
    #40080804
Титов Артем
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу подсказать варианты решения задачки
Добрый день!

Есть множество таблиц хранения анкетных данных (по одной на каждый тип анкеты). Данные приходят из мобильных устройств.
Также есть такое же множество таблиц для хранения первоначальных анкетных данных. Во второй группе таблиц правка данных по логике системы не подразумевается.

Приведу пример: Пришли данные в таблицу ANK_DATA1_TBL, в триггере BEFORE INSERT данные скопировались в таблицу ANK_DATA1_ORG_TBL (состав полей в парных таблицах всегда одинаков). В итоге, когда в процессе работы осуществляется правка данных в первой таблице, всегда можно посмотреть, какие данные пришли изначально, это видно во второй таблице.

Но сейчас я пишу для каждой таблицы отдельную процедуру вставки данных во вторую таблицу. В процедуру передается параметр типа ROWTYPE.

Задачка такая: сделать универсальную процедуру наполнения парных таблиц для хранения исходных данных, чтобы не делать такую процедуру для каждой. Я подумал насчет динамического SQL, но не получается из-за всегда разного ROWTYPE. Есть ли еще какие-то варианты, как думаете?
...
Рейтинг: 0 / 0
29.06.2021, 21:51
    #40080809
dmdmdm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу подсказать варианты решения задачки
Задачка такая: сделать универсальную процедуру наполнения парных таблиц для хранения исходных данных, чтобы не делать такую процедуру для каждой.

Задачка хреновая из-за хреновой архитектуры. Нужно нормализовать данные.

Я подумал насчет динамического SQL, но не получается из-за всегда разного ROWTYPE.

Можно сделать генерацию триггеров на основе словаря (*_tab_columns), но опять - хреново из-за см. п. 1.
...
Рейтинг: 0 / 0
29.06.2021, 22:24
    #40080814
SQL*Plus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу подсказать варианты решения задачки
dmdmdm
Задачка такая: сделать универсальную процедуру наполнения парных таблиц для хранения исходных данных, чтобы не делать такую процедуру для каждой.


Задачка хреновая из-за хреновой архитектуры. Нужно нормализовать данные.

А конкретнее?
Что есть "нормализация" в этом случае?
Какую избыточность она должна устранить?
...
Рейтинг: 0 / 0
29.06.2021, 22:36
    #40080816
Титов Артем
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу подсказать варианты решения задачки
SQL*Plus
dmdmdm
пропущено...


Задачка хреновая из-за хреновой архитектуры. Нужно нормализовать данные.

А конкретнее?
Что есть "нормализация" в этом случае?
Какую избыточность она должна устранить?


В таблицах нет избыточности для нормализации. Обычный набор данных, значения полей которого по сути не делимы, заполняются в мобильном приложении. Типы данных либо VARCHAR2 (для комментариев), либо NUMBER.

Альтернативным вариантом могло бы быть НЕ использование второй таблицы, а вставка дублирующей записи в первую же с указанием в качестве PARENT_ID идентификатора первоначальной записи. В итоге на каждую запись в таблице была бы ее неизменяемая копия.

Но процедуру дублирования записи тоже надо как-то универсальной сделать.
...
Рейтинг: 0 / 0
29.06.2021, 23:05
    #40080823
Vadim Lejnin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу подсказать варианты решения задачки
Титов Артем,
Версионность данных не рассматриваете?

При правке запись не удаляется,а копируется и увеличивается номер версии
Тогда видна вся история правок
...
Рейтинг: 0 / 0
30.06.2021, 08:53
    #40080839
Титов Артем
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу подсказать варианты решения задачки
Vadim Lejnin
Титов Артем,
Версионность данных не рассматриваете?

При правке запись не удаляется,а копируется и увеличивается номер версии
Тогда видна вся история правок


Такой подход для данного бизнеса избыточен.
...
Рейтинг: 0 / 0
30.06.2021, 09:20
    #40080841
dmdmdm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу подсказать варианты решения задачки
Что есть "нормализация" в этом случае?

Много таблиц, и много журналов.

В любых учетных системах множество разных документов, но, как правило, делают всего одну-две таблицы, и один-два журнала.
Соответственно, как триггеры написали, так они годами и работают, а не "новый документ - давайте новый триггер напишем".
...
Рейтинг: 0 / 0
30.06.2021, 09:27
    #40080843
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу подсказать варианты решения задачки
dmdmdm
В любых учетных системах множество разных документов, но, как правило, делают всего одну-две таблицы, и один-два журнала.
Уверен? - Назови процент.
...
Рейтинг: 0 / 0
30.06.2021, 09:34
    #40080844
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу подсказать варианты решения задачки
генерить триггер програмно

ps
для динамического SQL можно передавать имя таблицы и ровид записи

.....
stax
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Прошу подсказать варианты решения задачки / 9 сообщений из 9, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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