Создание таблицы «Должности» с полями: Код_Должности (первичный ключ), Название_Должности, Оклад. Предоставляет информацию о должностях.
USE [KursProject]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Должности](
[Код_Должности] [int] IDENTITY(1,1) NOT NULL,
[Название_Должности] [nchar](15) NULL,
[Оклад] [money] NULL,
CONSTRAINT [PK_Должности] PRIMARY KEY CLUSTERED
(
[Код_Должности] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
Обоснование соответствия разработанной БД требованиям нормализации:
данная база данных соответствует 3 НФ, так как все таблицы имеют простые (неделимые) поля, которые функционально зависят от простых первичных ключей, а каждое не ключевое поле нетранзитивно зависит от первичного ключа и является взаимно-независимым по отношению к другим не ключевым полям.
Инструкции создания представлений на языке Transact-SQL:Отдел кадров (все данные о сотрудниках, отображение сведений о сотрудниках с определенными: ФИО, стажем работы).
Данные Отображение сведений обо всех сотрудниках: |
USE KursProject
GO
CREATE VIEW Сведения_обо_всех_сотрудниках
AS
SELECT Код_Сотрудника, ФИО, Пол, Дата_Рождения, Образование, Телефон, Адрес
FROM dbo.Сотрудники
Результат:
Предложены следующие операции обработки данных, требующие использования пользовательских функций трех типов: скалярной, табличных Inline и Multi-statement.
1. Скалерная функция.
Создали простую скалярную функцию которая подсчитывает сумму цен, занесенных в таблицу услуги.
Рисунок 1 – Создания и выполнения скалярной функции
2. Табличная Inline функция.
С помощью функции можно узнать всех сотрудников и занимаемые ими должности в заданный промежуток времени.
Рисунок 2 – Создания и выполнения табличной inline функции
3.Табличная Multi-statement функция.
С помощью функции можно узнать ФИО и образования персонала по заданному полу.
Рисунок 3 – Создания и выполнения табличной Multi-statement функции
Для разработанной БД предложены операции обработки данных, требующие использования локальных хранимых процедур. Разработать две хранимых процедуры и протестировать их работу.
С помощью первой хранимой процедуры можно узнать количество женщин среди сотрудников.
Рисунок 4 – Результат создания и выполнение первой хранимой процедуры
С помощью второй хранимой процедуры можно узнать список должностей, имеющих оклад больше или равен задаваемому (в нашем тесте пример оклада составлял «1000000»)
Рисунок 5 – Результат создания и выполнение второй хранимой процедуры
Для БД были разработаны следующие DML-триггеры.
Триггер InsteadofDelete для таблицы Услуги. Триггер выполняется вместо удаления записей из таблицы. Удаляемая запись переносится в таблицу «АрхивУслуг», которая предварительно создана (с такими же полями, как в таблицу «Услуги»)
CREATE TRIGGER InsteadofDelete ON Услуги
INSTEAD OF DELETE
AS
SET NOCOUNT OFF
INSERT INTO АрхивУслуг
SELECT Код_Услуги, Наименование, Новшества, Цена
FROM deleted
Delete Услуги where Код_Услуги in (select Код_Услуги from deleted)
Рисунок 6 – Удаления записи из таблицы «Услуги»
Рисунок 7 – Запись которая была удалена из таблиц «Услуги»
Триггер InsteadofInsert для таблицы Услуги. Триггер выполняется вместо добавления записей из таблицы. Если наименование добавляемой услуги совпадает с существующим в БД то это остановка не будет занесена в БД.
CREATE TRIGGER InsteadOfInsert on Услуги
INSTEAD OF INSERT
AS
SET NOCOUNT ON
IF (NOT EXISTS (SELECT P.Наименование
FROM Услуги P, inserted I
WHERE P.Наименование = I.Наименование))
INSERT INTO Услуги
SELECT Код_Услуги,Наименование,Новшества,Цена
FROM inserted
ELSE PRINT 'Такая услуга существует.'
Рисунок 8 – Попытка добавления остановки, которая существует
Вывод: Разработали серверную часть клиент-серверной информационной системы в заданной предметной области средствами СУБД MS SQL Server. Разработали и настроили свойства таблиц и представлений; Создали диаграмму БД; Создали триггеры, обеспечивающие целостность БД; Хранимые процедуры; Пользовательские функции различных типов.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.