Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Отчеты / Отчет по лабам_Пендер.docx
Скачиваний:
72
Добавлен:
15.06.2014
Размер:
610.52 Кб
Скачать

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

ФГБОУ ВПО «Омский государственный технический университет»

Кафедра «Автоматизированные системы обработки информации и управления»

ОТЧЕТ

по лабораторным работам (MSSQLSERVERиORACLE)

по дисциплине «СУБД»

ВАРИАНТ №9

Преподаватель О. Б. Малков

Студент Е.А. Пендер

Омск 2012

Содержание

Введение 3

Лабораторная работа №1 4

Лабораторная работа №2 6

Лабораторная работа №3 13

Лабораторная работа №4 20

Лабораторная работа №5 24

Лабораторная работа №6 28

Лабораторная работа №7 32

Лабораторная работа №8 35

Лабораторная работа №9 37

Заключение 39

Введение

В ходе выполнения лабораторных работ по дисциплине «СУБД» необходимо освоить основные функции, операции и SQL-запросы для работы с такими СУБД какMSSQLиORACLE.

Темой для выполнения последующих лабораторных работ будет: «Курсы по повышению квалификации»:

В учебном заведении организованы курсы повышения квалификации. Группы слушателей формируются в зависимости от специальности и отделения. В каждую из них включено определенное количество слушателей. Проведение занятий обеспечивает штат преподавателей, для каждого из которых в базе данных зарегистрированы стандартные анкетные данные (фамилия, имя, отчество, телефон) и стаж работы. В результате распределения нагрузки получена информация о том, сколько часов занятий проводит каждый преподаватель с соответствующими группами. Хранятся также сведения о виде занятий (лекция, практика), дисциплине и оплате за 1 час. Размер почасовой оплаты зависит от типа занятия. Кроме того каждый преподаватель может вести не все предметы, а только некоторые.

Лабораторная работа №1

Проектирование базы данных с использованием ER-технологии

Для начала определим логическую структуру БД. В результате проектирования должен быть определен состав реляционных таблиц, для каждой таблицы - состав ее атрибутов (столбцов) и логические связи между таблицами. Для каждого атрибута должны быть заданы тип данного, его размер и ограничения целостности. 

Логическая модель

Построение ER-диаграммы

Определим основные сущности: Преподаватели, Группы слушателей, Предметы, Вид занятий, а также Учебная нагрузка, которая будет соединяться с другими сущностями неидентифицирующими связями мощностью «один-ко-многим».

Графическое представление (IDEF1X)

Физическая модель

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

Поля таблицы Учебная нагрузка должны быть обязательно снабжены атрибутом not null, т. к. при распределении нагрузки вся информация должна быть занесена в таблицу.

Все внешние ключи (FK) созданы с правилом каскадного удаления и обновления. При этом обновление дочерней таблицы вызовет автоматическое обновление родительской таблицы.

Лабораторная работа №2

Создание и связывание таблиц базы данных

MSSQL

С официального сайта было установлено ПО MicrosoftSQLServer2012. После установки необходимых компонентов в графическом режиме была создана база данных с названиемCourses.

Для создания таблиц с полями можно воспользоваться также графическим режимом. После чего может быть сгенерирован скрипт для выполнения этих действий. Это очень удобно, например, чтобы восстановить такие же таблицы необходимо выполнить скрипт:

BEGIN TRANSACTION

SET QUOTED_IDENTIFIER ON

SET ARITHABORT ON

SET NUMERIC_ROUNDABORT OFF

SET CONCAT_NULL_YIELDS_NULL ON

SET ANSI_NULLS ON

SET ANSI_PADDING ON

SET ANSI_WARNINGS ON

COMMIT

BEGIN TRANSACTION

GO

CREATE TABLE dbo.teachers

(

teacher_code int NOT NULL,

last_name nvarchar(50) NOT NULL,

first_name nvarchar(50) NOT NULL,

middle_name nvarchar(50) NOT NULL,

phone_number nchar(10) NULL,

experience tinyint NULL

) ON [PRIMARY]

GO

ALTER TABLE dbo.teachers ADD CONSTRAINT

PK_teachers PRIMARY KEY CLUSTERED

(

teacher_code

) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

GO

