Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Отчет Сейтахметова И..docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
122.4 Кб
Скачать

2.3 Отчет о выполнении заданий

На рисунке 1 представлена модель базы данных, на которой отображены все сущности БД, отношение между ними и атрибуты.

Рисунок 1 – ER-диаграмма

Листинг 1 –Создание таблиц

CREATE TABLE Student(

studentID int primary key identity (1,1),

studentSurname varchar(30) not null,

studentName varchar(30) not null,

studentLastname varchar(30) not null,

phonenumber varchar(16) not null,

studentDate date not null,

groupaID int foreign key references Groupa(groupaID)

ON DELETE CASCADE

ON UPDATE CASCADE

)

GO

CREATE TABLE Groupa(groupaID int primary key identity (1,1),

groupaName varchar(30) not null

)

GO

Листинг 2 –заполнение таблиц

INSERT Into Student (studentSurname,studentName,studentLastname,phonenumber,studentDate,groupaID)

VALUES

('Иванов', 'Петр' ,'Сергеевич','89507903423','05/09/1997',15),

('Овивьян','Роза','Олеговна','89134152846','06/27/1998',11),

('Андриященко','Ангелина','Алексеевна','8909321345','10/05/1998',1),

('Горячева', 'Анастасия','Андреевна','89509783565','12/15/1999',9),

('Петров', 'Иван', 'Иванович','79015676523','06/30/1999',12),

('Сидоров', 'Никита', 'Дмитриевич','89999765423','12/16/1997',10),

('Шаповалова', 'Мария', 'Сергеевна','89001453245','12/12/1997',8), ('Андреев', 'Сергей', 'Петрович','89134560987','11/21/1998',2),

('Фризен', 'Екатерина', 'Андреевна','89098762101','04/09/1999',37),

('Сейтахметова', 'Индира', 'Жангельдыевна','79086542345','08/15/1998',5),

('Ищанова', 'Раушан', 'Амангельдыевна','89991542323','12/11/1998',36),

('Шабельник', 'Илья', 'Андреевич','89509552476','03/09/1999',6),

('Раменская', 'Луиза', 'Иософовна','89087652345','03/08/1999',4),

('Иванов', 'Илья', 'Петрович','89087680090','03/03/1998',34),

('Плотникова', 'Лариса', 'Ивановна','89991232323','12/15/1999',7),

('Юстус', 'Денис', 'Максимович','89088965434','03/21/1998',13),

('Козлов', 'Сергей', 'Алексеевич','89997865412','04/29/1998',14),

('Сошенко', 'Денис', 'Валерьевич','89134445543','02/02/1998',3),

('Сулейменов', 'Ильнар', 'Багдатович','89533933609','06/18/1998',38),

('Дюсенов', 'Ануар', 'Абаевич','89620455452','07/30/1998',35)

GO

Листинг 3 – создание индексов для всех таблиц

CREATE NONCLUSTERED INDEX IX_studFIO_phone_studDate

ON Student (studentSurname,studentName,studentLastname,phonenumber,studentDate)

on SECONDARY1

GO

CREATE NONCLUSTERED INDEX IX_groupaName

ON Groupa (groupaName)

on SECONDARY1

GO

CREATE NONCLUSTERED INDEX IX_accoutDate_accoutPresence

ON Accounting (accountingDate,accountingPresence)

on SECONDARY1

GO

CREATE NONCLUSTERED INDEX IX_teacherfio

ON Teacher (teacherSurname,teacherName,teacherLastname,phonenumber)

on SECONDARY1

GO

CREATE NONCLUSTERED INDEX IX_subjectName

ON Subjects (subjectName)

on SECONDARY1

GO

Листинг 4-создание представления для таблиц «Преподаватели»

CREATE VIEW VW_TeacherSub (teachName,teachLastname,phonenumber)

AS

SELECT teacherName AS [Имя], teacherLastname AS [Фамилия],phonenumber AS [Номер]

FROM Subjects inner join Teacher on Teacher.subjectID=Subjects.subjectID

GO

SELECT * FROM VW_TeacherSub

GO

Листинг 5-создание представления для таблиц «Студенты»

CREATE VIEW VW_StudentOne(studSURNAME, studNAME, groupNAME, accouDATE, accouPRESENCE)

AS

SELECT studentSurname AS [Фамилия], studentName AS [Имя], groupaName AS [Группа],accountingDate AS [Дата], accountingPresence AS [Присутствие]

FROM Student inner join Groupa on Student.groupaID=Groupa.groupaID

INNER JOIN Accounting on Student.studentID=Accounting.studentID

WHERE Accounting.accountingPresence='1'

GO

SELECT * FROM VW_StudentOne

GO

Листинг 6 - создание хранимой процедуры для таблиц «Преподаватели»

