Разработка базы данных и серверной части информационной системы для предметной области "Театр"

Реализация базы данных и серверной части информационной системы склада средствами СУБД 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


Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.