Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методическое пособие по выполнению лабораторных работ по SQL.doc
Скачиваний:
167
Добавлен:
01.05.2014
Размер:
1.22 Mб
Скачать

Введение

Настоящее методическое пособие предназначено для выполнения лабораторных работ по дисциплинам Управление данными, Базы и банки знаний, Системы управления базами данных (СУБД) включает в себя описание 8 лабораторных работ, контрольные вопросы, на которые требуется дать ответы при защите работы, теоретический материал необходимый для выполнения работы.

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

Несомненно, данное пособие должно помочь студенту закрепить основные положения из курса базы и банки знаний по направлению 654700 (специальность 230201). Однако наиболее полно освоить данный курс студент может только, используя все пособия по данной дисциплине, входящие в комплект, а также литературу, список которой приведен автором в заключительной части пособия.

Лабораторные работы могут выполняться с использованием СУБД Microsoft SQL, а также любой СУБД, поддерживающей стандарт ANSI/ISO SQL2.

Язык SQL - Structure Query Language (Язык структурных запросов) является одним из доминирующих языков, используемых в реляционных базах данных. В качестве стандартного языка баз данных он принят такими организациями как American National Standards Insnitute –ANSI (Американский национальный институт стандартов) и International Standards Organization – ISO (Международная организация стандартов).

SQL является непроцедурным языком, что позволяет ему обрабатывать наборы записей и автоматизировать процесс управления данными. SQL не требует от пользователя спецификации метода доступа к данным, пользователь вообще не должен описывать, как должна выполняться та или иная операция над данными, он просто описывает, что должно быть сделано с данными, предоставляя право системе решать, как это сделать.

SQL включает в себя три основные составляющие:

  1. Язык управления данными Data Direction Language (DDL)

  2. Язык манипулирования данными Data Manipulation Language (DML)

  3. Язык запросов к базе данных

Целью лабораторных работ является изучение основных составляющих этого языка.

Выполняя лабораторную работу, студенту следует вначале повторить все приведенные в пособие примеры, а затем выполнить задания.

Лабораторное занятие № 1

Цель занятия: Приобретение навыков настройки и работы в среде Query Analyzer. Изучение синтаксиса команды SQL: CREATE TABLE.

Результат занятия:Создание базы данных «Успеваемость», которая в дальнейшем используется как учебный пример.

Описание учебного примера.

В пособии порядок выполнения заданий лабораторных работ продемонстрирован на примере базы данных «Успеваемость студентов», которая включает в себя следующие таблицы:

  • Студент (Student)

  • Преподаватель (Teacher)

  • Успеваемость (Progress)

  • Учебный план (UPlan)

  • Предмет (Subject)

  • Отчетность (Report)

  • Вид занятий (Work)

  • Группа (SGroup)

Таблица Студент (Student).

Таблица содержит данные о студенте. Каждый студент имеет уникальный номер зачетки, который является первичным ключом отношения. Схема отношения имеет вид: R(Student)={NRecordBook, StName, IDGroup, SPasport, NPasport, DataPasport, NameDeptPasport, INN}, что аналогично R(Студент)={N зачетки, Имя студента, Код группы, Серия паспорта, Номер паспорта, Наименование организации, ИНН}. Внешним ключом является IDGroup (Код группы). Комбинация атрибутов SPasport, NPasport, DataPasport, NameDeptPasport должна быть уникальна, также должен быть уникальным атрибут INN, который в свою очередь является потенциальным ключом.

Таблица Преподаватель (Teacher).

Таблица содержит данные о преподавателе. Каждый преподаватель имеет уникальный идентификационный номер, который является первичным ключом отношения. Схема отношения имеет вид: R(Teacher)={PIN, TeachName, DeptNname, TeachPost, DateHire}, что аналогично R(Преподаватель) = {Идентификационный номер преподавателя, Имя преподавателя, Название кафедры, Должность, Дата приема на работу}. Таблица не содержит внешних ключей.

Таблица Успеваемость (Progress).

В таблице хранятся оценки, полученные студентом за весь период его обучения в институте, как при сдаче курсовых работ, экзаменов и т.п., так и при сдаче зачетов. Известно, что зачеты могут быть дифференцированными или не дифференцируемыми. В первом случае результат сдачи оценивается по той же системе, что и экзамен, во втором - в ведомости фиксируется только факт сдачи зачета («зачет» или «незачет»). Договоримся в поле Mark (Оценка) заносить значение 1, если «зачет» и 0 – если «незачет». Первичным ключом в отношении являются атрибуты: № зачетки, Код предмета, Код вида отчетности, № cеместра. Схема отношения имеет вид: R(Progress)={NRecordBook, PIN, IDSubject, IDReport, NTerm, Mark}, что соответствует схеме R(Успеваемость)={№ зачетки, Идентификационный номер преподавателя, Код предмета, Код вида отчетности, № семестра, Оценка}. Внешние ключи приведены ниже (см. Таблица 1).

