Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Курсовая по БД

.docx
Скачиваний:
78
Добавлен:
07.03.2015
Размер:
911.72 Кб
Скачать

Министерство образования и науки Российской Федерации

Федеральное государственное бюджетное образовательное учреждение

высшего профессионального образования

Ивановский государственный энергетический университет

имени В. И. Ленина

ЗФакультет Информатики и Вычислительной Техники

Отчет по лабораторному практикуму

на тему:

Разработка базы данных

«Расписание занятий»

с использованием MS SQL SERVER 2008 R2

Выполнил: Герасимов А.Е. гр.2-41x

Проверила: Булатова Е. Е.

Оглавление

1.Описание предметной области 3

2.Проектирование 3

2.1 Диаграмма вариантов использования, UML 3

2.2 Концептуальная модель предметной области, UML 4

2.3 Логическая модель базы данных, IDEF1x 4

2.4 Физическая модель базы данных, IDEF1x 5

2.5 Диаграмма базы данных из MS SQL Server 6

6

3. Описание ограничений 7

3.1 Значения по умолчанию 7

3.2 Ограничения на вводимые данные 8

3.3Правила удаления 9

4. Запросы на модификацию данных (Insert, Update, Delete) 10

4.1 Insert 10

4.3 Update 10

4.4 Delete 10

10

10

5. Запросы на выборку данных 11

6. Хранимые процедуры 16

7. Триггеры 17

8. Клиентское приложение 18

  1. Описание предметной области

Обучение студентов регламентируется расписанием занятий, которое составляется на семестр для подгруппы студентов.

Расписание содержит сведения о номере и дне недели, номере пары, номере аудитории, преподаваемой дисциплине, виде занятия (семинар, лекция, лабораторная работа) и преподавателе, который будет проводить занятие.

  1. Проектирование

2.1 Диаграмма вариантов использования, UML

На диаграмме вариантов использования (Рис.1) изображены 4 актёра: администратор, студент, преподаватель, вахтёр.

Администратор составляет расписание. Студент и преподаватель просматривают расписание, находя интересующую их информацию, в качестве дополнительных функций, для удобства использования расписания, его можно скачать или распечатать. Вахтёр выдаёт ключи преподавателям от кабинета для проведения занятий, предварительно просмотрев расписание, чтобы проверить будет ли в этом кабинете идти занятие. Или выдать ключи для уборки, посмотрев в расписание свободен ли кабинет.

Рис.1.Диаграмма вариантов использования

2.2 Концептуальная модель предметной области, UML

Рис.2.Концептуальная модель предметной области

2.3 Логическая модель базы данных, IDEF1x

Рис.3.Логическая модель базы данных

2.4 Физическая модель базы данных, IDEF1x

Рис.4. Физическая модель базы данных

2.5 Диаграмма базы данных из MS SQL Server

Рис.5. Диаграмма базы данных из MS SQL Server

3. Описание ограничений

3.1 Значения по умолчанию

Начальное значение строки PotokID начнётся со значения 1 (Рис.6.)

Рис.6. Значение по умолчанию 1

Начальное значение строки Podgrupa начнётся со значения 1 (Рис.7.) .

Рис.7. Значение по умолчанию 2

    1. Ограничения на вводимые данные

В таблице Prepodavatel строке FIO стоит ограничение на вводимые данные

FIO like ‘% %.%.’ (Рис.8). Для того чтобы в строку вводились данные следующего вида: Чахунов Е.И, Коровин Д.И, Романова О.А и т.д.

Рис.8. Ограничение на вводимые данные 1

В таблице NomerPari строке NomerPariID стоит ограничение на вводимые данные NomerPariID between 1 and 8 (Рис.9). Для того чтобы не вводить больше пар чем может пройти за один учебный день.

Рис.9. Ограничение на вводимые данные 2

    1. Правила удаления

Если удалить кафедру, то на её месте будет значение NULL.

Рис.10. Правило удаления 1

