- •Введение
- •1.2 Описание автоматизируемых функций (бизнес-процессов)
- •1.2.1 Перечень автоматизируемых функций
- •1.2.2 Функция 1 «Поступление»
- •1.2.3 Функция 2 «Реставрация»
- •1.2.4 Функция 3 «Экспозиция»
- •1.3 Первичное описание информационного обеспечения
- •1.4 Вывод
- •2.1.3 Функция 3 «Экспозиция»
- •2.2 Спецификации локальных ограничений и правил
- •2.3 Вывод
- •3.1.1 Функция 1 «Поступление»
- •3.1.2 Функция 2 «Реставрация»
- •3.1.3 Функция 3 «Экспозиция»
- •3.2 Спецификации локальных ограничений и правил
- •3.3 Вывод
- •4.1.3 Выявление дублирования атрибутов и связей
- •4.2 Синтез глобальной er-модели
- •4.2.1 Слияние эквивалентных сущностей
- •4.2.2 Синтез обобщающих сущностей и категорий
- •4.2.3 Устранение дублирования атрибутов и связей
- •4.2.4 Введение связей «многие ко многим»
- •4.3 Спецификации ограничений и правил
- •4.3 Вывод
- •5 Проектирование внутренней реляционной модели
- •5.1 Устранение подсущностей, категорий и явных связей
- •5.1.1 Устранение подсущностей и категорий
- •5.1.2 Устранение явных связей типа «один ко многим»
- •5.2 Спецификации ограничений и правил
- •5.4 Вывод
- •6 Проектирование моделей отображения
- •6.1 Разработка иерархий представлений
- •6.1.1 Функция 1 «Поступление»
- •6.1.2 Функция 2 «Реставрация»
- •6.1.3 Функция 3 «Экспозиция»
- •6.2 Разработка внутренних моделей представлений
- •6.2.1 Функция 1 «Поступление»
- •6.2.2 Функция 2 «Реставрация»
- •6.2.3 Функция 3 «Экспозиция»
- •6.3 Вывод
- •7 Разработка sql-кода базы данных
- •7.1 Sql-код создания таблиц
- •7.1.1 Создание столбцов таблиц
- •7.1.2 Создание ограничений уникальности
- •7.1.3 Создание ограничений атрибутов и кортежей
- •7.1.4 Создание ограничений ссылочной целостности
- •7.1.5 Создание триггеров базы данных
- •7.2 Sql-код создания представлений отображения
- •7.2.1 Представления отображения для функции 1
- •7.2.2 Представления отображения для функции 2
- •7.2.3 Представления отображения для функции 3
- •7.4 Вывод
- •8.1 Выбор ориентации внешних xml-представлений
- •8.2 Разработка xsd-схем внешних xml-документов
- •8.2.1 Xsd-схема для функции 1
- •8.2.2 Xsd-схема для функции 2
- •8.2.3 Xsd-схема для функции 3
- •8.3 Разработка аннотированных схем отображения
- •8.3.1 Схема отображения для функции 1
- •8.3.2 Схема отображения для функции 2
- •8.3.3 Схема отображения для функции 3
- •8.4 Вывод
- •Заключение
- •Список литературы
8.3 Разработка аннотированных схем отображения
В данном подразделе на основе разработанных XSD-схем строятся аннотированные схемы отображения для связи внешних XML-документов с таблицами и представлениями реляционной базы данных. Для этого XSD-схемы дополняются аннотациями, связывающими элементы и атрибуты внешних XML-документов с соответствующими им таблицами и атрибутами реляционной базы данных.
При программировании ориентировались на версию схем отображения, разработанную корпорацией Microsoft для СУБД SQL Server 2005, особенностью которой является отсутствие описания корневого элемента XML-документа (задается в DOM-объекте, вызывающем схему).
XML-код схем отображения для каждой из функций представлен ниже.
8.3.1 Схема отображения для функции 1
<?xml version="1.0" encoding="windows-1251"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:sql="urn:schemas-microsoft-com:mapping-schema">
<xsd:annotation>
<xsd:appinfo>
<sql:relationship name="поступление_объект_поступления"
parent="поступление"
parent-key="[код объекта]"
child="[объект поступления]"
child-key="[код объекта]"/>
<sql:relationship name="поступление_владелец_пост_объекта"
parent="поступление"
parent-key="[код клиента]"
child="[владелец пост объекта]"
child-key="[код клиента]"/>
<sql:relationship name="поступление_ответственный_за_поступление_сотрудник"
parent="поступление"
parent-key="[таб номер]"
child="[ответственный за поступление сотрудник]"
child-key="[таб номер]"/>
<sql:relationship name="объект_поступления_вид"
parent="[объект поступления]"
parent-key="[код вида]"
child="вид"
child-key="[код вида]"/>
<sql:relationship name="автор_объекта_автор"
parent="[автор объекта]"
parent-key="[код автора]"
child="автор"
child-key="[код автора]"/>
<sql:relationship name="автор_объекта_объект_поступления"
parent="[объект поступления]"
parent-key="[код объекта]"
child="[автор объекта]"
child-key="[код объекта]"/>
<sql:relationship name="хар-ка_объекта_объект_поступления"
parent="[объект поступления]"
parent-key="[код объекта]"
child="[хар-ка объекта]"
child-key="[код объекта]"/>
<sql:relationship name="хар-ка_объекта_хар-ка"
parent="[хар-ка объекта]"
parent-key="[код хар-ки]"
child="[хар-ка]"
child-key="[код хар-ки]"/>
<sql:relationship name="ответственный_за_поступление_сотрудник_сотрудник"
parent="[ответственный за поступление сотрудник]"
parent-key="[таб номер]"
child="сотрудник"
child-key="[таб номер]"/>
<sql:relationship name="ответственный_за_поступление_сотрудник_должность"
parent="[ответственный за поступление сотрудник]"
parent-key="[код должности]"
child="должность"
child-key="[код должности]"/>
</xsd:appinfo>
</xsd:annotation>
<xsd:element name="поступление" sql:relation="поступление" type="поступление-type"/>
<xsd:complexType name="поступление-type">
<xsd:sequence>
<xsd:element name="ответственный_за_поступление_сотрудник" sql:relation="[ответственный за поступление сотрудник]" sql:relationship="поступление_ответственный_за_поступление_сотрудник" type="ответственный_за_поступление_сотрудник-type" minOccurs="1" maxOccurs="1"/>
<xsd:element name="владелец_пост_объекта" sql:relation="[владелец пост объекта]" sql:relationship="поступление_владелец_пост_объекта" type="владелец_пост_объекта-type" minOccurs="1" maxOccurs="1"/>
<xsd:element name="объект_поступления" sql:relation="[объект поступления]" sql:relationship="поступление_объект_поступления" type="объект_поступления-type" minOccurs="1" maxOccurs="1"/>
</xsd:sequence>
<xsd:attribute name="рег_номер_поступления" sql:field="[рег номер поступления]" use="required"/>
<xsd:attribute name="дата" sql:field="[дата]" use="required"/>
<xsd:attribute name="таб_номер" sql:field="[таб номер]" use="required"/>
<xsd:attribute name="код_клиента" sql:field="[код клиента]" use="required"/>
<xsd:attribute name="код_объекта" sql:field="[код объекта]" use="required"/>
</xsd:complexType>
<xsd:complexType name="ответственный_за_поступление_сотрудник-type">
<xsd:sequence>
<xsd:element name="должность" sql:relation="должность" sql:relationship="ответственный_за_поступление_сотрудник_должность" type="должность-type" minOccurs="1" maxOccurs="1"/>
<xsd:element name="сотрудник" sql:relation="сотрудник" sql:relationship="ответственный_за_поступление_сотрудник_сотрудник" type="сотрудник-type" minOccurs="1" maxOccurs="1"/>
</xsd:sequence>
<xsd:attribute name="таб_номер" sql:field="[таб номер]" use="required"/>
<xsd:attribute name="код_должности" sql:field="[код должности]" use="required"/>
</xsd:complexType>
<xsd:complexType name="должность-type">
<xsd:attribute name="код_должности" sql:field="[код должности]" use="required"/>
<xsd:attribute name="назв_должности" sql:field="[назв должности]" use="required"/>
</xsd:complexType>
<xsd:complexType name="сотрудник-type">
<xsd:attribute name="таб_номер" sql:field="[таб номер]" use="required"/>
<xsd:attribute name="фио" sql:field="[фио]" use="required"/>
</xsd:complexType>
<xsd:complexType name="владелец_пост_объекта-type">
<xsd:attribute name="код_клиента" sql:field="[код клиента]" use="required"/>
<xsd:attribute name="фио_клиента" sql:field="[фио клиента]" use="required"/>
</xsd:complexType>
<xsd:complexType name="объект_поступления-type">
<xsd:sequence>
<xsd:element name="вид" sql:relation="вид" sql:relationship="объект_поступления_вид" type="вид-type" minOccurs="1" maxOccurs="1"/>
<xsd:element name="автор_объекта" sql:relation="[автор объекта]" sql:relationship="автор_объекта_объект_поступления" type="автор_объекта-type" minOccurs="1" maxOccurs="unbounded"/>
<xsd:element name="хар-ка_объекта" sql:relation="[хар-ка объекта]" sql:relationship="хар-ка_объекта_объект_поступления" type="хар-ка_объекта-type" minOccurs="1" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute name="код_объекта" sql:field="[код объекта]" use="required"/>
<xsd:attribute name="назв_объекта" sql:field="[назв объекта]" use="required"/>
<xsd:attribute name="код_вида" sql:field="[код вида]" use="required"/>
</xsd:complexType>
<xsd:complexType name="вид-type">
<xsd:attribute name="код_вида" sql:field="[код вида]" use="required"/>
<xsd:attribute name="назв_вида" sql:field="[назв вида]" use="required"/>
</xsd:complexType>
<xsd:complexType name="автор_объекта-type">
<xsd:sequence>
<xsd:element name="автор" sql:relation="автор" sql:relationship="автор_объекта_автор" type="автор-type" minOccurs="1" maxOccurs="1"/>
</xsd:sequence>
<xsd:attribute name="код_автора" sql:field="[код автора]" use="required"/>
<xsd:attribute name="код_объекта" sql:field="[код объекта]" use="required"/>
</xsd:complexType>
<xsd:complexType name="автор-type">
<xsd:attribute name="код_автора" sql:field="[код автора]" use="required"/>
<xsd:attribute name="фио_автора" sql:field="[фио автора]" use="required"/>
</xsd:complexType>
<xsd:complexType name="хар-ка_объекта-type">
<xsd:sequence>
<xsd:element name="хар-ка" sql:relation="[хар-ка]" sql:relationship="хар-ка_объекта_хар-ка" type="хар-ка-type" minOccurs="1" maxOccurs="1"/>
</xsd:sequence>
<xsd:attribute name="код_хар-ки" sql:field="[код хар-ки]" use="required"/>
<xsd:attribute name="код_объекта" sql:field="[код объекта]" use="required"/>
<xsd:attribute name="значение" sql:field="[значение]" use="required"/>
</xsd:complexType>
<xsd:complexType name="хар-ка-type">
<xsd:attribute name="код_хар-ки" sql:field="[код хар-ки]" use="required"/>
<xsd:attribute name="назв_хар-ки" sql:field="[назв хар-ки]" use="required"/>
</xsd:complexType>
</xsd:schema>