Разработка базы данных и серверной части информационной системы для предметной области "Театр"
Реализация базы данных и серверной части информационной системы склада средствами СУБД Microsoft SQL Server. Анализ предметной области, информационных задач, пользовательской системы. Программа реализации проекта. Выработка требований и ограничений.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 15.11.2015 |
Размер файла | 2,4 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Реферат
Пояснительная записка содержит __ листов, 37 рисунков, 6 таблиц, 5 использованных источников и 4 приложения.
MS SQL SERVER 2008, СИСТЕМЫ УПРАВЛЕНИЯ БАЗАМИ ДАННЫХ (СУБД), ТАБЛИЦЫ, ЗАПРОСЫ, ИНФОРМАЦИОННАЯ СИСТЕМА, ПРЕДМЕТНАЯ ОБЛАСТЬ.
Объектом разработки является база данных и серверная часть информационной системы, созданной с использованием средств, представляемых современными СУБД реляционного типа, для предметной области "Театр".
Цель работы - разработка базы данных и серверной части информационной системы для предметной области "Театр"
Полученные результаты: в процессе разработки проводилось изучение основных средств, представляемых средой MS SQL SERVER 2008, и на их основе разработана и отлажена программа создания базы данных и серверной части информационной системы.
Оглавление
- Введение
- 1. Реализация базы данных и серверной части информационной системы склада средствами СУБД Microsoft SQL Server
- 1.1 Анализ предметной области
- 1.2 Анализ информационных задач и круга пользовательской системы
- 1.3 Выработка требований и ограничений
- 1.4 Проектирование базы данных
- 1.5 Программа реализации проекта базы данных
- 1.6 Разработка хранимых процедур для поддержки сложных ограничений целостности в базе данных
- 1.7 Разработка триггеров для поддержки сложных ограничений целостности в базе данных
- 1.8 Запросы
- 1.9 Представления
- Заключение
- Список использованных источников
- Приложения
Введение
Практически в любой сфере деятельности человек работает с информацией, которую нужно как-то изменять, организовывать её сбор, хранение, обработку. А для поддержки подобных операций с информацией существует такой механизм, как система управления базами данных (СУБД).
База данных - набор сведений, хранящихся некоторым упорядоченным способом. Но в ней нет смысла без (СУБД).
СУБД - совокупность языков и программных средств, которая осуществляет доступ к данным, позволяет их создавать, менять, удалять.
В ходе выполнения курсовой работы была разработана и реализована база данных и серверная часть информационной системы "Театр" по средствам СУБД Microsoft SQL Server 2008. Microsoft SQL Server - СУБД, разработанная корпорацией Microsoft, работающая с языком запросов Transact - SQL, позволяющая работать в сфере баз данных и анализа данных.
SQL (Structured Query Language) - структурированный язык запросов, основной задачей которого является представление краткого способа считывания и записи информации в БД, являющейся набором связанных данных сохраняемых в таблицах.
база программа серверный пользовательский
1. Реализация базы данных и серверной части информационной системы склада средствами СУБД Microsoft SQL Server
1.1 Анализ предметной области
База данных создается для обслуживания сотрудников и посетителей театра. Поэтому БД должна содержать как публичные, так и секретные для посетителей данные, к которым могут иметь доступ только сотрудники театра. БД должна содержать информацию о спектаклях, которые показывает этот театр, данные об актерах и их актерских званиях. Так же БД должна содержать информацию об актерских занятостях в различных спектаклях.
В соответствии с предметной областью система строится с учетом следующих особенностей:
1) Каждый спектакль имеет уникальный номер и название;
2) Каждый актер имеет свой уникальный номер и свой уникальный актерский стаж;
3) Актеры играют в разных спектаклях, при этом фиксируется уникальный номер актерской занятости;
4) Каждое актерское звание имеет уникальный номер и свое название;
5) Каждый спектакль имеет жанр, а каждый жанр в свою очередь имеет уникальный номер и название.
Выделим следующие базовые сущности нашей области:
1) Актеры (Код актера, Фамилия, Имя, Отчество, Код звания, Стаж)
2) Спектакли (Код спектакля, Название, Год постановки, Код жанра, Бюджет)
3) Занятость актеров (Код занятости, Код актера, Код спектакля, Роль)
4) Звание (Код звания, Название)
5) Жанр (Код жанра, Название жанра).
1.2 Анализ информационных задач и круга пользовательской системы
Система создается для обслуживания следующих пользователь:
1) Актеры;
3) Посетители театра.
Функциональные возможности:
1) Ведение БД (запись, чтение, удаление, модификация);
2) Обеспечение логической непротиворечивости БД;
3) Реализация наиболее часто встречающихся запросов и представлений для пользователей в готовом виде;
4) Реализация хранимых процедур и триггеров для поддержания сложных ограничений целостности в БД.
1.3 Выработка требований и ограничений
Основные ограничения целостности:
1) Значения всех числовых атрибутов не должны быть отрицательными и ограничены значениями из соображений логики функций, которые она выполняют.
· Коды, являющиеся первичными ключами для каждой сущности, имеют ограничения от 0001 до 9999 или от 200000 до 2000000000.
· Даты начала проката спектаклей ограничены по году от 1960 до 2030.
· Жанры спектаклей ограничены по номеру от 1 до 6.
2) Символьные атрибуты должны выполнять все требования для функции, которую они выполняют
· Названия имеют 30-50 символов кириллицы, пробел, запятая, дефис.
1.4 Проектирование базы данных
Диаграмма БД
Рисунок 1 - Структура БД
Таблица 1. Отношение Занятости актеров.
Имя столбца |
Содержательное описание |
Тип данных |
Размерность |
Область допустимых значений |
Возможность значения Null |
Роль |
Пример |
|
Id Actor_Employment |
Код занятости актера |
Целый |
4 |
0001-9999 |
нет |
PK |
15 |
|
Id Actor |
Код актера |
Целый |
4 |
0001-9999 |
нет |
24 |
||
Id Representation |
Код спектакля |
Целый |
4 |
0001-9999 |
нет |
457 |
||
Role |
Роль |
Символьный |
50 |
`А-я' |
нет |
Ромео |
Таблица 2. Отношение Звания.
Имя столбца |
Содержательное описание |
Тип данных |
Размерность |
Область допустимых значений |
Возможность значения Null |
Роль |
Пример |
Примечание |
|
Id_Rank |
Код звания |
Целый |
1 |
1-3 |
нет |
PK |
2 |
||
Title_Rank |
Название звания |
Символьный |
50 |
`А-я' |
нет |
Заслу- женный артист |
Таблица 3. Отношение Актеры.
Имя столбца |
Содержательное описание |
Тип данных |
Размерность |
Область допустимых значений |
Возможность значения Null |
Роль |
Пример |
Примечание |
|
Id_Actor |
Код актера |
Целый |
4 |
0001-9999 |
нет |
PK |
4764 |
||
Surname |
Фамилия |
Символьный |
30 |
`А-я', `-' |
нет |
Иванов |
|||
First_Name |
Имя |
Символьный |
30 |
`А-я' |
нет |
Иван |
|||
Last_Name |
Отчество |
Символьный |
30 |
`А-я' |
нет |
Иванович |
|||
Id_Rank |
Код звания актера |
Целый |
1 |
1-3 |
нет |
FK |
3 |
||
Expirience |
Дата начала выступлений в театре |
Дата |
10 |
01.01.1930 - 31.12.2013 |
нет |
20.051997 |
Таблица 4. Отношение Жанры.
Имя столбца |
Содержательное описание |
Тип данных |
Размерность |
Область допустимых значений |
Возможность значения Null |
Роль |
Пример |
Примечание |
|
Id_Genre |
Код жанра |
Целый |
1 |
1-9 |
нет |
PK |
13 |
||
Title_Genre |
Название жанра |
Символьный |
25 |
`А-я' |
нет |
Драма |
Таблица 5. Отношение Спектакли.
Имя столбца |
Содержательное описание |
Тип данных |
Размерность |
Область допустимых значений |
Возможность значения Null |
Роль |
Пример |
Примечание |
|
Id_Representation |
Код спектакля |
Целый |
5 |
00001-99999 |
нет |
PK |
3690 |
||
Title_Representation |
Название |
Символьный |
50 |
`А-я' `,' `-' |
нет |
Красная шапочка |
|||
Year |
Год постановки |
Целый |
4 |
1930-2030 |
нет |
2001 |
|||
Id_Genre |
Код жанра |
Целый |
1 |
1-9 |
нет |
FK |
2 |
||
Budget |
Бюджет |
Целый |
10 |
20000-9999999999 |
нет |
1650000 |
1.5 Программа реализации проекта базы данных
Программная реализация проекта базы данных выполнена с помощью операторов языка SQL: USE, CRETE, DROP, UPDATE, ALTER, INSERT
Текст программы создания базы данных приведён в приложении А.
Для спроектированной базы данных средствами СУБД Microsoft SQL Server 2008 построена диаграмма, которая приведена в приложении Б.
Текст программы ввода тестовых данных приведён в приложении В.
1.6 Разработка хранимых процедур для поддержки сложных ограничений целостности в базе данных
Для облегчения работы с БД и реализации сложных ограничений были разработаны следующие процедуры:
1. Процедура без параметров.
Процедура выводит информацию об актерской династии Исаковых.
create Procedure AllActors
As Select Actors. Surname As "Фамилия", Actors. First_Name As "Имя", Actors. Last_Name As "Отчество",
Actors. Expirience As "Стаж", Ranks. Title_Rank As "Звание" From Actors Inner Join Ranks ON Actors. ID_Rank = Ranks. ID_Rank
Where Actors. Surname = 'Исаков';
Обращение к процедуре:
execute AllActors;
Рисунок 2
2. Процедура с параметром.
Процедура для получения данных об актеров по званию.
create procedure AllActorsSelect
@actor_rank char (16)
AS
Select Actors. Surname As "Фамилия", Actors. First_Name As "Имя", Actors. Last_Name As "Отчество",
Actors. Expirience As "Стаж", Ranks. Title_Rank As "Звание" From Actors, Ranks
Where Actors. ID_Rank = Ranks. ID_Rank And Ranks. Title_Rank In
(Select Title_Rank From Ranks
Обращение к процедуре:
execute AllActorsSelect'Артист';
Рисунок 3
3. Процедура с параметрами.
Процедура для получения информации об актере по фамилии и стажу.
create procedure AllActorsData_Actor
@actor_expirience date, @actor_surname char (40)
AS Select Actors. Surname As "Фамилия", Actors. First_Name As "Имя", Actors. Last_Name As "Отчество",
Actors. Expirience As "Стаж", Ranks. Title_Rank As "Звание" From Actors Inner Join Ranks ON Actors. ID_Rank = Ranks. ID_Rank
Where Actors. Expirience = @actor_expirience and Actors. Surname = @actor_surname;
Обращение к процедуре:
execute AllActorsData_Actor '19900112', 'Сидоров';
Рисунок 4
4. Процедура с параметром и значением по умолчанию.
Процедура поиска актеров по маске.
create procedure AllActorsDefaultData
@mask varchar (40) = '%', @ranktitle varchar (40) = '%'
As Select Actors. Surname As "Фамилия", Actors. First_Name As "Имя", Actors. Last_Name As "Отчество",
Actors. Expirience As "Стаж",
Ranks. Title_Rank As "Звание" From Actors, Ranks
Where (Surname like @mask) and (Actors. ID_Rank = Ranks. ID_Rank) and (Title_Rank like @ranktitle);
Обращение к процедуре:
execute AllActorsDefaultData;
Рисунок 5
execute AllActorsDefaultData 'Ше%';
Рисунок 6
execute AllActorsDefaultData '%г%', 'Народный%';
Рисунок 4
5. Процедура с входными и выходными значениями.
Процедура для вывода количества актеров определенного звания.
create procedure AmountActors
@number Int Output,
@rank varchar (40)
As Select @number = Count (*)
From Actors Inner Join Ranks On (Ranks. ID_Rank = Actors. ID_Rank)
And (Ranks. Title_Rank = @rank);
Обращение к процедуре:
Declare @out_num int
execute AmountActors @out_num OUTPUT, 'Народный артист'
Print 'Колво актеров: ' Print CAST (@out_num as Int);
Рисунок 8
6. Использование вложенных процедур.
Процедура для вывода жанра спектакля и ролей в спектакле по названию спектакля.
Процедура определения жанра спектакля:
create procedure GenreRepresentation
@representation varchar (40),
@genre varchar (40) OUTPUT
As
Select @genre = Genres. Title_Genre
From Genres, Representations
Where (Representations. ID_Genre = Genres. ID_Genre)
and (Representations. Title_Representation = @representation);
Процедура определения жанра спектакля и его ролей:
create procedure GenreRepresentation_Roles
@representation varchar (40),
@genre varchar (40) OUTPUT,
@role_ varchar (40) OUTPUT
As
Declare @R_genre varchar (40) Select @R_genre = Genres. Title_Genre,
@role_ = Actors_Employments. Role_ From Genres, Actors_Employments, Representations
Where (Representations. Title_Representation = @representation) And (Representations. ID_Genre = Genres. ID_Genre)
And (Actors_Employments. ID_Representation = Representations. ID_Representation)
EXEC GenreRepresentation @representation, @genre OUTPUT;
Обращение к процедуре:
DECLARE @genre varchar (40), @role_ varchar (40)
Execute GenreRepresentation_Roles 'Недоросль', @genre OUTPUT, @role_ OUTPUT
Print ('Жанр: ' +@genre)
Print ('Роли: ' +@role_);
Рисунок 9
1.7 Разработка триггеров для поддержки сложных ограничений целостности в базе данных
Для поддержания логической целостности базы данных и реализации сложных ограничений были разработаны следующие триггеры:
1. При добавлении записи о спектакле в таблицу Representations, проверяется, чтобы год начала проката не был больше 2015 года.
create trigger ForRepresentations1
on Representations for INSERT
as DECLARE @id int
If @@ROWCOUNT = 1
BEGIN
Select @id = ID_Representation
From INSERTED
BEGIN
if 2015 > (Select COUNT (Year_)
From INSERTED
Where ID_Representation = @id)
Begin
print 'Запись добавлена'
END
Else
BEGIN
rollback transaction
print 'Неправильно введен год'
END
END
END
Запрос для проверки работы триггера.
Insert Into Representations
(Title_Representation, ID_Genre, Year_, Budget) Values
('Ночь на Волге','2','2020','900000');
Рисунок 5
2. При добавлении записи о новом актере, проверяется, чтобы его стаж по году был меньше 2016.
create trigger ForActors1
on Actors for Insert
as Declare @expirience date
BEGIN IF
@@ROWCOUNT = 1
Select @expirience = Expirience
from INSERTED
if 2016 > (Select YEAR (Expirience)
From INSERTED
Where Expirience = @expirience)
BEGIN
print ('Запись добавлена')
end
else
begin
rollback transaction
print ('Неверная дата')
end
end
Запрос для проверки работы триггера.
Insert Into Actors
(Surname,First_Name,Last_Name, ID_Rank,Expirience) Values
('Грибоедов','Сергей','Михайлович','2','20.01.2017');
Рисунок 11
3. Триггер для команды UPDATE, при смене значения бюджета спектакля, старое и новое значение бюджета отдельно сохраняются в другую таблицу.
Создадим таблицу:
create table LogsRepresentations
(
log_ID integer identity (1,1) Not Null Primary Key,
Title_representation varchar (50) Not Null Check ( (Title_representation BETWEEN 'А' AND 'я') OR (Title_representation=' ') OR (Title_representation='-') OR (Title_representation=',')),
Old_Budget int Not Null Check (Old_Budget between 200000 and 2000000000),
New_Budget int Not Null Check (New_Budget between 200000 and 2000000000),
log_date date Not Null default GETDATE ()
);
Создадим триггер:
create trigger ForLogsRepresentationsBudget
on Representations after UPDATE
as
IF @@ROWCOUNT = 1
declare @old_budget int
declare @new_budget int
Declare @title_repres varchar (40)
BEGIN
select @new_budget = Budget from Inserted
select @old_budget = Budget from deleted
select @title_repres = Title_Representation from inserted
INSERT INTO LogsRepresentations (Title_representation, Old_Budget, New_Budget)
Values (@title_repres, @old_budget, @new_budget)
END
Запрос для проверки работы триггера:
Update Representations set Budget = 3000000
Where ID_Representation = 7;
Результаты:
Основная таблица Representations до транзакции
Рисунок 12
Основная таблица Representations после транзакции
Рисунок 6
Дополнительная таблица после транзакции
Рисунок 7
4. Триггер с процедурой, при удалении информации об актере будет выводиться специальное сообщение о произведенной транзакции и будут выводиться Имя, Фамилия и Отчество удаленного актера
Создадим процедуру для триггера:
create procedure DeletingActor
@name Varchar (100)
As Print 'Удалена запись об актере'+ @name;
Создадим Триггер с использованием нашей хранимой процедуры:
create trigger DeletingActor_1
on Actors For DELETE
AS
IF @@ROWCOUNT = 1
BEGIN
print 'Из БД была удалена информация'
Select ID_Actor As 'ID_aktera',
Surname As 'Familiya',
First_Name As 'Imya',
Last_Name As 'Otchestvo',
ID_Rank As 'ID_zvaniya',
Expirience As 'Akterskiy stazh'
From Deleted
DECLARE @f varchar (50)
SELECT @f = Surname + First_Name + Last_Name
FROM DELETED
Execute DeletingActor @f
END;
Вид таблицы до транзакций:
Рисунок 8
Напишем запрос на удаление в таблицу Actors
DELETE From Actors
Where ID_Actor = 41;
Рисунок 9
Рисунок 10
Таблица после транзакции:
Рисунок 11
1.8 Запросы
Все запросы на получение практически любого количества данных из одной или нескольких таблиц выполняются с помощью предложения SELECT. В общем случае результатом реализации предложения SELECT является другая таблица.
В курсовой работе разработаны следующие запросы:
a) Запрос выбирает ФИО актеров из таблицы Actors, которые заняты в спектакле "Любовь и Голуби".
b) Запросы выбирает названия спектаклей из таблицы Representations, в которых занят Актер с фамилией Тарасеев.
c) Запросы выбирает ФИО актера, который играет роль Стародума.
d) Запрос выбирает название спектакля, в котором играет актер с фамилией Шехтман.
e) Запрос выбирает роли из таблицы Actors_Employments, которых играют в спектакле "Руслан и Людмила".
f) Запрос выбирает всех актеров без особых званий.
g) Запрос выбирает всех актеров со званием народный артист.
h) Запрос выбирает спектакли жанра оперы.
i) Запрос выбирает роли из таблицы Actors_Employments, которые участвуют в спектакле "Недоросль", и звания актеров Народный артист.
j) Запрос выбирает актеров из таблицы Actors_Employments, которые играют в спектакле жанра оперы и с названием "Руслан и Людмила".
k) Запрос выбирает актеров со званием Народный артист со стажем более 40 лет.
1.9 Представления
1. Создание необновляемого представления, скрываем наличие других полей в базовой таблице Actors, так же изменены имена столбцов.
Create View Actors_1 As
Select Surname As "Фамилия", First_Name As "Имя", Last_Name As "Отчество", Expirience As "Дата начала выступлений в театре"
From Actors;
Рисунок 12
Покажем, что представление №1 является не обновляемым. Напишем к нему запрос на обновление фамилии у актера, отчество которого Леонидович. Оно не обновляемо, потому что в него не включены все столбцы таблицы Actors со свойством NOT NULL.
use Theater;
Insert Into Actors_1
("Фамилия", "Имя", "Отчество", "Дата начала выступлений в театре")
Values
('Свистунов','Олег','Афанасьевич', '1990.10.10');
Результат запроса:
Рисунок 13
Фамилия не обновилась.
2. Представление выводит названия спектаклей и количество участвующих в них актерах, представление не обновляемо.
Create View ActorsEployments_2 As
Select Representations. Title_Representation As "Спектакль",COUNT (Actors_Employments. ID_Representation) As "Кол-во актеров"
From Representations, Actors_Employments
Where Representations. ID_Representation = Actors_Employments. ID_Representation AND Actors_Employments. ID_Representation =
(Select Representations. ID_Representation From Representations Where Representations. ID_Representation = Actors_Employments. ID_Representation)
Group By Representations. Title_Representation;
Рисунок 14
Представление не будет являться обновляемым, В нем используется несколько таблиц и агрегирующая функция GROUP BY.
use Theater;
Update ActorsEployments_2
Set "Кол-во актеров" = '4'
Where "Кол-во актеров" = '3';
Результат запроса:
Рисунок 15
Обновление не было выполнено.
3. Представление показывающее спектакли и их жанры.
Create View Representations_1 As
Select Representations. Title_Representation, Genres. Title_Genre
From Representations Inner Join Genres ON
Representations. ID_Genre = Genres. ID_Genre;
Рисунок 16
Представление не обновляемое, основано на двух таблицах.
use Theater;
Insert Into Representations_1
("Title_Representation", "Title_Genre")
Values
('Снегурочка','Сказка');
Результат запроса:
Рисунок 17
4. Представление, показывающее ФИО актеров и их Роли, которые они играют в разных спектаклях.
create View Actors_Roles
As Select Actors. Surname As "Фамилия",
Actors. First_Name As "Имя",
Actors. Last_Name As "Отчество",
Actors_Employments. Role_ As "Роль",
Representations. Title_Representation As "Спектакль"
From Actors, Actors_Employments, Representations
Where Actors. ID_Actor = Actors_Employments. ID_Actor AND
Actors_Employments. ID_Representation = Representations. ID_Representation;
Рисунок 18
Представление не будет обновляемо, так как основано на трех таблицах.
Insert Into Actors_Roles
(Фамилия, Имя, Отчество, Роль, Спектакль)
VALUES
('Драгункина','Елена','Кирилловна','Снегурочка','Морозко');
Рисунок 19
Заключение
В ходе курсового проектирования разработана и реализована база данных и серверная часть информационной системы Склада.
Разработана структура, состоящая из 6 таблиц.
Разработаны ограничения целостности для сохранения логической непротиворечивости данных в системе.
Реализованы наиболее часто употребляемые в данной предметной области запросы.
Разработаны и отлажены хранимые процедуры, упрощающие работу с БД.
Разработаны и отлажены триггеры, осуществляющие проверку сложных логических условий и синхронизацию таблиц между собой при их изменении.
Разработаны и реализованы представления, повышающие комфорт и безопасность работы с системой.
В итоге, были успешно реализованы все особенности предметной области и требования, выработанные на этапе проектирования.
Список использованных источников
1. Ицик Бен-Ган - Microsoft SQL Server 2008. Основы T-SQL - 2009
2. Оутей М., Конте П. Эффективная работа: SQL Server 2000. СПб, 2002.
3. Грофф Дж., Вайнберг П. SQL: Полное руководство. / 2-е изд. - К., 2001.
4. Мамаев Е., Шкарина Л. Microsoft SQL Server 2000 для профессионалов. - СПб., 2001.
5. Мартин Грабер. Понимание SQL. - Москва, 2005.
Приложения
Приложение А
Программа создания базы данных
Create database Theater
On
(Name = database_theater_dat,
FILENAME = 'D: \sql\Teatr\database_theater. mdf',
SIZE = 10,MAXSIZE = 50,FILEGROWTH = 5)
LOG ON
(Name = database_theater_log,
FILENAME = 'D: \sql\Teatr\database_theater. mdf',
SIZE = 5MB,
MAXSIZE = 25MB,
FILEGROWTH = 5MB);
Create Table Ranks
(
ID_Rank Integer Not Null Primary Key Check (ID_Rank between 1 and 3),
Title_Rank VarChar (50) Not Null Check (Title_Rank between 'А' AND 'я')
);
Create Table Actors
(
ID_Actor Integer Not NUll Primary key Check (ID_Actor Between 0001 and 9999),
Surname VarChar (30) Not NUll Check ( (Surname BETWEEN 'А' AND 'я') OR (Surname='-')),
First_Name VarChar (30) Not NUll Check (First_Name BETWEEN 'А' AND 'я'),
Last_Name VarChar (30) Not NUll Check (Last_Name BETWEEN 'А' AND 'я'),
ID_Rank Integer Not Null Foreign Key (ID_Rank) References Ranks Check (ID_Rank between 1 and 3),
Expirience Datetime Not Null
);
Create Table Genres
(
ID_Genre Integer Not Null Primary Key Check (ID_Genre between 1 and 9),
Title_Genre VarChar (25) Not Null Check (Title_Genre BETWEEN 'А' AND 'я')
);
Create Table Representations
(
ID_Representation Integer Not Null Primary Key Check (ID_Representation between 00001 and 99999),
Title_Representation VarChar (50) Not Null Check ( (Title_Representation BETWEEN 'А' AND 'я') OR (Title_Representation=' ') OR (Title_Representation='-') OR (Title_Representation=',')),
Year_ INTEGER Not NULL Check (Year_ between 1960 and 2030),
ID_Genre Integer Not Null FOREIGN key (ID_Genre) REFERENCES Genres Check (ID_Genre between 1 and 9),
Budget Integer Not Null Check (Budget between 200000 and 2000000000)
);
Create Table Actors_Employments
(
ID_Actors_Employments Integer Not NUll Primary key Check (ID_Actors_Employments Between 0001 and 9999),
ID_Actor Integer Not Null Foreign Key (ID_Actor) References Actors Check (ID_Actor Between 0001 and 9999),
ID_Representation Integer Not Null Foreign Key (ID_Representation) References Representations Check (ID_Representation between 0001 AND 9999),
Role VarChar (50) Not Null Check (Role between 'А' AND 'я')
);
Приложение Б
Диаграмма базы данных
Рисунок 27 - Структура БД
Приложение В
Программа ввода тестовых данных
use Theater
INSERT INTO Ranks
(Title_Rank)
VALUES
('Народный артист'),
('Заслуженный артист'),
('Артист');
INSERT INTO Actors
(Surname,First_Name,Last_Name, ID_Rank,Expirience)
VALUES
('Иванов', 'Николай', 'Николаевич', '1', '22.01.1990'),
('Петров', 'Алексей', 'Федорович', '2', '22.01.1990'),
('Сидоров', 'Александр', 'Александрович', '3', '12.01.1990'),
('Алексеев', 'Дмитрий', 'Иванович', '3', '22.01.1995'),
('Федоров', 'Дмитрий', 'Леонидович', '3', '22.01.1997'),
('Шехтман', 'Вячеслав', 'Максимович', '1', '22.01.1980'),
('Малахов', 'Алексей', 'Сергеевич', '1', '11.01.1980'),
('Иванов', 'Сергей', 'Федорович', '2', '22.06.1991'),
('Иванова', 'Ольга', 'Андреевна', '1', '30.11.1976'),
('Уварова', 'Екатерина', 'Васильевна', '3', '29.11.2006'),
('Урванова', 'Дарья', 'Андреевна', '3', '28.11.2007');
('Куприянов', 'Геннадий', 'Иванович', '1', '22.03.1778'),
('Ганяев', 'Максим', 'Анатольевич', '1', '01.01.1770'),
('Подопригора', 'Кирилл', 'Аркадьевич', '3', '20.01.2005'),
('Маслов', 'Максим', 'Александрович', '3', '22.06.2009'),
('Тарасеев', 'Александр', 'Игоревич', '1', '30.05.1950'),
('Галкин', 'Евгений', 'Андреевич', '2', '11.09.1980'),
('Афанасьев', 'Алексей', 'Иванович', '2', '11.09.1980'),
('Глебов', 'Александр', 'Дмитриевич', '1', '20.08.1950'),
('Просвирин', 'Александр', 'Сергеевич', '2', '20.09.1990'),
('Исаков', 'Геннадий', 'Сергеевич', '1', '20.06.1967'),
('Исаков', 'Сергей', 'Геннадьевич', '2', '31.05.1990'),
('Исаков', 'Александр', 'Сергеевич', '3', '20.05.2011'),
('Меркулова', 'Ольга', 'Андреевна', '2', '14.11.1980'),
('Козлова', 'Екатерина', 'Васильевна', '3', '20.12.1998');
INSERT INTO Genres
(Title_Genre)
VALUES
('Комедия'),
('Драма'),
('Мелодрама'),
('Опера'),
('Мюзикл'),
('Трагедия');
INSERT INTO Representations
(Title_Representation,Year_, ID_Genre,Budget)
VALUES
('Недоросль', '1980', '1', '7250000'),
('Ревизор', '1980', '2', '8500000'),
('Любовь и Голуби', '1970', '3', '600000'),
('Руслан и Людмила', '1960', '4', '4450000'),
('Три Мушкетера', '2002', '5', '700000'),
('Ромео и Джульетта', '1975', '6', '13890000');
('Гроза', '1990', '2', '2450000'),
('Пиковая Дама', '1995', '4', '39000000'),
('Борис Годунов', '1989', '6', '11600000'),
('Граф Орлов', '2000', '5', '7900000');
INSERT INTO Actors_Employments
(ID_Actor, ID_Representation,Role_)
VALUES
('1', '1', 'Простаков'),
('2', '1', 'Стародум'),
('3', '2', 'Абдулин'),
('4', '2', 'Свистунов'),
('5', '3', 'Василий Кузякин'),
('6', '3', 'Дядя Митя'),
('7', '4', 'Руслан'),
('9', '4', 'Финн'),
('8', '5', 'Атос'),
('8', '6', 'Ромео'),
('10', '6', 'Джульетта'),
('11', '4', 'Людмила');
('13', '1', 'Цыфиркин'),
('14', '1', 'Митрофан'),
('15', '1', 'Вральман'),
('16', '7', 'Шапкин'),
('17', '7', 'Кулигин'),
('18', '10', 'Граф Орлов'),
('19', '10', 'Доманский'),
('20', '8', 'Николай Фигнер'),
('21', '8', 'Иван Мельников'),
('22', '9', 'Пимен'),
('23', '9', 'Гришка Отрепьев'),
('24', '2', 'Мария Антоновна'),
('25', '10', 'Екатерина 2'),
('26', '8', 'Графиня Мария Славина'),
('27', '7', 'Глаша'),
('28', '9', 'Ксения Годунова'),
('29', '4', 'Наина'),
('30', '6', 'Кормилица');
Приложение Г
Реализация запросов на SQL
1. ФИО актеров из таблицы Actors, которые участвуют в спектакле "Любовь и Голуби".
Select Surname,First_Name,Last_Name From Actors Where ID_Actor In
(Select ID_Actor From Actors_Employments Where ID_Representation In
(Select ID_Representation From Representations Where Title_Representation = 'Любовь и Голуби'));
Рисунок 208
2. Названия спектаклей из таблицы Representations, в которых занят Актер с фамилией Тарасеев.
Select Title_Representation From Representations Where ID_Representation In
(Select ID_Representation From Actors_Employments Where ID_Actor IN
(Select ID_Actor From Actors Where Surname = 'Тарасеев'));
Рисунок 29
3. ФИО актера из таблицы Actors, который играет роль Стародума.
Select Surname,First_Name,Last_Name From Actors Where ID_Actor In
(Select ID_Actor From Actors_Employments Where Role_ = 'Стародум');
Рисунок 21
4. Название спектакля из таблицы Representations, в котором играет актер Шехтман.
Select Title_Representation From Representations Where ID_Representation In
(Select ID_Representation From Actors_Employments Where ID_Actor In
(Select ID_Actor From Actors Where Surname = 'Шехтман'));
Рисунок 31
5. Роли из таблицы Actors_Employments, участвующих в спектакле "Руслан и Людмила".
Select Role_ from Actors_Employments where ID_Representation =
(Select ID_Representation from Representations where Title_Representation = 'Руслан и Людмила');
Рисунок 32
6. Актеры без особых званий.
Select Surname, First_Name, Last_Name from Actors where ID_Rank In
(Select ID_Rank from Ranks where Title_Rank = 'Артист');
Рисунок 223
7. Актеры со званием Народный артист.
Select Surname, First_Name, Last_Name from Actors where ID_Rank =
(Select ID_Rank from Ranks where Title_Rank = 'Народный артист');
Рисунок 234
8. Спектакли жанра Опера.
Select Title_Representation from Representations where ID_Genre =
(Select ID_Genre from Genres where Title_Genre = 'Опера');
Рисунок 245
9. Роли из таблицы Actors_Employments, которые участвуют в спектакле "Недоросль" и с актерскими званиями Народный артист.
Select Role_ from Actors_Employments where ID_Representation In
(Select ID_Representation From Representations where Title_Representation = 'Недоросль' and ID_Actor In
(Select ID_Actor From Actors Where ID_Rank =
(Select ID_Rank From Ranks Where Title_Rank = 'Народный артист')));
Рисунок 256
10. Актеры из таблицы Actors_Employments, которые играют в спектакле жанра Опера с названием "Руслан и Людмила".
Select Surname, First_Name, Last_Name from Actors where ID_Actor In
(Select ID_Actor from Actors_Employments where ID_Representation In
(Select ID_Representation From Representations Where Title_Representation = 'Руслан и Людмила' and ID_Genre In
(Select ID_Genre from Genres where Title_Genre = 'Опера')));
Рисунок 267
11. Актеры со стажем более 40 лет и с актерским званием Народный Артист.
Select Surname, First_Name, Last_Name from Actors where (DATEDIFF (year, Expirience, '2015.01.01') > 40) and (ID_Rank =
(Select ID_Rank from Ranks where Title_Rank = 'Народный артист'));
Рисунок 278
Размещено на Allbest.ru
Подобные документы
Информационные задачи и круг пользователей системы. Выработка требований и ограничений. Разработка проекта базы данных. Программная реализация проекта базы данных. Разработка хранимых процедур для поддержки сложных ограничений целостности в базе данных.
курсовая работа [706,2 K], добавлен 17.06.2012Программные средства для реализации базы данных и серверной части информационной системы "Учета технического обслуживания станков" средствами СУБД Microsoft SQL Server 2008. Разработка триггеров для поддержки сложных ограничений целостности в базе данных.
курсовая работа [768,3 K], добавлен 01.02.2013Реляционные базы данных как часть корпоративных информационных систем, их построение по принципам клиент-серверной технологии. Основные характеристики СУБД Firebird. Проектирование базы данных для информационной системы "Компьютерные комплектующие".
курсовая работа [1,9 M], добавлен 28.07.2013Создание базы данных для информационной системы "Грузоперевозки". Анализ предметной области, разработка концептуальной и логической модели базы данных, с использованием средства MS Micrоsоft SQL Server 2005, реализация физического проектирования базы.
курсовая работа [1,3 M], добавлен 01.07.2011Описание предметной области и определение предметной области информационной системы детского сада. Разработка логической и физической модели базы данных дошкольного образовательного учреждения. Анализ функционала информационной системы детского сада.
курсовая работа [1,6 M], добавлен 20.04.2015Анализ предметной области разрабатываемой информационной системы "Библиотека". Проектирование базы данных в среде MS Access. Физическая реализация данной информационной системы средствами Delphi 7 и MS Access 2003. Области применения технологии BDE.
курсовая работа [2,4 M], добавлен 12.01.2016Оценка предметной области: концептуальные требования; выявление информационных объектов и связей между ними; построение базы данных. Описание входных и выходных данных информационной системы "Магазин компьютерной техники". Анализ диаграммы прецедентов.
курсовая работа [294,8 K], добавлен 13.04.2014Системный анализ предметной области проектируемой базы данных. Экономическая сущность комплекса экономических информационных задач. Проектные решения по программному обеспечению комплекса задач. Структура базы данных и технологическое обеспечение.
курсовая работа [303,7 K], добавлен 27.02.2009Анализ проектирования баз данных на примере построения программы ведения информационной системы картотеки ГИБДД. Основные функции базы данных. Обоснование выбора технологий проектирования и реализации базы данных. Описание информационного обеспечения.
курсовая работа [753,0 K], добавлен 27.08.2012Системный анализ и анализ требований к базе данных. Концептуальная и инфологическая модель предметной области. Типы атрибутов в логической модели базы. Физическая модель проектируемой базы данных в методологии IDEF1X. Требования к пользователям системы.
курсовая работа [2,3 M], добавлен 21.11.2013