Если аудитория вдруг стала не пригодной для проведения занятий (ремонт, сделали кладовку, отдали под другие нужды) она удаляется и на её месте появляется значение NULL.

Рис.11. Правило удаления 2

4. Запросы на модификацию данных (Insert, Update, Delete)

4.1 Insert

INSERT INTO Prepodavatel (PrepodavatelID, FIO, Kaphedra)

VALUES (2, 'Киселёв В. Ю.','Математики')

INSERT INTO Prepodavatel (PrepodavatelID, FIO, Kaphedra)

VALUES (4, 'Романова О.А.', DEFAULT)

INSERT INTO Prepodavatel (PrepodavatelID)

VALUES (1)

4.3 Update

UPDATE Prepodavatel

SET FIO = 'Чахунов Е. И.''

WHERE PrepodavatelID = 2

UPDATE Prepodavatel

SET PrepodavatelID = 9, FIO = 'Коровин. Д. И.', Kaphedra = 'Математики'

WHERE (PrepodavatelID = 3)

UPDATE Prepodavatel

SET PrepodavatelID = 11, FIO = 'Левенец И. А.', Kaphedra = 'ПОКС'

WHERE (PrepodavatelID = 4) OR (Kaphedra = NULL)

4.4 Delete

DELETE FROM Prepodavatel

WHERE (PrepodavatelID IN (4))

DELETE FROM Prepodavatel

WHERE (KaphedraID IS NULL)

DELETE FROM Prepodavatel

5. Запросы на выборку данных

Рис.12. Select №1 (Выбор данных о всех преподавателях)

Рис.13. Select №2

Рис.14. Select №3

Рис.15. Select №4

Рис.16. Select №5

Рис.17. Select №6

Рис.18. Select №7

Рис.19. Select №8

Рис.20. Select №9

Рис.21. Select №10

6. Хранимые процедуры

  1. Процедура выводит все проводимые занятия

CREATE PROCEDURE vse_zanytiya

AS

select Vremya, DenNedeli, Nazvanie, TipZanytiya, Gruppa

from Raspisanie inner join NomerPari on NomerPari=NomerPariID

join Disciplina on Disciplina=DisciplinaID

join Potok on Potok=PotokID

join Nedelya on Nedelya=NedelyaID

Вызов

EXECUTE vse_zanytiya

Рис.22. Процедура выводит все проводимые занятия

  1. Процедура добавляет новую дисциплину (ID, Название, Тип занятия).

CREATE PROC dobav

@disciplina_id INT,

@nazvanie varchar(60),

@tip_zanitiya varchar(30)

AS

INSERT INTO Disciplina(DisciplinaID, Nazvanie, TipZanytiya)

VALUES (@disciplina_id, @nazvanie, @tip_zanitiya)

Вызов

EXECUTE dobav 21, 'Базы данных', Лекция

Рис.23. Процедура добавляет новую дисциплину

7. Триггеры

  1. Триггер проверяет, допустимость номера кафедры.

CREATE TRIGGER tr

ON Prepodavatel

INSTEAD OF INSERT

AS

IF EXISTS (SELECT *

FROM INSERTED

WHERE KaphedraID > 20)

BEGIN

RAISERROR ('Недопустимое значение номера кафедры', 16, 1)

ROLLBACK TRAN

END

ELSE

INSERT INTO Prepodavatel (PrepodavatelID, FIO, KaphedraID)

SELECT PrepodavatelID, FIO, KaphedraID

FROM INSERTED

  1. Триггер выводит сообщение об ошибке если поле равно NULL.

CREATE TRIGGER prepod

ON Prepodavatel

FOR INSERT

AS

IF EXISTS (SELECT *

FROM inserted

WHERE FIO is NULL)

BEGIN

RAISERROR ('ОШИБКА, вы должны заполнить поле FIO', 16, 1)

ROLLBACK TRANSACTION

END

8. Клиентское приложение

  1. Вывод всех преподавателей.

Рис.24. Преподаватели

  1. Вывод всех пар.

Рис.25. Пары

Иваново

2013