- •Лабораторные работы с базами данных лабораторная работа №5. Работа с базами данных
- •Экспорт xml данных во внешнюю бд
- •Импорт данных из бд
- •Импорт атрибутов, элементов и пропуски
- •Создание схемы бд
- •Создание xml схемы из бд ms Access
- •Создание xml схемы из бд ibm db2 (odbc)
- •Лабораторные работы по mapforce
- •Лабораторная работа № 6. Отображение схем и генерирование кода с помощью mapforce Установка среды отображения Создание компонента исходной схемы
- •Создание компонента целевой схемы
- •Отображение узлов схемы
- •Авто-отображение
- •Использование функций для отображения данных
- •Использование функций для объединения узлов
- •Отображение остальной части Личных данных
- •Фильтрация данных
- •Генерирование xslt 1.0/2.0 кода
- •Преобразование отчета личных расходов в отчет расходов компании
- •Множественные целевые схемы/документы
- •Создание второго целевого документа
- •Отфильтровывание данных non-travel
- •Определение множественных схем одинакового наименования для генерации кода
- •Генерирование программного кода для множественных целевых схем
- •Отображение множественных узлов-источников на один целевой узел
- •Создание отображений
- •Дублирование входных узлов
- •Лабораторная работа № 7. Отображение базы данных на схему
- •Создание компонента бд в MapForce
- •Отображение данных бд Вставка целевой схемы
- •Отображение данных бд на схему в MapForce
- •Создание кода Java и результирующего xml файла
- •Отображение множества иерархических таблиц на выходной xml файл
- •Отображение множества плоских таблиц на один выходной xml файл
- •Отображение и корневые элементы выходных документов
- •Фильтрация бд по дате
- •Рекомендации для использования компонента «filter»
- •Лабораторная работа № 8. Отображение схемы на базу данных
- •Установка xml для отображения на бд
- •Компоненты и отношения между таблицами
- •Действия бд: insert Вставка новой записи в таблицу
- •Вставка таблиц и связанных дочерних таблиц.
- •Действия бд: Update Первый пример
- •Второй пример
- •Комбинации Update if... С удалением дочерних данных
- •Действия бд: Delete
- •Установки ключей бд
- •Действия таблиц бд и обработка транзакций
Отображение множества плоских таблиц на один выходной xml файл
Предпосылки схемы:
Структура схемы должна соответствовать спецификации SQL/XML.
XML Spy имеет возможность создать SQL/XML conformant (преобразованный) файл от SQL БД, используя Convert | Create Database Schema. Вы можете затем использовать эту схему как целевую в MapForce.
В этом случае каждое наименование таблицы отображается на дочерний элемент строки того же наименования в схеме, т.е. Address отображается на строку дочернего элемента Address.
Пожалуйста, обратите внимание, что вышеупомянутый пример DB_Altova_SQLXML.mfd, не сохраняет отношения таблицы, поскольку отображения созданы от нескольких различных корневых таблиц.
Отображение и корневые элементы выходных документов
При создании отображения к корневому элементу выходной XML-схемы удостоверьтесь, что только один элемент или запись может быть назначен в выходном документе в качестве корневого.
Используйте фильтр для ограничения отображаемых данных до одного элемента или записи.
В примере, приведенном ниже, FK проверяется на равенство «1», и только при этом условии некий элемент Altovы будет передан некоему элементу целевого документа.
Если при этом не выявляется ни один элемент исходной БД, то корневой элемент вставляется в целевую схему автоматически.
Если вы не ограничиваете корневой элемент целевой схемы, то все элементы записи источника будут вставлены в первый корневой элемент.
Фильтрация бд по дате
Приведенный ниже пример показывает, как вы можете использовать фильтр для отбора записей БД по дате.
Поле Established определено в БД как поле типа Date/Time.
Дата для сравнения вводится как постоянный компонент типа string.
Если дата > 1995-03-03, то в этом случае данные передаются фильтром целевому файлу.
Рекомендации для использования компонента «filter»
Компонент filter является очень важным при выполнении запросов БД, поскольку это позволяет эффективно воздействовать на большое число данных. При работе с таблицами БД, содержащими тысячи и более строк, фильтры сокращают объем доступных данных и являются эффективным средством извлечения данных. Использование фильтров влияет на скорость генерации отображения.
В этом разделе ознакомимся с методами, которые позволяют вам оптимизировать доступ к данным и вообще ускорить процесс отображения.
Поэтому используйте компоненты filter при любой возможности:
Избегайте связывания компонентов фильтра – Каждый фильтр ведет к образованию цикла, обращаясь к источнику n раз. Когда вы связываете два фильтра то получаем nn циклов.
Решение: используйте компоненты «logical-and» для комбинирования логических выражений двух фильтров. Результатом является один фильтр с n циклами.
Связывайте параметры "on-true/on-false" с родительскими узлами, если это возможно, вместо непосредственного связывания с дочерними узлами – компоненты фильтра работают лучше, когда они связаны с родительскими узлами, содержащими дочерние узлы, а не с каждым дочерним узлом непосредственно. Поэтому булево выражение фильтра предпочтительнее родительского элемента, зацикленного через дочерние элементы. Использование фильтров для отображения из таблицы БД будет генерировать:
SELECT * FROM table WHERE <expression> если отображается родительский узел;
SELECT * FROM table, а затем выполняется обработка каждой строки, если отображаются дочерние узлы.
Связывайте параметры "on- false" для отображения дополнительного набора узлов, порожденных параметром on-true – соединение этого параметра обеспечивает вам быстрый доступ к набору узлов, определенных текущим отображением.
Не используйте фильтры для отображения к дочерним узлам, если отображены родительские узлы – использование фильтра для отображения от исходного к целевому родителю вызывают применение таких же фильтров для дочерних элементов. Фильтр не должен использоваться для отображения дочерних узлов, если он использован для отображения родительских узлов. Поэтому вы можете отображать дочерние данные непосредственно.
Используйте «Priority context» для упорядочения по приоритетам несвязанных элементов – отображения всегда выполняются сверху вниз; если цикл/поиск выполняется на двух таблицах, то каждый цикл обрабатывается последовательно. Если при отображении несвязанных данных не установлен приоритетный контекст, то MapForce не знает, какой цикл должен выполняться сначала, поэтому автоматически выбирает первую таблицу.
