Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
БАЗЫ ДАННЫХ ПРИМЕР.doc
Скачиваний:
6
Добавлен:
20.08.2019
Размер:
875.01 Кб
Скачать

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 [хар-ка объекта].[код хар-ки],[хар-ка объекта].[значение],[хар-ка].[назв хар-ки]