Таблица 1

Внешние ключи отношения Успеваемость (Progress)

Внешний ключ

Ссылочное отношение

№ зачетки (NRecordBook)

Студент (Student)

Идентификационный номер преподавателя (PIN)

Преподаватель (Teacher)

Код предмета(IDSubject)

Предмет (Subject)

Код вида отчетности (IDReport)

Отчетность (Report)

Таблица Учебный план (UPlan).

В таблице содержится информация о предметах, которые изучают студенты той или иной группы, о количестве часов, отводящихся для того или иного вида занятий (лекций, практических, лабораторных и т.п.). Ключ отношения выделен на схеме. R(UPlan)={IDSubject, IDWork, IDGroup, NTerm, Clock, PIN) или  R(План)={Код предмета, Код вида занятия, Код группы, Семестр, Кол-во часов, Идентификационный номер преподавателя}. Внешние ключи отношения План (UPlan) приведены ниже (см. Таблица 2).

Таблица 2

Внешние ключи отношения План (UPlan)

Внешний ключ

Ссылочное отношение

Код вида занятия (IDWork)

Вид занятий (Work)

Идентификационный номер преподавателя (PIN)

Преподаватель (Teacher)

Код предмета (IDSubject)

Предмет (Subject)

Код группы (IDGroup)

Группа (SGroup)

Таблица Предмет (Subject).

Таблица представляет собой справочник предметов, изучаемых студентом. Первичным ключом отношения является Код предмета (IDSubject). Схема отношения имеет вид: R(Subject)={IDSubject, NameSubject}, аналог этой схемы R(Предмет)={Код предмета, Название предмета}. Атрибут NameSubject (Название предмета) должен быть уникальным. Таблица не содержит внешних ключей.

Таблица Отчетность (Report).

Таблица представляет собой справочник видов отчетности. Домен атрибута Название вида отчетности будет включать в себя экзамен, зачет, курсовой проект и т.п. R(Report)={IDReport, NameReport}, или R(Отчетность)={Код вида отчетности, Название вида отчетности}. Атрибут NameReport (Название вида отчетности) должен быть уникальным. Таблица не содержит внешних ключей.

Таблица Вид занятий (Work).

Таблица представляет собой справочник видов занятий. Домен атрибута Название вида занятия будет включать в себя следующие значения: лекция, практическое занятие, лабораторное занятие и т.п. R(Work)={IDWork, NameWork}, или R(Виды занятий)={Код вида занятия, Название вида занятия}. Атрибут NameWork (Название вида занятия) должен быть уникальным. Таблица не содержит внешних ключей.

Таблица Группа (SGroup).

Таблица представляет информацию о группах обучающихся в ВУЗе. Первичным ключом отношения является IDGroup (Код группы). Домен атрибута Название группы будет включать в себя все названия групп ВУЗа. R(SGroup)={IDGroup, NameGroup}, или R(Группа)={Код группы, Название группы}. Атрибут NameGroup (Название группы) должен быть уникальным. Таблица не содержит внешних ключей.

Перед созданием таблицы следует предварительно определить типы полей и их размер. С этой целью анализируются возможные значения тех или иных атрибутов, а также методы обработки, которым они будут подвергаться. Основные типы данных, имеющие место в СУБД SQL Server 2000 даны в приложении (см. Приложение 1. Типы данных используемые СУБД SQL Server 2000).

Структура таблиц учебного примера приведена ниже (см. Таблица 3- Таблица 9), где первичные ключи выделены цветом и подчеркнуты.

Таблица 3

Таблица Студент (Student)

Название атрибута

Имя поля

Тип поля

Размер

Ограничения

зачетной книжки

NRecordBook

Varchar

6

Not null

Имя студента

StName

Varchar

35

Код группы

IDGroup

INT

Foreign key

Серия паспорта

SPasport

Varchar

4

Not null

Unique

Номер паспорта

NPasport

Varchar

6

Дата выдачи

DataPasport

DateTime

Наименование организации

NameDeptPasport

Varchar

35

ИНН

INN

Varchar

10

Unique

