1
Некоммерческое акционерное общество
БАЗЫ ДАННЫХ В ИНФОРМАЦИОННЫХ СИСТЕМАХ Методические указания по выполнению лабораторных работ для студентов специальности 5В070300 - Информационные системы
Алматы 2015
АЛМАТИНСКИЙ УНИВЕРСИТЕТ ЭНЕРГЕТИКИ И СВЯЗИ
Кафедра
информационные системы
2
СОСТАВИТЕЛИ: А.Т. Купарова, К.Б. Альмуратова. Базы данных в информационных системах. Методические указания по выполнению лабораторных работ для студентов специальности 5В070300 - Информационные системы. – Алматы: АУЭС, 2015. – 38 с.
Методические указания содержат основные задачи по выполнению лабораторных работ, требования, рекомендации и указания к их выполнению.
Методические указания предназначены для студентов специальности 5В070300 - «Информационные системы» и могут быть использованы студентами других специальностей при изучении технологий баз данных в системах обработки информации.
Ил. 21, табл. 5, библиогр. – 10 назв.
Рецензент: кандидат педагогических наук, доцент кафедры физики АУЭС А.М. Саламатина
Печатается по плану издания некоммерческого акционерного общества
«Алматинский университет энергетики и связи» на 2015 г.
© НАО «Алматинский университет энергетики и связи», 2015 г.
3
Содержание
Введение………... 4
1 Лабораторная работа №1. Создание базы данных в среде MS SQL……. 5
2 Лабораторная работа №2. Построение иерархических баз данных в среде MS SQL………. 18
3 Лабораторная работа №3. Сетевая модель данных………. 22
4 Лабораторная работа №4. Реляционная модель данных……… 26
5 Лабораторная работа №5. Запросы к БД……….. 30
6 Лабораторная работа №6. Методы защиты баз данных………. 33
Список литературы……….. 38
4
Введение
База данных (БД), организованная в соответствии с определёнными правилами и поддерживаемая в памяти компьютера совокупность данных, характеризующая актуальное состояние некоторой предметной области (банк, библиотека, магазин, биржа и т.д.) и используемая для удовлетворения информационных потребностей пользователей. База данных хранится и обрабатывается в вычислительной системе. Данные в БД логически структурированы (систематизированы) с целью обеспечения возможности их эффективного поиска и обработки в вычислительной системе.
Для создания и использования БД служат системы управления базами данных (СУБД), которые занимают особое место в мире программного обеспечения и нашей повседневной жизни. СУБД обеспечивают реализацию новых концепций в организации информационных служб через создание информационных систем на основе технологии БД. В настоящее время широко применяются муниципальные, банковские биржевые информационные системы, информационные системы оптовой и розничной торговли, торговых домов, служб управления трудом и занятостью, справочной и аналитико-прогнозной котировочной информации и др.
Подавляющее большинство современных СБД представляют собой системы реляционного типа, т.е. использующие реляционную модель данных. Данные в реляционных БД хранятся в таблицах – отношениях (relation). Реляционные СБД (РСБД) - это компьютеризованные системы хранения записей в табличном виде. Под БД в различных РСБД понимается табличное хранение данных, но название «база данных» может объединять не только таблицы, но и производные этих таблиц (в виде отчетов, форм, виртуальных таблиц - представлений), формы запросов, программные модули и т.д. СУБД, поддерживающие реляционную модель данных, называются реляционными СУБД (РСУБД). Стандартным языком взаимодействия с реляционными БД является язык запросов SQL, который реализуется в РСУБД на основе операций реляционной алгебры и реляционного исчисления.
В настоящие методические указания включены лабораторные работы, основной целью которых является получение знаний, умений и практических навыков пректирования систем баз данных и построения приложений баз данных в информационных системах. Этапы выполнения лабораторной работы при изучении курса «Базы данных в информационных системах»:
проработка теоретической части, выполнение рабочего задания, создание отчета и защита его у преподавателя. Выполнение практических заданий дает возможность выработки навыков и знаний у студентов. В методических указаниях представлены лабораторные задания по базам данных, выполненным на Microsoft SQL Server 2008. Выполнение каждой лабораторной работы должно завершаться оформлением отчета. Отчеты должны быть оформлены по стандарту организации (СТ НАО 56023-1910-04- 2014).
5
Лабораторная работа №1. Создание базы данных в среде MS SQL Цель работы: изучить принципы работы с базами данных в среде Microsoft SQL. Научиться создавать простые базы данных в Microsoft SQL.
Содержание работы:
а) Изучение теоретических сведений.
б) Разработка БД из двух таблиц.
Процесс в ходе, которого решается, какой вид будет иметь созданная база данных, называется проектированием базы данных.
Работа по проектированию базы данных включает реализацию следующих структур:
1) базы данных, таблиц, которые будут входить в базу данных;
2) столбцов, принадлежащих каждой таблице;
3) взаимосвязей между таблицами и столбцами.
Задание
Создать базу данных для учета продаваемых в магазине товаров. База данных состоит из двух таблиц: «Tovar» и «Sale» заданной структуры.
Структура таблицы данных «Tovar» показана в таблице 1.1, структура данных таблицы «Sale» в таблице 1.2
Таблицы БД создать с помощью среды разработки Microsoft SQL.
В таблице «Tovar» первичный ключ построить по полю NameTovars, а в таблице «Sale» – по полю idSale.
Для реализации ссылочной целостности между таблицами в таблице
«Sale» внешний ключ построить по полю NameTovar. Для сортировки записей при их выводе, в таблице «Tovar» построить вторичные ключи.
Таблица 1.1 - Структура таблицы «Tovar»
Идентификатор поля Наименование Тип
NameTovar Наименование товара Nchar(20)
Cost Тип товара real
Type Единица измерения Nchar(10)
Таблица 1.2 - Структура таблицы «Sale»
Идентификатор поля Наименование Тип
idSale Номер квитанции Int (автоинкремент)
Sum Дата продажи Real
NameTovar Наименование товара Nchar(20)
6
Методические указания к выполнению.
Создание базы данных.
Для работы с базами данных используются специальные языки, в целом называемые языками баз данных. В ранних СУБД поддерживалось несколько специализированных по своим функциям языков. Чаще всего выделялись два языка - язык определения схемы БД (SDL - Schema Definition Language) и язык манипулирования данными (DML - Data Manipulation Language). В современных СУБД обычно поддерживается единый интегрированный язык, содержащий все необходимые средства для работы с БД, начиная от ее создания, и обеспечивающий базовый пользовательский интерфейс с базами данных - язык SQL (Structured Query Language). Язык для взаимодействия с БД SQL появился в середине 70-х годах.
Язык SQL сочетает средства SDL и DML, т.е. позволяет определять схему реляционной БД и манипулировать данными. При этом именование объектов БД (для реляционной БД - именование таблиц и их столбцов) поддерживается на языковом уровне в том смысле, что компилятор языка SQL производит преобразование имен объектов в их внутренние идентификаторы на основании специально поддерживаемых служебных таблиц-каталогов.
Язык SQL содержит специальные средства определения ограничений целостности БД. Ограничения целостности хранятся в специальных таблицах- каталогах, и обеспечение контроля целостности БД производится на языковом уровне, т.е. при компиляции операторов модификации БД компилятор SQL на основании имеющихся в БД ограничений целостности генерирует соответствующий программный код.
Специальные операторы языка SQL позволяют определять так называемые представления БД, фактически являющиеся хранимыми в БД запросами (результатом любого запроса к реляционной БД является таблица) с именованными столбцами. Поддержание представлений производится также на языковом уровне.
Для создания базы данных используется команда:
CREATE DATABASE <имя_БД>
[необязательные_параметры].
Состав необязательных параметров зависит от используемой СУБД, при их отсутствии в команде используются значения по умолчанию.
Для определения структуры таблицы данных используются команды создания (CREATE TABLE) и изменения (ALTER TABLE) структуры таблицы. Таблица создается в активной БД. Если нет активной БД, то в СУБД, допускающих наличие свободных таблиц, создается свободная таблица (не входящая в состав БД).
Команда создания структуры таблицы данных имеет следующий формат:
CREATE TABLE <имя_таблицы> (<определение_поля1>
[,<определение_поля2>...][определение_ограничений])
7
Команда создает новую таблицу данных с указанным именем. Для каждого поля задаются его имя и тип. Для типов полей, которые могут иметь разную ширину, дополнительно необходимо указать требуемую ширину. Для числовых полей с плавающей запятой указывается также точность (число десятичных разрядов). Если создаваемое поле будет являться ключевым (индексом), то необходимо указать тип ключа (индекса). Кроме того, в определении поля можно указать признак (NOT NULL) обязательного заполнения поля при вводе данных в таблицу, значения полей по умолчанию и ограничения на ввод значений. Определение ограничений таблицы используется для задания ограничений на уровне таблицы, могут указываться также определения первичного и внешнего ключей.
Можно создать временную таблицу, с которой можно работать как с обычной таблицей данных, называемую курсором (CURSOR). Курсор располагается в оперативной памяти в свободной рабочей области и доступен сразу после создания до тех пор, пока он не будет закрыт. При закрытии курсора временная таблица удаляется из памяти. Команда создания курсора CREATE CURSOR аналогична команде CREATE TABLE.
Кроме того, с помощью команды CREATE можно создать индекс (CREATE INDEX), триггер (CREATE TRIGGER), представление (CREATE
VIEW), значение по умолчанию (CREATE DEFAULT), ограничение на данные (CREATE RULE), хранимую процедуру (CREATE PROCEDURE), пользовательскую функцию (CREATE FUNCTION), схему данных (CREATE SCHEME).
При изменении структуры таблицы используется команда ALTER TABLE с ключевыми словами, которые позволяют добавить, удалить, переименовать поле, изменить параметры поля. Эта команда имеет формат:
ALTER TABLE <имя_таблицы>
[ADD <определение_добавляемого_поля>]
[DROP <имя_удаляемого_поля>]
[RENAME <старое_имя_поля> TO <новое_имя_поля>]
[ALTER <имя_изменяемого_поля>
<определение_изменяемых_параметров_поля>]
Кроме того, с помощью команды ALTER можно изменить триггер (ALTER TRIGGER), представление (ALTER VIEW), хранимую процедуру (ALTER PROCEDURE), пользовательскую функцию (ALTER FUNCTION).
С помощью команды DROP можно удалить любые объекты, созданные командой CREATE.
Можно удалить всю таблицу целиком командой:
DROP TABLE <имя_таблицы>
Для удаления базы данных со всеми таблицами используется команда:
DROP DATABASE <имя_базы_данных>
Дополнять записями базу данных можно, используя в качестве источника данных выражения, массивы, переменные, константы, результат запроса.
8
Для дополнения записей в таблицу БД используется команда INSERT, которая предварительно открывает закрытую таблицу БД. Формат команды INSERT:
INSERT INTO <имя_таблицы> [(<имя_поля1>[, <имя_поля2> …])]
VALUES (<выражение1> [, <выражение2> …])
Команда добавляет записи в конец существующей таблицы, используя выражения, перечисленные после слова VALUES. Выражения заносятся в указанные поля. Если опущены имена полей, выражения будут записываться в последовательные поля таблицы данных в соответствии с ее структурой.
В качестве выражений могут использоваться значения переменных или элементов массивов переменных. Например, в СУБД Visual FoxPro для дополнения записей в таблицу данных с использованием массивов используется следующая команда SQL:
INSERT INTO <имя_таблицы>
FROM ARRAY <имя_массива>
Команда добавляет записи в конец таблицы данных, используя данные, содержащиеся в указанном массиве. Данные из массива заносятся последовательно в поля, начиная с первого. Типы соответствующих полей и элементов массива должны совпадать.
Во многих СУБД (но не во всех) SQL-команду INSERT можно использовать с подзапросом - вложенной командой SELECT, если множество дополняемых данных является результатом запроса:
INSERT INTO <имя_таблицы> [(<имя_поля1> [, <имя_поля2> ...])]
<подзапрос>
Для модификации данных в таблице БД используется команда UPDATE, которая имеет следующий формат:
UPDATE <имя_таблицы> SET <имя_поля1>= <выражение1>
[,<имя_поля2> = <выражение2>..] [WHERE <условие>]
Замена значений происходит в записях, удовлетворяющих условию, указанному после опции WHERE. Если эта опция отсутствует, то замена значений происходит во всех записях таблицы.
Для удаления записей в SQL используется команда DELETE, имеющая следующий формат:
DELETE FROM <имя_таблицы> [WHERE <условия>]
Удаляются записи, удовлетворяющие условию, указанному после опции WHERE. Если эта опция отсутствует, то удаляются все записи из таблицы.
Кликнуть правой кнопкой мыши на объекте «Базы данных» в диалоговом окне «Обозреватель объектов» (рисунок 1 и 2), и в контекстном меню выбрать «Создать базу данных».
9
Рисунок 1 - Диалоговое окно «Обозреватель объектов»
Рисунок 2 - Диалоговое окно «Создание базы данных»
10
Создание таблицы.
Для создания таблицы в окне «Обозреватель объектов» (рисунок 3) выбираем созданную базу данных, и в раскрывшемся списке правой кнопкой мыши нажимаем на пункте «Таблицы», в котором находим и выделяем пункт
«Создать таблицу». В рабочей области СУБД MS SQL Server откроется форма для создания таблицы.
Рисунок 3 - Диалоговое окно создание таблицы
В поле «Имя столбца» заносим имена столбцов таблицы базы данных. В
поле «Тип данных» заносим тип данных, хранимых в этом столбце таблицы.
В столбце «Разрешить значение null» ставим галочку, если допустимо оставлять значение данного столбца пустым.
Заполняя поле «Тип Данных», нужно руководствоваться таблицей 1.3 типов данных Microsoft SQL. Типа данных позволят хранить различные по своей природе данные от любых символьных до десятичных чисел, значений дат и времени. Подход к разделению данных на типы во всех языках одинаков, как при работе с переменными в языках программирования, так и при работе с реляционными базами данных с помощью SQL. Типы данных являются характеристиками самих данных, чьи атрибуты размещаются прямо в соответствующих полях таблицы.
11
Таблица 1.3 – Типы данных в SQL
№ Тип Занимаемый
объем
Описание
1 Bynary До 1,2 Гб Любые данные в двоичном виде.
Используется для хранения файла 2 Varbinary До 1,2 гб Любые данные в двоичном виде.
Используется для хранения файла
3 Tinyint 1 байт Целое положительное число от 0 до 255 4 Char 1 байт на
символ
Символьное выражение; может
содержать любые символы (до 254 для одного поля)
5 Varchar Символьное выражение; может
содержать любые символы (до 254 для одного поля)
6 Money 8 байт Денежное выражение для числовой величины. Выводит число с четырьмя десятичными разрядами и
установленным обозначением используемой денежной единицы 7 Datetime 8 байт Дата и время; может содержать время,
день, месяц и год, точность 3,33 миллисекунды
8 Smalldatetime 4 байта Дата и время; точность 2 минута 9 Bit 1 байт Булево выражение ( .T. или .F.) 10 Float От 1 до 20
байтов
Числовое выражение; может содержать целые или дробные числа со знаком 11 Smallint 2 байта Целое число в диапазоне от –32 768 до
+32 767
12 Int 4 байта Целое число. Можно хранить числа от – 2 147 483 647 до 2 147 483 646
13 Image 4 байта Поле для ссылки на объект OLE 14 Text 4 байта Поле примечаний для ссылки на блок
данных
15 Decimal Точное числовое значение, которое может иметь до 38 цифр (р); число цифр после запятой (s) не может превышать р 16 Numeric Точное числовое значение, которое
может иметь до 38 цифр (р); число цифр после запятой (s) не может превышать р 17 Real 4 байта Число с плавающей точкой одинарной
точности. Можно хранить числа в интервале от 1.401298Е-45 до 3.402823Е38
12
В диалоговом окне «Обозреватель объектов» в рабочей области MS SQL Server расположено поле «Свойства столбцов» (рисунок 4). В раскрывшемся окне строка «Значение или привязка по умолчанию» служит для установки значения по умолчанию. Строка «Спецификация идентифицирующего столбца» служит для автоинкрементна столбца. Здесь можно указать начальное значение и шаг приращения столбца.
Рисунок 4 – Диалоговое окно «Свойства столбцов » Заполнение таблицы.
Для заполнения таблицы данными нужно выбрать соответствующую таблицу в «Обозревателе объектов», кликнуть на ней правой кнопкой мыши и в контекстном меню выбрать «Открыть таблицу». В поле «Name Tovar» на рисунке 5, строка NULL указывает на ограничение целостности данных, т.е.
MS SQL Server обеспечивает автоматическое отслеживание связей между таблицами, не разрешая удалять данные до тех пор, пока не будут удалены все связанные строки из зависимой таблицы.
Ограничения целостности (Constraints) – это механизмы MS SQL Server, обеспечивающие автоматический контроль соответствия данных установленным условиям (или ограничениям), то есть обеспечивающие целостность данных. Ограничения целостности NULL действует на уровне колонки и пользовательского типа данных. Устанавливая для них ограничение
13
целостности NULL или NOT NULL, можно, соответственно, разрешать или запрещать хранение значений NULL.
Рисунок 5 - Диалоговое окно «Обозреватель объектов», поле «Таблица»
Рисунок 6 - Экран контекстного меню «Таблица»
14
Чтобы задать первичный ключ, необходимо кликнуть правой кнопкой мыши на соответствующей строке и в контекстном меню выбрать пункт
«Задать первичный ключ» (рисунок 6).
Чтобы задать вторичные ключи, по которым будут сортироваться данные при выводе таблицы в том же контекстном меню, нужно выбрать пункт «Индексы и ключи» и нажать в появившемся окне кнопку добавить, а потом отредактировать поле «Столбцы». При этом появится окно «Столбцы индекса» (рисунок 7). В нем нужно выбрать порядок столбцов и порядок сортировки.
Рисунок 7 - Экран контекстного меню «Столбцы индекса»
Создание отношений.
Возьмем для примера две таблицы. Одна с информацией о товарах, другая – с информацией о продажах товара.
Таблица 1 - Tovar
(Key)NameTovar nchar(20) Cost real Type nchar(10) Таблица 2 - Sale
(Key)idSale int Summ real NameTovar nchar(20)
Для реализации табличной целостности нам необходимо построить внешний ключ таблицы Sale, по полю NameTovar (рисунок 8).
15
Рисунок 8 - Экран контекстного меню «Таблица», меню «Имя столбца»
Открываем таблицу, из которой нужно построить внешний ключ (таблица Sale).
Для этого нажимаем на нее правой кнопкой в окне «Обозреватель объектов» в контекстном меню выбираем изменить. Далее на строке NameTovar кликаем правой кнопкой и выбираем «Отношения», в появившемся окне нажимаем «Добавить».
Рисунок 9 - Экран контекстного меню «Отношение внешнего ключа»
16
Далее нажимаем на кнопку с тремя точками напротив «Спецификация таблиц и столбцов» (рисунок 9).
Рисунок 10 - Экран контекстного меню «Таблицы и столбцы»
В появившемся окне «Таблицы и столбцы» (рисунок 10) выбираем таблицу первичного ключа и соответствующие поля, которые нам надо связать, нажимаем «ОК».
Создание диаграмм баз данных.
Диаграммы нужны для наглядного представления баз данных.
Рассмотрим диаграмму базы данных на примере тех же самых таблиц Tovar и Sale.
Для создания диаграммы базы данных (рисунок 11,12), кликните правой кнопкой на объекте «Диаграммы баз данных» в «Обозревателе объектов» и в раскрывшемся списке, правой кнопкой мыши нажмите на пункте «Создать диаграмму баз данных».
17
Рисунок 11 - Экран контекстного меню «Создать диаграмму баз данных»
В появившемся окне «Добавление таблицы» добавьте обе таблицы.
Рисунок 12 - Экран контекстного меню «Диаграммы баз данных»
Контрольные вопросы
1. К какому классу языковых средств СУБД относится язык SQL?
2. Перечислите категории команд SQL.
3. Перечислите основные типы данных, используемые в SQL.
4. Какая команда SQL используется для определения структуры таблицы данных?
5. Какая команда SQL позволяет добавлять записи в базу данных?
18
Лабораторная работа № 2. Построение иерархических баз данных в среде MS SQL
Цель работы: изучить принципы работы с базами данных в среде Microsoft SQL. Научиться создавать иерархическую базу БД в Microsoft SQL.
Содержание работы:
1) Изучение теоретических сведений.
2) Разработка БД с помощью иерархической модели.
Необходимо создать иерархическую базу данных и приложение для его использования на основе таблиц заданной структуры. Далее рассмотрен пример создания иерархической базы данных.
Требуется создать четыре таблицы «Фирма», «Отделы», «Сотрудники»,
«Товары» с заданной в таблице 2.1 – 2.4 структурой и связями.
Таблица 2.1 - Схема данных таблицы «Фирма»
Идентификатор
поля Наименование Тип Длина
OTDEL Отдел nchar 20
TOVAR Товар nchar 20
REITING Рэйтинг int
Таблица 2.2 - Схема данных таблицы «Отделы»
Идентификатор
поля Наименование Тип Длина
OTDEL Отдел nchar 20
SOTRUDNIKI Сотрудники nchar 10
CHISLO_LUDEI Количество сотрудников Int
SUMMA Сумма real
MESTO Месторасположения nchar 20
Таблица 2.3 - Схема данных таблицы «Сотрудники»
Идентификатор
поля Наименование Тип Длина
SOTRUDNIKI Сотрудник nchar 10
ADRESS Адрес nchar 40
PASPORT nchar 100
Таблица 2.4- Схема данных таблицы «Товары»
Идентификатор
поля Наименование Тип Длина
TOVAR Товар nchar 20
ED_IZMER Единица измерения nchar 15
KOLICHESTVO Количество int
19
ZENA Цена Real
Методические указания к выполнению.
Иерархическая модель данных (ИМД) наиболее органично отражает естественную иерархию данных в предметной области. Иерархическая модель организует данные в виде древовидной структуры и является реализацией логических связей по типу «целое-часть». Хорошим примером иерархической модели является любая административная структура. В этой модели выделяется главный объект, через который обеспечивается доступ ко всем остальным объектам системы. Иерархическая модель данных использует такие понятия, как: поле (элемент данных), сегмент (группа), запись.
Для представления схемы в ИМД используется графовая форма. В ИМД объекты и связи между ними представляются в виде графа типа дерева. В узлах дерева размещены объекты, а его рёбра отображают связи между объектами. Верхняя вершина является корнем дерева, конечные вершины – листьями. Дерево - ориентированный граф без циклов, ориентация от корня, т.е. дуги, соответствующие функциональным связям, направлены от корня к листьям дерева. В дереве любые два узла, один из которых исходный, а другой зависимый, связаны иерархической связью. Длина пути - количество дуг, которые необходимо пройти для достижения определённой вершины.
Иерархический путь включает все связанные между собой узлы, начиная с корневого узла и кончая заданным. В древовидной структуре иерархические пути - линейные. Любой узел, находящийся на иерархическом пути выше рассматриваемого узла, является для него исходным узлом (родительским).
Любой узел, находящийся на иерархическом пути ниже рассматриваемого узла, является для него порождённым узлом (наследником). У каждого узла - объекта может быть несколько «наследников» и существует один «родитель».
Узлы и функциональные связи между ними в ИМД - именованные, то есть имеют имя. Для каждого уровня связи вводится интерпретация, зависящая от предметной области и описывающая взаимоотношение между «родителями» и
«наследниками». Каждый экземпляр объекта представляется с помощью записи. Структура данных, используемая для представления этой записи, обычно содержит некоторые атрибуты - характеристики каждого объекта.
Операции в ИМД имеют нелогичный позаписный характер. Аппарат перемещения по структуре в графовых моделях служит для установки тех объектов данных, к которым будет применяться очередная операция манипулирования данными. Такие объекты называются текущими.
Механизмы доступа к данным и перемещения по структуре данных в таких моделях достаточно сложны. При использовании ИМД выделяются уровни иерархии данных.
Иерархическая модель очень хорошо подходит для устоявшихся предметных областей с четкими зависимостями «родитель-наследник». В случае, когда эти условия выполнены, проявляются достоинства иерархической модели - очень быстрая скорость поиска. Основные
20
достоинства ИМД: простота построения и использования, обеспечение определенного уровня независимости данных, простота оценки операционных характеристик. К достоинствам относится также возможность реализации быстрого поиска нужных значений, когда условия запроса соответствуют иерархии в схеме базы данных.
Недостатки иерархической модели проистекают оттого, что данная модель слишком жесткая. В ИМД возможны представления только двух типов отношений: «один-к-одному» и «один-к-многим» Отношение «многие-к- многим» реализуется очень сложно, дает громоздкую структуру и требует хранения избыточных данных, что особенно нежелательно на физическом уровне, иерархическая упорядоченность усложняет операции удаления и включения, доступ к любой вершине возможен только через корневую, что увеличивает время доступа. Если запрос не соответствует имеющейся иерархии, то и его программирование, и его исполнение потребуют значительных усилий. Недостатком иерархической модели является также сложность внесения в нее изменений. Если изменились условия задачи и модель предметной области перестала быть иерархической, то приведение схемы базы данных в соответствие предметной области становится нетривиальной задачей.
Что касается способов описания конкретных схем, базирующихся на иерархической модели, или языков манипулирования данными, работающими с такой моделью, то они зависят от конкретной реализации. Классическим примером СУБД, использующей иерархическую модель, является давно разработанная система IMS фирмы IBM. К числу СУБД иерархического типа можно отнести СУБД PC/Focus, Team-Up, Data Edge.
Создание таблиц.
Способом, описанным в первой лабораторной работе, создадим базу данных Firma и в ней соответствующие таблицы. Назначим первичные ключи – первым столбцам таблиц, то есть Otdel, Otdel, Sotrudniki, Tovar в соответствующих таблицах.
Создание отношений.
Теперь создадим отношения, которые собственно и определяют иерархическую структуру таблицы.
Создадим отношения между таблицами. Таблицей первичного ключа нужно выбирать ту таблицу, которая находится по иерархии ниже, то есть для отношений между таблицами Отдел - Сотрудники таблицей первичного ключа будет таблица Сотрудники.
Все эти операции осуществляются, как и в первой лабораторной работе:
Правая кнопка мыши на таблице, пункт «отношения», «добавить» и выбор таблиц и столбцов в «спецификации таблиц и столбцов» (рисунок 13).
21
Рисунок 13 - Экран контекстного меню «Отношение внешнего ключа»
После задания всех связей их можно проследить на диаграмме таблиц данных.
Создадим диаграмму таблиц базы данных Firma и добавим туда все 4 таблицы (рисунок 14).
Рисунок 14 - Экран контекстного меню «Диаграммы баз данных»
22
Контрольные вопросы
1. Какая модель данных использует табличное представление данных?
2. Какая модель данных использует для представления данных граф типа «дерево»?
3. Какая модель данных находит наибольшее применение в современных системах баз данных и почему?
4. Что собой представляет иерархическая модель данных, какие групповые отношения возможны в ИМД, достоинства и недостатки ИМД?
Лабораторная работа № 3. Построение сетевой модели баз данных в среде MS SQL
Цель работы: изучить методы создания сетевой БД в среде MS SQL и особенности работы с такими базами данных.
Содержание работы:
1) Изучение теоретических сведений.
2) Разработка БД с помощью сетевой модели.
Необходимо создать сетевую базу данных и приложение для его использования на основе таблиц заданной структуры. Далее рассмотрен пример создания сетевой базы данных.
Требуется создать пять таблиц: «Magazin», «Tovar», «Otdel»,
«Nachalnik», «Ofice» с заданной в таблице 3.1 – 3.5 структурой и связями.
Таблица 3.1- Magazin
Идентификатор поля Тип Длина
Tovar nchar 20
Otdel nchar 20
Zena real
Таблица 3.2 -Tovar
Идентификатор поля Тип Длина
Tovar nchar 20
Type nchar 20
Kol int
Таблица 3.3 - Otdel
Идентификатор поля Тип Длина
Otdel nchar 20
Ofice nchar 20
Nachalonik nchar 20
23
Таблица 3.4 - Nachalnik
Идентификатор поля Тип Длина
Nachalnik nchar 20
Pasport nchar 20
Ofice int
Таблица 3.5 - Ofice
Идентификатор поля Тип Длина
Ofice int
Telefon nchar 20
Korpus nchar 20
Методические указания к выполнению.
Сетевая модель данных. Если структура данных оказывалась сложнее, чем обычная иерархия, простота структуры иерархической базы данных становилась её недостатком. В связи с этим возникла необходимость в разработке сетевой модели данных (СМД). Сетевая модель позволяет любому объекту быть связанным с любым другим объектом. Сетевые модели образуют сложные структуры, что создаёт определённые трудности при необходимости модернизации или развития модели данных. Сетевая модель данных замышлялась как инструмент для пользователей баз данных - программистов. В связи с этим в СМД больше внимания уделяется структуризации данных, чем развитию ее операционных возможностей.
Сетевую модель данных (СМД) можно рассматривать как более общий случай ИМД, в которой разрешены циклы и всевозможные связи. По своим базовым концепциям ИМД и СМД очень похожи. В сетевой модели так же, как и в иерархической модели, есть понятие узла и связи, которая может быть именована. Главное отличие сетевой модели от иерархической заключается в том, что к каждому узлу может идти связь не от одного родителя, а от нескольких.
Доминирующее влияние на развитие сетевой модели данных и соответствующих СБД, построенных на основе этой модели, оказали предложения рабочей группы по базам данных (DBTG) Ассоциации по языкам систем обработки данных (КОДАСИЛ). Модель КОДАСИЛ постоянно развивается и совершенствуется. Эта модель считается наиболее развитой сетевой моделью данных и лежит в основе построения всех СБД сетевого типа. Ниже использована терминология КОДАСИЛ. Основные типы структур данных, используемых при построении СБД сетевого типа: элемент данных, агрегат (группа), запись, набор, база данных.
В сетевых моделях данных объекты и связи между ними представляются в виде сети. Сеть – ориентированный циклический граф с помеченными вершинами и дугами. Каждая вершина данных описывает
24
некоторое понятие из предметной области (объект), представляет собой запись и характеризуется некоторыми атрибутами.
В узлах сети расположены объекты, а рёбра отображают связи между объектами. Таким образом, задается логика взаимоотношениями между данными в реальной предметной области. Сетевые структуры могут содержать циклы, когда связи между объектами образуют замкнутый контур, начинаясь и оканчиваясь у одного и того же объекта на сети. Связи от каждой вершины могут быть направлены на произвольное количество других вершин.
На каждую вершину могут быть направлены связи от произвольного числа других вершин (объектов).
Записи в графовой форме схемы БД изображаются вершинами сети и используются для представления типов объектов. Элементы данных используются для представления атрибутов объектов. Для каждой записи (запись - это часть схемы) в реальной базе данных может существовать несколько экземпляров. Соответственно, с каждым конкретным экземпляром по конкретной связи может быть связано разное число экземпляров другой записи, но число видов связи одинаково для всех экземпляров одной записи.
Наборы представляют типы связей между типами объектов, которые представлены соответствующими записями. На схеме БД они изображаются поименованными дугами между соответствующими записями. Дуга исходит из записи - владельца набора и заходит в запись - член набора. Набор - основной структурный элемент, с помощью которого выполняется построение структуры БД сетевого типа.
При построении структуры БД сетевого типа исходят из следующих основных композиционных правил: база данных может содержать любое количество записей и наборов; между двумя типами записи может быть определено любое количество типов наборов; тип записи может быть владельцем и одновременно членом нескольких типов наборов.
В СМД реализованы все возможные типы групповых отношений: 1:1, 1:М, М:1, М:М, поэтому они используется при наличии самых различных связей между объектами.
Существует большое число удачных реализаций сетевой модели данных. В каждой из реализации, как правило, используется свой собственный язык для описания схемы базы данных и доступа к данным.
Язык CODASYL является классическим примером работы с сетевыми моделями данных и является попыткой стандартизировать язык для работы с сетевой моделью данных.
Сетевые базы данных обладают рядом преимуществ.
Гибкость. Множественные отношения “родитель-наследник” позволяют сетевой базе данных хранить данные, структура которых сложнее простой иерархии.
Стандартизация. Появление стандарта CODASYL, популярность сетевой модели обусловили тот факт, что такие поставщики мини-
25
компьютеров, как Digital Equipment Corporation и Data General, реализовали сетевые СУБД.
Быстродействие. Вопреки своей большой сложности, сетевые базы данных достигают быстродействия, сравнимого с быстродействием иерархических баз данных. Множества представлены указателями на физические записи данных, и в некоторых системах администратор может задать кластеризацию данных на основе множества отношений.
Конечно, у сетевых баз данных есть недостатки. Как и иерархические базы данных, сетевые базы данных имеют жесткую структуру. Наборы отношений и структуру записей необходимо задавать заранее. Изменение структуры базы данных означает перестройку всей базы данных.
В 70-х годах независимые производители программного обеспечения реализовали сетевую модель в таких продуктах, как IDMS компании Cullinet, Total компании Cincom и СУБД Adabas, которые приобрели большую популярность. Наиболее известной из СУБД сетевого типа в настоящее время является система DB_VISTA III, поддерживающая модель данных CODASYL.
Она реализована на языке С и может эксплуатироваться в среде операционных систем MS DOS, OS/2, UNIX, XENIX, ULTRIX и ряде других ОС на персональных компьютерах IBM PC, PC/2, SUN и VAX.
Создадим базу данных, как в лабораторной работе 1 с вышеописанными таблицами, и свяжем их соответствующими отношениями и получим следующую диаграмму (рисунок 15).
Рисунок 15 - Экран контекстного меню «Диаграммы баз данных»
26
Контрольные вопросы
1. Что собой представляет сетевая модель данных, какие групповые отношения возможны в СМД, достоинства и недостатки СМД?
2. Что собой представляет реляционная модель данных, какие разделы математики используются для манипуляций над данными в РМД?
3. Достоинства и недостатки реляционной модели данных.
4. Какая модель данных использует для представления данных граф типа «сеть»?
Лабораторная работа №4. Построение реляционных баз данных в среде MS SQL
Цель работы: изучить принципы работы с базами данных в среде Microsoft SQL. Научиться создавать реляционную базу БД в Microsoft SQL.
Содержание работы:
1) Изучение теоретических сведений.
2) Разработка БД с помощью реляционной модели.
Необходимо создать реляционную базу данных и приложение для его использования на основе таблиц заданной структуры при помощи MS SQL.
Далее рассмотрен пример создания реляционной базы данных.
Требуется, основываясь на теории нормализации процедур, создать базу данных Sotrudniki и привести его к реляционному виду.
Методические указания к выполнению.
Реляционная модель данных. В конце 60-х годов одновременно несколькими авторами были выдвинуты предложения об использовании теоретико-множественных операторов для организации доступа к данным, что и легло в основу реляционной модели данных. Реляционная модель представляет объекты и взаимосвязи между ними в виде таблиц. Впервые она была предложена доктором Э. Ф. Коддом в 1970 г. Реляционная модель данных (РМД) является в настоящее время самой распространенной. На этой модели данных базируются практически все современные СУБД для ПЭВМ.
Существенными преимуществами реляционной модели является простота представления данных, естественный характер формирования запросов, так как они не привязаны жестко к заранее определённой структуре, и высокая степень независимости данных, так как интерфейс пользователя не связан с деталями физической структуры памяти и стратегией доступа.
В основе реляционной модели данных лежит математическое понятие отношения, представляющего собой подмножество декартова произведения доменов. Отношение определяется на множестве атрибутов. Домен – это множество значений, из которых извлекаются фактические значения атрибута.
По-английски отношение называется relation, отсюда и название реляционная. В реляционной модели данных объекты и связи между ними
27
описываются в виде отношений, которые представляются двумерными таблицами. Каждому отношению соответствует своя таблица. Разница между таблицей в привычном смысле и понятием отношения заключается в том, что в отношении нет порядка – это, вообще говоря, неупорядоченное множество записей. Это, конечно, не значит, что там нет никакого порядка: просто он не подвластен ни программисту, ни администратору. Порядок определяется не отношением, а конкретной выборкой из отношения. Из одного и того же отношения можно выбрать данные в порядке возрастания зарплаты, в алфавитном порядке фамилий и т.д.
Столбцы таблицы являются атрибутами. Каждая строка таблицы образует кортеж (или запись). Домен есть множество значений, принадлежащих одной области определения. Значения атрибута берутся из домена, т.е. атрибут является подмножеством значений домена. Элементами отношения являются кортежи. Длина кортежа - количество значений в кортеже, взятых из различных доменов (столбцов таблицы). В отношении не может быть двух одинаковых кортежей. Длина кортежа определяет арность отношения. Число атрибутов в отношении называют степенью или арностью отношения. Для выполнения операций над отношениями используются реляционная алгебра и реляционное исчисление.
Достоинством реляционной модели является сравнительная простота инструментальных средств ее поддержки, недостатком – жесткость структуры данных (невозможность, например, задания строк таблицы произвольной длины) и зависимость скорости работы от размера базы данных. Для многих операций, определенных в такой модели, может оказаться необходимым просмотр всей базы данных.
Нормальные формы – основные понятия.
Процесс дальнейшей нормализации, который далее будет упоминаться просто как нормализация, основывается на концепции нормальных форм. На рисунке 16 показано несколько нормальных форм, которые определены к настоящему времени. Говорят, что отношение находится в некоторой нормальной форме, если удовлетворяет заданному набору условий. Например, отношение находится в первой нормальной форме, или сокращенно в 1 НФ, тогда и только тогда, когда оно содержит только скалярные значения.
Отсюда следует, что каждое нормализованное отношение находится в первой нормальной форме. Иначе говоря, термины «нормализованное» и
«1НФ» означают одно и то же. Однако следует отметить, что термин
«нормализованное» часто используется для обозначения нормальной формы более высокого уровня, хотя такое обозначение не очень корректно.