CREATE PROCEDURE proc_InsertedTeacher

@surName VARCHAR(30),@name VARCHAR(30), @lastName VARCHAR(30),@phone VARCHAR(16)

AS

begin

IF EXISTS

(SELECT * FROM Teacher WHERE teacherSurname=@surName AND teacherName = @name AND teacherLastname=@lastName and phonenumber=@phone )

BEGIN

PRINT 'Запись'+CONVERT(VARCHAR, @surName)+

+CONVERT(VARCHAR, @name)+

+CONVERT(VARCHAR,@lastName )+

+CONVERT(VARCHAR,@lastName )+

+CONVERT(VARCHAR,@phone )+' существует'

END

ELSE

BEGIN INSERT INTO Teacher(teacherSurname,teacherName,teacherLastname,phonenumber )

VALUES (@surName, @name,@lastName,@phone)

PRINT 'Запись добавлена'

END

end

GO

EXECUTE proc_InsertedTeacher 'Глухов','Денис','Максимович','89001234312'

GO

Листинг 7 - создание триггеров для таблиц «Преподаватели»

CREATE TRIGGER d_Teacher_1

ON Teacher

FOR DELETE

AS

BEGIN

PRINT 'Удаление запрещенно!'

ROLLBACK TRANSACTION

END

GO

DELETE FROM Teacher

WHERE teacherSurname='Пупкин'

GO

DROP TRIGGER d_Teacher_1

GO

Листинг 8 - создание триггеров для таблиц «Студенты»

CREATE TRIGGER i_studentDate_Student

ON Student

FOR INSERT

AS

IF EXISTS(SELECT*

FROM Student

WHERE YEAR(GETDATE())-YEAR(studentDate)<=18 )

BEGIN

RAISERROR ('Вставка данных запрещена! Студенту менее 18-ти лет',1,1)

PRINT( 'Вставка данных запрещена!')

ROLLBACK TRANSACTION

END

GO

INSERT INTO Student(studentSurname,studentName,studentLastname, phonenumber,studentDate, groupaID)

VALUES

('Дюсенов', 'Ануар', 'Абаевич', '89620455452','07/30/1998',35)

GO

DROP TRIGGER i_studentDate_Student

GO

Листинг 9 - создание полной резервной копии базы данных

USE Seitahmetova

GO

BACKUP DATABASE Seitahmetova

TO SQLScriptsSeitahmetova

WITH FORMAT,

MEDIANAME = 'BU_SQLScriptsSeitahmetova',

NAME = 'Hostel_full_06_05_2017_09_53';

GO

Листинг 10 - создание разностных резервных копий базы данных

USE master

GO

BACKUP database Seitahmetova

TO SQLScriptsSeitahmetova

WITH DIFFERENTIAL;

GO

Листинг 11 – добавление трех пользователей

USE Seitahmetova

GO

EXECUTE sp_grantlogin 'developerdataba\user1'

GO

EXECUTE sp_grantlogin 'developerdataba\user2'

GO

EXECUTE sp_grantlogin 'developerdataba\user2'

GO

Листинг 12 – создание трех ролей и добавление их в членство

EXECUTE sp_addrole 'role_prerodavatel'

GO

EXECUTE sp_addrole 'role_student'

GO

EXECUTE sp_addrole 'role_subjects'

GO

EXECUTE sp_addrolemember 'role_prerodavatel', 'developerdataba\user1'

GO

EXECUTE sp_addrolemember 'role_student', 'developerdataba\user2'

GO

EXECUTE sp_addrolemember 'role_subjects', 'developerdataba\user3'

GO

Листинг 13 – разделение их к правам

GRANT SELECT

ON Teacher

TO role_prerodavatel

GO

GRANT SELECT

ON Student

TO role_student

GO

GRANT SELECT

ON Subjects

TO role_subjects

GO

GRANT INSERT, UPDATE, DELETE

ON Teacher

TO role_prerodavatel

GO

GRANT INSERT, UPDATE, DELETE

ON Student

TO role_student

GO

GRANT INSERT, UPDATE, DELETE

ON Subjects

TO role_subjects

GO

ЗАКЛЮЧЕНИЕ

В процессе прохождения производственной практики в Благотворительном фонде помощи «Мать и дитя» ознакомилась с его структурой, с должностными обязанностями сотрудников, изучила работу с базами данных и практическое ее применение.

Получила более широкое представление деятельности предприятия, их компетенции. Знание полученные во время учебы мне очень пригодились на производственной практике.

Условия прохождения практики в полной мере соответствовали требованиям программы прохождения производственной практики. Сотрудники благотворительного фонда оказывали необходимую помощь, а также предоставляли всю необходимую информацию для закрепления знаний по специальности. Программу прохождения практики выполнила в полном объеме.