Таблица 4

Таблица Преподаватель (Teacher)

Название атрибута

Имя поля

Тип поля

Размер

Ограничения

Идентификационный номер преподавателя

PIN

INT

Not Null

Имя преподавателя

TeachName

Varchar

35

Название кафедры

DeptName

Varchar

35

Должность

TeachPost

Varchar

35

Дата приема на работу

DateHire

DateTime

Таблица 5

Таблица Успеваемость (Progress)

Название атрибута

Имя поля

Тип поля

Размер

Ограничения

Код вида отчетности

IDReport

INT

Not null, Foreign key

Код предмета

IDSubject

INT

Not null, Foreign key

зачетки

NRecordBook

Varchar

6

Not null, Foreign key

семестра

NTerm

Numeric

2

Not null

Идентификационный номер преподавателя (PIN)

PIN

INT

Foreign key

Оценка

Mark

SmallInt

Таблица 6

Таблица Учебный план (UPlan)

Название атрибута

Имя поля

Тип поля

Размер

Ограничения

Код предмета

IDSubject

INT

Not null, Foreign key

семестра

NTerm

Varchar

2

Not null

Код вида занятия

IDWork

INT

Not null, Foreign key

Код группы

IDGroup

INT

Not null, Foreign key

Идентификационный номер преподавателя

PIN

INT

Not null, Foreign key

Количество часов

Clock

Numeric

3

Таблица 7

Таблица Предмет (Subject)

Название атрибута

Имя поля

Тип поля

Размер

Ограничения

Код предмета

IDSubject

INT

Not null

Название предмета

NameSubject

Varchar

35

Unique

Таблица 8

Таблица Отчетность (Report)

Название атрибута

Имя поля

Тип поля

Размер

Ограничения

Код отчетности

IDReport

INT

Not null

Название вида отчетности

NameReport

Varchar

35

Unique

Таблица 9

Таблица Вид занятий (Work)

Название атрибута

Имя поля

Тип поля

Размер

Ограничения

Код вида занятий

IDWork

INT

Not null

Название вида занятия

NameWork

Varchar

35

Unique

Таблица 10

Таблица Группа (SGroup)

Название атрибута

Имя поля

Тип поля

Размер

Ограничения

Код группы

IDGroup

INT

Not null

Название группы

NameGroup

Varchar

15

Unique

Для определения SQL операторов здесь и далее применяется расширенная форма BNF-нотации (Backus Naur Form).

Прописные буквы используются для записи зарезервированных слов.

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

Вертикальная строка (|) указывает на необходимость выбора одного из нескольких приведенных значений.

Фигурные скобки определяют обязательный элемент – например, {SELECT}.

Угловые скобки (< >) означают, что вместо параметра обозначенного в них, должно проставляться его конкретное значение, при этом угловые скобки аннулируются.

Квадратные скобки определяют необязательный элемент [DISTINCT].

Многоточие (…) используется для указания необязательной возможности повторения конструкции. Наименьшее допустимое количество итераций равно нулю. Например, CREATE TABLE <имя таблицы>

(<имя столбца> <тип данных> (<размер>) [<ограничение для столбца>]

[, <имя столбца> <тип данных> (<размер>) [<ограничение для столбца>]… ])

[,<ограничение для таблицы>];

Рекомендации по написанию операторов SQL:

  • Каждая фраза в операторе должна начинаться с новой строки.

  • Начало каждой фразы должно начинаться с той же позиции, что и начало предыдущей фразы.

  • Желательно, чтобы каждая часть фразы начиналась с новой строки с некоторым отступом относительно начала фразы. Последнее позволяет указать подчиненность фраз.

С помощью команды CREATE создается база данных и все ее объекты.

CREATE DATABASE Student ON PRIMARY

(Name=' Student ',

Filename='C:\Program Files\Microsoft SQL Server\MSSQL\Data\ Student.mdf')

Далее в рамках данной лабораторной работы рассматривается создание таблиц с помощью команды CREATE TABLE. С ее же помощью устанавливаются ограничения на данные, перечисленные ниже.

  • NULL/NOT NULL – разрешает или не разрешает неопределенность значений атрибутов;

  • UNIQUE – разрешает только уникальные значения атрибутов;

  • PRIMARY KEY – определяет первичный ключ отношения (в каждом отношении может иметь место только один первичный ключ);

  • FOREIGN KEY – определяет внешний ключ отношения (в одном отношении может быть несколько внешних ключей);

  • CHECK – задает ограничения на значения атрибутов.