ALTER TABLE dbo.teachers SET (LOCK_ESCALATION = TABLE)

GO

COMMIT

BEGIN TRANSACTION

SET QUOTED_IDENTIFIER ON

SET ARITHABORT ON

SET NUMERIC_ROUNDABORT OFF

SET CONCAT_NULL_YIELDS_NULL ON

SET ANSI_NULLS ON

SET ANSI_PADDING ON

SET ANSI_WARNINGS ON

COMMIT

BEGIN TRANSACTION

GO

CREATE TABLE dbo.[group]

(

group_code int NOT NULL,

departament nvarchar(50) NOT NULL,

specialty nvarchar(50) NOT NULL,

number_of_students smallint NOT NULL

) ON [PRIMARY]

GO

ALTER TABLE dbo.[group] ADD CONSTRAINT

PK_group PRIMARY KEY CLUSTERED

(

group_code

) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

GO

ALTER TABLE dbo.[group] SET (LOCK_ESCALATION = TABLE)

GO

COMMIT

BEGIN TRANSACTION

SET QUOTED_IDENTIFIER ON

SET ARITHABORT ON

SET NUMERIC_ROUNDABORT OFF

SET CONCAT_NULL_YIELDS_NULL ON

SET ANSI_NULLS ON

SET ANSI_PADDING ON

SET ANSI_WARNINGS ON

COMMIT

BEGIN TRANSACTION

GO

CREATE TABLE dbo.subject

(

subject_code int NOT NULL,

subject_name nvarchar(50) NOT NULL

) ON [PRIMARY]

GO

ALTER TABLE dbo.subject ADD CONSTRAINT

PK_subject PRIMARY KEY CLUSTERED

(

subject_code

) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

GO

ALTER TABLE dbo.subject SET (LOCK_ESCALATION = TABLE)

GO

COMMIT

BEGIN TRANSACTION

SET QUOTED_IDENTIFIER ON

SET ARITHABORT ON

SET NUMERIC_ROUNDABORT OFF

SET CONCAT_NULL_YIELDS_NULL ON

SET ANSI_NULLS ON

SET ANSI_PADDING ON

SET ANSI_WARNINGS ON

COMMIT

BEGIN TRANSACTION

GO

CREATE TABLE dbo.form_of_class

(

form_code int NOT NULL,

name_code nvarchar(50) NOT NULL,

pay_per_hour smallint NOT NULL

) ON [PRIMARY]

GO

ALTER TABLE dbo.form_of_class ADD CONSTRAINT

PK_form_of_class PRIMARY KEY CLUSTERED

(

form_code

) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

GO

ALTER TABLE dbo.form_of_class SET (LOCK_ESCALATION = TABLE)

GO

COMMIT

BEGIN TRANSACTION

SET QUOTED_IDENTIFIER ON

SET ARITHABORT ON

SET NUMERIC_ROUNDABORT OFF

SET CONCAT_NULL_YIELDS_NULL ON

SET ANSI_NULLS ON

SET ANSI_PADDING ON

SET ANSI_WARNINGS ON

COMMIT

BEGIN TRANSACTION

GO

CREATE TABLE dbo.teaching_load

(

load_code int NOT NULL,

hours smallint NOT NULL,

group_code int NOT NULL,

form_code int NOT NULL,

subject_code int NOT NULL,

teacher_code int NOT NULL

) ON [PRIMARY]

GO

ALTER TABLE dbo.teaching_load ADD CONSTRAINT

PK_teaching_load PRIMARY KEY CLUSTERED

(

load_code

) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

GO

ALTER TABLE dbo.teaching_load SET (LOCK_ESCALATION = TABLE)

GO

COMMIT

BEGIN TRANSACTION

SET QUOTED_IDENTIFIER ON

SET ARITHABORT ON

SET NUMERIC_ROUNDABORT OFF

SET CONCAT_NULL_YIELDS_NULL ON

SET ANSI_NULLS ON

SET ANSI_PADDING ON

SET ANSI_WARNINGS ON

COMMIT

BEGIN TRANSACTION

GO

ALTER TABLE dbo.teachers SET (LOCK_ESCALATION = TABLE)

GO

COMMIT

BEGIN TRANSACTION

GO

