Курсовая по БД
.docxМинистерство образования и науки Российской Федерации
Федеральное государственное бюджетное образовательное учреждение
высшего профессионального образования
Ивановский государственный энергетический университет
имени В. И. Ленина
ЗФакультет Информатики и Вычислительной Техники
Отчет по лабораторному практикуму
на тему:
Разработка базы данных
«Расписание занятий»
с использованием 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
-
Описание предметной области
Обучение студентов регламентируется расписанием занятий, которое составляется на семестр для подгруппы студентов.
Расписание содержит сведения о номере и дне недели, номере пары, номере аудитории, преподаваемой дисциплине, виде занятия (семинар, лекция, лабораторная работа) и преподавателе, который будет проводить занятие.
-
Проектирование
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
-
Ограничения на вводимые данные
В таблице Prepodavatel строке FIO стоит ограничение на вводимые данные
FIO like ‘% %.%.’ (Рис.8). Для того чтобы в строку вводились данные следующего вида: Чахунов Е.И, Коровин Д.И, Романова О.А и т.д.
Рис.8. Ограничение на вводимые данные 1
В таблице NomerPari строке NomerPariID стоит ограничение на вводимые данные NomerPariID between 1 and 8 (Рис.9). Для того чтобы не вводить больше пар чем может пройти за один учебный день.
Рис.9. Ограничение на вводимые данные 2
-
Правила удаления
Если удалить кафедру, то на её месте будет значение 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. Хранимые процедуры
-
Процедура выводит все проводимые занятия
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. Процедура выводит все проводимые занятия
-
Процедура добавляет новую дисциплину (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. Триггеры
-
Триггер проверяет, допустимость номера кафедры.
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
-
Триггер выводит сообщение об ошибке если поле равно 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. Клиентское приложение
-
Вывод всех преподавателей.
Рис.24. Преподаватели
-
Вывод всех пар.
Рис.25. Пары
Иваново
2013