15.11.2007, 15:20 | #1 |
Участник
|
Дублирование записи
Есть таблица A с тремя полями (поле 1, поле 2, поле 3). Так же есть 5-ть таблиц, каждая из которых имеет 2 поля (поле 2, поле 3). Когда происходит операция записи, изменения или удаления в таблице A, необходимо отображать данное действие в одной из 5-и таблиц (выбор таблицы идет в зависимости от значения в поле 1). Каким образом лучше организовать данный процесс?
Можно ли рассматривать в качестве варианта создание класса для каждой таблицы, где будут реализовываться соответсвующие операции и с помощью фабрики создавать экземпляр нужного в зависимости от поля 1 таблицы A? |
|
15.11.2007, 15:28 | #2 |
SAP
|
А по моему данную задачу проще решить с помощью созданной Map для 5-ти таблиц, ну и одного оператора switch
|
|
15.11.2007, 15:32 | #3 |
Участник
|
Каким образом?
|
|
15.11.2007, 15:43 | #4 |
SAP
|
1. Создаем Map которая должна объеденить 5-ть наших таблиц.
2. В Map создаем метод для вставки, обновления и удаления. 3. А дальше на основании вашего параметра 1, необходимо для одной из 5-ти таблиц вызвать нужный метод Map-а |
|
|
За это сообщение автора поблагодарили: Axaptus (1). |
15.11.2007, 15:58 | #5 |
Участник
|
так switch в этом случае будет в каждом из методов.
|
|
15.11.2007, 16:02 | #6 |
SAP
|
Цитата:
так switch в этом случае будет в каждом из методов.
|
|
15.11.2007, 16:19 | #7 |
Участник
|
Похоже что я недопонимаю, попробую объяснить свое виденье ситуации.
Итак, допустим происходит следующая последовательность действий: 1. пользователь через форму создает новую строку в таблице A тогда 2. я отлавливаю данное событие в методе initValue таблицы A и запускаю метод Map-а (допустим createCopy(ТаблицаA _таблицаA)), внутри которого через switch определяю в какую таблицу следует производить запись, т.е. \Map\method\createCopy(ТаблицаA _таблицаA) { ... switch (_таблицаA::поле1) { case enum_тип_поля1::значение1: { ... break; } ... } ... } Это соответвует вашему алгоритму? |
|
15.11.2007, 16:26 | #8 |
SAP
|
Цитата:
Это соответвует вашему алгоритму?
|
|
15.11.2007, 16:40 | #9 |
Участник
|
Ясно. Тогда вопрос другого плана: Как программно описать эту взаимосвязь между findTable и Map? Т.е. как нужно передать в Map полученную в findTable() таблицу? Не могли бы вы написать небольшой пример с реализацией findTable и связкой с Map допустим для добавления? Или дать ссылку на схожую ситуацию?
|
|
15.11.2007, 16:51 | #10 |
SAP
|
вот пожалуйста разбирайтесь
\Data Dictionary\Tables\LedgerBudget\Methods\insert \Data Dictionary\Tables\ForecastSales\Methods\update \Data Dictionary\Maps\BudgetMap |
|
15.11.2007, 17:21 | #11 |
MCTS
|
Господа, мне кажется вы себе сильно усложняете жизнь.
Все можно реализовать гораздо проще. В таблице А перекрыть 3 метода: insert() update() delete() И в каждом из этих методов вносить изменения в эти 5 таблиц в зависимости от поля поле1.
__________________
С уважением, Павел Цераниди. На пути к совершенству нет конца. Каждое новое достижение является отправной точкой для следующего крупного шага. |
|
15.11.2007, 17:26 | #12 |
SAP
|
Цитата:
Господа, мне кажется вы себе сильно усложняете жизнь.
Все можно реализовать гораздо проще. В таблице А перекрыть 3 метода: insert() update() delete() И в каждом из этих методов вносить изменения в эти 5 таблиц в зависимости от поля поле1. Цитата:
Можно ли рассматривать в качестве варианта создание класса для каждой таблицы, где будут реализовываться соответсвующие операции и с помощью фабрики создавать экземпляр нужного в зависимости от поля 1 таблицы A?
|
|
16.11.2007, 12:33 | #13 |
Участник
|
Не, ребят, там только через Map или фабрику, просто потом все это завязано на дереве иначе теряется всякая гибкость.
|
|