ALTER TABLE dbo.subject SET (LOCK_ESCALATION = TABLE)

GO

COMMIT

BEGIN TRANSACTION

GO

ALTER TABLE dbo.[group] SET (LOCK_ESCALATION = TABLE)

GO

COMMIT

BEGIN TRANSACTION

GO

ALTER TABLE dbo.form_of_class SET (LOCK_ESCALATION = TABLE)

GO

COMMIT

BEGIN TRANSACTION

GO

ALTER TABLE dbo.teaching_load ADD CONSTRAINT

FK_teaching_load_form_of_class FOREIGN KEY

(

form_code

) REFERENCES dbo.form_of_class

(

form_code

) ON UPDATE CASCADE

ON DELETE NO ACTION

GO

ALTER TABLE dbo.teaching_load ADD CONSTRAINT

FK_teaching_load_group FOREIGN KEY

(

group_code

) REFERENCES dbo.[group]

(

group_code

) ON UPDATE CASCADE

ON DELETE NO ACTION

GO

ALTER TABLE dbo.teaching_load ADD CONSTRAINT

FK_teaching_load_subject FOREIGN KEY

(

subject_code

) REFERENCES dbo.subject

(

subject_code

) ON UPDATE CASCADE

ON DELETE NO ACTION

GO

ALTER TABLE dbo.teaching_load ADD CONSTRAINT

FK_teaching_load_teachers FOREIGN KEY

(

teacher_code

) REFERENCES dbo.teachers

(

teacher_code

) ON UPDATE CASCADE

ON DELETE NO ACTION

GO

ALTER TABLE dbo.teaching_load SET (LOCK_ESCALATION = TABLE)

GO

COMMIT

Теперь созданы таблицы с первичными ключами и связями между ними в базе данных.

ORACLE

С официального сайта было установлено ПО OracleDatabase11gExpressEditionиSQLDeveloper(удобное средство для разработчика). После установки необходимых компонентов в графическом режиме было создано новое соединение и пользовательAdmin с определенными правами.

Создать таблицы можно, запустив этот скрипт:

CREATE TABLE GROUPS

(

GROUP_CODE NUMBER NOT NULL

, DEPARTAMENT VARCHAR2(20) NOT NULL

, SPECIALTY VARCHAR2(20) NOT NULL

, STUDENTS_NUMBER NUMBER NOT NULL

, CONSTRAINT GROUPS_PK PRIMARY KEY

(

GROUP_CODE

)

ENABLE

);

CREATE TABLE CLASS_FORM

(

FORM_CODE NUMBER NOT NULL

, NAME_CODE VARCHAR2(20) NOT NULL

, PAY_PER_HOUR NUMBER NOT NULL

, CONSTRAINT CLASS_FORM_PK PRIMARY KEY

(

FORM_CODE

)

ENABLE

);

CREATE TABLE SUBJECT

(

SUBJECT_CODE NUMBER NOT NULL

, SUBJECT_NAME VARCHAR2(20) NOT NULL

, CONSTRAINT SUBJECT_PK PRIMARY KEY

(

SUBJECT_CODE

)

ENABLE

);

CREATE TABLE TEACHERS

(

TEACHER_CODE NUMBER NOT NULL

, LAST_NAME VARCHAR2(20) NOT NULL

, FIRST_NAME VARCHAR2(20) NOT NULL

, MIDDLE_NAME VARCHAR2(20) NOT NULL

, PHONE_NUMBER VARCHAR2(20)

, EXPERIENCE NUMBER

, CONSTRAINT TEACHERS_PK PRIMARY KEY

(

TEACHER_CODE

)

ENABLE

);

CREATE TABLE TEACHING_LOAD

(

LOAD_CODE NUMBER NOT NULL

, HOURS NUMBER NOT NULL

, GROUP_CODE NUMBER NOT NULL

, FORM_CODE NUMBER NOT NULL

, SUBJECT_CODE NUMBER NOT NULL

, TEACHER_CODE NUMBER NOT NULL

, CONSTRAINT TEACHING_LOAD_PK PRIMARY KEY

(

LOAD_CODE

)

ENABLE

);

Внешние ключи создаются в «Редактирование таблицы»:

Соседние файлы в папке Отчеты