- •2008.654600.Бд.Кр.Пз асои-331.Максютова
- •Направление 654600 (230100) – Информатика и вт
- •2008.654600.Бд.Кр.Пз асои-331.Максютова
- •Оценка ________________ Исполнитель
- •Содержание
- •Раздел 7 посвящен разработке sql-моделей базы данных. Здесь создается sql-код для таблиц, триггеров и виртуальных представлений базы данных.
- •1 Описание проблемной области
- •1.2 Описание автоматизируемых функций (бизнес-процессов)
- •1.2.1 Перечень автоматизируемых функций
- •1.2.2 Функция 1 «Поступление»
- •1.2.3 Функция 2 «Реставрация»
- •1.2.4 Функция 3 «Экспозиция»
- •1.3 Первичное описание информационного обеспечения
- •1.4 Вывод
- •2 Проектирование внешних иерархических моделей
- •2.1 Составление внешних иерархических моделей
- •2.1.1 Функция 1 «Поступление»
- •2.1.2 Функция 2 «Реставрация»
- •2.1.3 Функция 3 «Экспозиция»
- •2.2 Спецификации локальных ограничений и правил
- •2.3 Вывод
- •3.1 Нормализация локальных er-моделей
- •3.1.1 Функция 1 «Поступление»
- •3.1.2 Функция 2 «Реставрация»
- •3.1.3 Функция 3 «Экспозиция»
- •3.2 Спецификации локальных ограничений и правил
- •3.3 Вывод
- •4 Проектирование глобальной er-модели
- •4.1 Анализ дублирования в локальных моделях
- •4.1.1 Выявление эквивалентных сущностей
- •4.1.2 Выявление подсущностей и категорий сущностей
- •4.1.3 Выявление дублирования атрибутов и связей
- •4.2 Синтез глобальной er-модели
- •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.1 Создание столбцов таблиц
- •7.1.2 Создание ограничений уникальности
- •7.1.3 Создание ограничений атрибутов и кортежей
- •7.1.4 Создание ограничений ссылочной целостности
- •7.1.5 Создание триггеров базы данных
- •7.2.1 Представления отображения для функции 1
- •7.2.2 Представления отображения для функции 2
- •7.2.3 Представления отображения для функции 3
- •7.4 Вывод
- •8.1 Выбор ориентации внешних xml-представлений
- •8.2 Разработка xsd-схем внешних xml-документов
- •8.3 Разработка аннотированных схем отображения
- •8.3.1 Схема отображения для функции 1
- •8.3.2 Схема отображения для функции 2
- •8.3.3 Схема отображения для функции 3
- •8.4 Вывод
- •Заключение
- •Список литературы
7.1.5 Создание триггеров базы данных
Для создания триггеров базы данных применяются SQL-операторы CREATE TRIGGER. Они обеспечивают реализации нестандартных ограничений и операционных правил, специфицированных на предыдущем этапе в таблицах 5.4–5.5. При программировании триггеров ориентировались на диалект Transact-SQL для Microsoft SQL Server 2005.
По согласованию с руководителем проекта для реализации были выбран один триггер базы данных, а именно:
CREATE TRIGGER [персонал_сотрудник]
ON[персонал]FOR INSERT,UPDATE AS
DECLARE
@TabNomer CHAR (6)
BEGIN TRANSACTION
SELECT @ TabNomer = [таб номер]
FROM INSERTED
IF NOT EXISTS (
SELECT*FROM [сотрудник]
WHERE [таб номер] = @TabNomer)
BEGIN
ROLLBACK TRANSACTION
RAISERROR('Несуществующий сотрудник',16,1)
END
ELSE
BEGIN
COMMIT TRANSACTION
END
7.2 SQL-код создания представлений отображения
В данном подразделе в соответствии со способами и формами представлений на основе модели соединения таблиц записываются SQL-операторы создания виртуальных таблиц (представлений) CREATE VIEW ихранимых процедур CREATE PROCEDURE, которые обеспечивают реализацию внешних представлений базы данных, соответствующих разработанным моделям отображения (см. разд. 6 и документ2008.654600.БД.КР.056.МО«Модели отображения»). Сделан следующий выбор между виртуальными таблицами и хранимыми процедурами при задании представлений отображения:
– для функции 1 «Поступление», требующей вычисление виртуального атрибута, — на основе виртуальных таблиц;
– для функции 2 «Реставрация» — на основе хранимых процедур;
– для функции 3 «Экспозиция» — на основе виртуальных таблиц (для корневого представления) и хранимых процедур (для остальных представлений).
При программировании ориентировались на диалект Transact-SQL Microsoft SQL Server 2005. Результаты приведены ниже для отдельных функций.
7.2.1 Представления отображения для функции 1
Здесь представлены SQL-операторы CREATE VIEW, предназначенные для создания представлений отображения для функции 1 «Поступление» в соответствии с разработанными концептуальными моделями отображения (см. разд. 6.2.1). Все отображения для этой функции построены в виде виртуальных таблиц (View):
create view [dbo].VПоступление as
select [поступление].[рег номер поступления],[поступление].[дата],[поступление].[код объекта],[поступление].[код клиента],[поступление].[таб номер],[объект поступления].[назв объекта],[объект поступления].[код вида],[вид].[назв вида],[владелец пост объекта].[ФИО клиента],[ответственный за поступление сотрудник].[код должности], [сотрудник].[фио],[должность].[назв должности]
from
(((((
[поступление] inner join [объект поступления]
on [объект поступления].[код объекта]=[поступление].[код объекта])
inner join [вид]
on [вид].[код вида]=[объект поступления].[код вида])
inner join [владелец пост объекта]
on [владелец пост объекта].[код клиента]=[поступление].[код клиента])
inner join [ответственный за поступление сотрудник]
on [ответственный за поступление сотрудник].[таб номер]=[поступление].[таб номер])
inner join [сотрудник]
on [сотрудник].[таб номер]=[поступление].[таб номер])
inner join [должность]
on [должность].[код должности]=[ответственный за поступление сотрудник].[код должности]
group by [поступление].[рег номер поступления],[поступление].[дата],[поступление].[код объекта],[поступление].[код клиента],[поступление].[таб номер],[объект поступления].[назв объекта],[объект поступления].[код вида],[вид].[назв вида],[владелец пост объекта].[ФИО клиента],[ответственный за поступление сотрудник].[код должности], [сотрудник].[фио],[должность].[назв должности]
create view [dbo].VАвторобъекта as
select [автор объекта].[код автора],[автор].[ФИО автора]
from
[автор объекта] inner join [автор]
on [автор].[код автора]=[автор объекта].[код автора]
group by [автор объекта].[код автора],[автор].[ФИО автора]
create view [dbo].VХаркаобъекта as
select [хар-ка объекта].[код хар-ки],[хар-ка объекта].[значение],[хар-ка].[назв хар-ки]
from
[хар-ка объекта] inner join [хар-ка]
on [хар-ка].[код хар-ки]=[хар-ка объекта].[код хар-ки]
group by [хар-ка объекта].[код хар-ки],[хар-ка объекта].[значение],[хар-ка].[назв хар-ки]