1.4 Неклассические модели данных

advertisement
ОБРАЗОВАТЕЛЬНАЯ АВТОНОМНАЯ НЕКОММЕРЧЕСКАЯ
ОРГАНИЗАЦИЯ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО
ОБРАЗОВАНИЯ
«ВОЛЖСКИЙ УНИВЕРСИТЕТ ИМ. В.Н. ТАТИЩЕВА»
(ИНСТИТУТ)
Кафедра «Информатика и системы управления»
Курс лекций
«Введение в теорию баз данных»
Ст. преподаватель кафедры ИиСУ
Г.В. Князева
г.о. Тольятти, 2012
2
Содержание
Ведение ......................................................................................................................... 4
1 История развития БД .............................................................................................. 7
1.1 Файловые системы ........................................................................................ 8
1.2 Классические модели данных ...................................................................... 9
1.2.1 Инвертированные списки ............................................................. 10
1.2.2 Иерархические системы ................................................................ 10
1.2.3 Сетевые системы ............................................................................ 11
1.2.4 Реляционные системы ................................................................... 12
1.3 Сравнение классических моделей данных ............................................... 12
1.3.1 Достоинства и недостатки реляционной модели ....................... 12
1.3.2 Достоинства и недостатки иерархической модели .................... 13
1.3.3 Достоинства и недостатки сетевой модели ................................. 13
1.4 Неклассические модели данных ................................................................ 14
1.4.1 Постреляционная модель данных ................................................ 14
1.4.2 Многомерная модель данных ....................................................... 15
1.4.3 Объектно-ориентированная модель данных ............................... 18
2 Основные понятия теории баз данных ............................................................... 22
2.1 Терминология БД ........................................................................................ 22
2.2 Архитектура СУБД ..................................................................................... 23
2.3 Основные функции СУБД.......................................................................... 25
2.4 Типовая организация современных СУБД ............................................... 27
3 Реляционные модели данных............................................................................... 28
3.1 Основные понятия ...................................................................................... 28
3.2 Фундаментальные свойства отношений ................................................... 31
3.3 Проектирование баз данных с использованием нормализации ............. 33
3.3.1 Первая нормальная форма ............................................................ 33
3.3.2 Вторая нормальная форма ............................................................ 34
3.3.3 Третья нормальная форма ............................................................. 36
3.3.4 Нормализация – за и против ......................................................... 36
Базы данных/Управление данными I семестр
3
3.4 Реляционная алгебра................................................................................... 37
3.4.1 Основные операции ....................................................................... 37
3.4.2 Синтаксис теоретико-множественных операций ....................... 38
3.4.3 Синтаксис специальных операций ............................................... 42
Заключение ................................................................................................................ 45
Список литературы ................................................................................................... 47
Базы данных/Управление данными I семестр
4
Ведение
Обычная
информация
хранится
в
бумажном
виде.
Документы
размещаются в папках, папки на полках и т.д. Для поиска требуемой
информации требуется перебрать множество документов. Вводятся различные
указатели для обеспечения более быстрого поиска (напр., картотеки в
библиотеках, в отделах кадров, в деканатах). Тем не менее, ручной способ
обработки информации очень трудоемок и длителен.
С самого начала развития вычислительной техники (ВТ) образовались два
направления её использования:
1.
слишком
Применение ВТ для выполнения численных расчетов, которые
долго
проводить
вручную.
Становление
этого
направления
способствовало интенсификации методов численного решения сложных
математических задач, развитию языков программирования.
2.
Использование
средств
ВТ
в
автоматизированных
информационных системах (ИС)
Информационная система - система, реализующая автоматизированный
сбор, обработку и манипулирование данными и включающая технические
средства обработки данных, программное обеспечение и соответствующий
персонал.
Классическими примерами являются банковские системы, системы
резервирования ж/д и авиа билетов, мест в гостиницах и т.д.
Основой любой информационной системы является база данных (БД).
База данных — представленная в объективной форме совокупность
самостоятельных материалов (статей, расчётов, нормативных актов, судебных
решений и иных подобных материалов), систематизированных таким образом,
чтобы эти материалы могли быть найдены и обработаны с помощью
электронной вычислительной машины (ЭВМ)(Гражданский кодекс РФ, ст.
1260).
База данных -
структурированный набор данных, хранящийся в
электронном виде.
Базы данных/Управление данными I семестр
5
Другие определения из авторитетных монографий и стандартов:
База данных — организованная в соответствии с определёнными
правилами и поддерживаемая в памяти компьютера совокупность данных,
характеризующая актуальное состояние некоторой предметной области и
используемая
для
удовлетворения
информационных
потребностей пользователей.
База данных — совокупность данных, хранимых в соответствии со
схемой данных, манипулирование которыми выполняют в соответствии с
правилами средств моделирования данных.
База данных — некоторый набор перманентных (постоянно хранимых)
данных, используемых прикладными программными системами какого-либо
предприятия.
База данных — совместно используемый набор логически связанных
данных (и описание этих данных), предназначенный для удовлетворения
информационных потребностей организации.
Существует
множество
других
определений, отражающих
скорее
субъективное мнение тех или иных авторов о том, что означает база данных
(БД) в их понимании, однако общепризнанная единая формулировка
отсутствует.
Наиболее
часто
используются
следующие
отличительные
признаки:
1. БД хранится и обрабатывается в вычислительной системе. Таким
образом,
любые
внекомпьютерные
хранилища
информации
(архивы,
библиотеки, картотеки и т. п.) базами данных не являются.
2. Данные в БД логически структурированы (систематизированы) с
целью обеспечения возможности их эффективного поиска и обработки в
вычислительной
выделение
системе.
составных
Структурированность
частей
(элементов),
подразумевает
связей
между
явное
ними,
а
также типизацию элементов и связей, при которой с типом элемента (связи)
соотносится определённая семантика и допустимые операции.[6]
Базы данных/Управление данными I семестр
6
3. БД включает метаданные, описывающие логическую структуру БД в
формальном виде (в соответствии с некоторой метамоделью). В соответствии с
ГОСТ Р ИСО МЭК ТО 10032-2007, «постоянные данные в среде базы данных
включают в себя схему и базу данных. Схема включает в себя описания
содержания, структуры и ограничений целостности, используемые для
создания и поддержки базы данных. База данных включает в себя набор
постоянных данных, определенных с помощью схемы. Система управления
данными использует определения данных в схеме для обеспечения доступа и
управления доступом к данным в базе данных».
Из перечисленных признаков только первый является строгим, а другие
допускает различные трактовки и различные степени оценки. Можно лишь
установить некоторую степень соответствия требованиям к БД.
В такой ситуации не последнюю роль играет общепринятая практика. В
соответствии с ней, например, не называют базами данных файловые архивы,
Интернет-порталы илиэлектронные таблицы, несмотря на то, что они в
некоторой степени обладают признаками БД. Принято считать, что эта степень
в большинстве случаев недостаточна (хотя могут быть исключения).
Многие
специалисты
указывают
на
распространённую
ошибку,
состоящую в некорректном использовании термина «база данных» вместо
термина «система управления базами данных», и указывают на необходимость
различения этих понятий
Базы данных/Управление данными I семестр
7
1
История развития БД
История возникновения и развития технологий баз данных может
рассматриваться как в широком, так и в узком аспекте.
В широком аспекте понятие истории баз данных обобщается до истории
любых средств, с помощью которых человечество хранило и обрабатывало
данные. В таком контексте упоминаются, например, средства учёта царской
казны
и
налогов
в
древнем Шумере (4000 г.
до н. э.),
узелковая
письменность инков — кипу, клинописи, содержащие документы Ассирийского
царства и т. п. Следует помнить, что недостатком этого подхода является
размывание понятия «база данных» и фактическое его слияние с понятиями
«архив» и даже «письменность».
История баз данных в узком аспекте рассматривает базы данных в
традиционном (современном) понимании. Эта история начинается с 1955 года,
когда
появилось
программируемое
записей. Программное
обеспечение этого
обработки
на
записей
основе
оборудование
времени
файлов.
обработки
поддерживало
Для
хранения
модель
данных
использовались перфокарты.
Оперативные сетевые базы данных появились в середине 1960-х.
Операции над оперативными базами данных обрабатывались в интерактивном
режиме
с
помощью
терминалов.
Простые
индексно-последовательные
организации записей быстро развились к более мощной модели записей,
ориентированной на наборы. За руководство работой Data Base Task
Group (DBTG),
разработавшей
стандартный язык
описания
данных и манипулирования данными, Чарльз Бахман получил Тьюринговскую
премию.
В это же время в сообществе баз данных COBOL была проработана
концепция схем баз данных и концепция независимости данных.
Следующий
важный
этап
связан
с
появлением
в
начале 1970-
х реляционной модели данных, благодаря работам Эдгара Ф. Кодда. Работы
Кодда открыли путь к тесной связи прикладной технологии баз данных с
Базы данных/Управление данными I семестр
8
математикой и логикой. За свой вклад в теорию и практику Эдгар Ф. Кодд
также получил премию Тьюринга.
Сам термин database (база данных) появился в начале 1960-х годов, и был
введён в употребление на симпозиумах, организованных фирмой SDC (System
Development Corporation) в 1964 и 1965 годах, хотя понимался сначала в
довольно узком смысле, в контексте систем искусственного интеллекта. В
широкое употребление в современном понимании термин вошёл лишь в 1970-е
годы.
Одним из первых шагов в развитии информационных систем явилось
создание централизованных систем управления файлами.
1.1 Файловые системы
Файловые системы были разработаны для получения более быстрого
доступа к данным.
С точки зрения прикладной программы, файл – это именованная область
внешней памяти, в которую можно записывать и из которой можно считывать
данные. Правила именования файлов, способ доступа к данным зависят от
конкретной системы управления файлами. Система управления берет на себя
распределение внешней памяти, отображение имен файлов в соответствующие
адреса во внешней памяти и обеспечение доступа к данным.
Но файловые системы имеют существенные недостатки:
1. Изоляция данных. Когда данные изолированы в разных файлах,
существенно возрастает время доступа к требуемым данным.
2. Несовместимость форматов данных. При выборке данных из нескольких
файлов,
созданных
в
различных
программах,
требуется
специальное
программное обеспечение, преобразующее данные в общий формат.
3. Дублирование данных. Из-за децентрализованной работы, проводимой
каждым подразделением на предприятии, в различных файлах может
содержаться одинаковая информация, что ведет к непроизводительному
использованию ресурсов.
Базы данных/Управление данными I семестр
9
4. Нарушение целостности. В разных файлах данные могут быть
противоречивыми.
Для эффективной работы с данными был разработан совершенно новый
подход к управлению информацией. Новые программные системы были
названы
Системами
Управления
Базами
Данных,
а
сами
хранилища
информации, назывались Базами данных. Историю развития СУБД принято
делить на три периода: дореляционные, реляционные и постреляционные
СУБД.
1.2 Классические модели данных
Классические модели принято условно разделять на дореляционные и
реляционные системы
Дореляционные системы можно разделить на 3 большие категории:
1.
Инвертированные списки
2.
Иерархические системы
3.
Сетевые системы
Необходимо иметь о них представление по нескольким причинам:
 во-первых, эти системы исторически предшествовали реляционным, и
для правильного понимания причин повсеместного перехода к реляционным
системам нужно знать хотя бы что-нибудь о их предшественниках;
 во-вторых, внутренняя организация реляционных систем во многом
основана на использовании методов ранних систем;
 в-третьих, некоторое знание в области ранних систем будет полезно
для понимания путей развития постреляционных СУБД.
Эти системы активно использовались в течение многих лет, дольше, чем
используется какая-либо из реляционных СУБД. Некоторые из ранних систем
используются даже в наше время, накоплены громадные базы данных, и одной
из актуальных проблем информационных систем является использование этих
систем совместно с современными системами.
Базы данных/Управление данными I семестр
10
1.2.1 Инвертированные списки
Инвертированные списки представляют собой список таблиц и список
индексов, позволяющих осуществлять доступ к данным, хранимым в таблицах,
используя поиск по вторичному ключу. База данных, организованная с
помощью инвертированных списков, похожа на реляционную БД, но с тем
отличием, что хранимые таблицы и пути доступа к ним видны пользователям.
Организация доступа к данным на основе инвертированных списков
используется практически во всех современных реляционных СУБД, но в этих
системах
пользователи
не
имеют
непосредственного
доступа
к
инвертированным спискам (индексам). Пример инвертированного списка
показан на рисунке 1.1.
I уровень
II уровень
III уровень
№
№
Блок1
№
ФИО
№
гр
блока
п/п
гр
201 1
3
1
Аронов
202
202 2
4
2
Ботов
203
203 3
Блок2
3
Викулова
201
Индексный
1
4
Громов
201
файл
с
5
5
Дроздов
202
упорядоченн
Блок3 Блоки
2
уровня
ыми
упорядочены по значениям
2
вторичными
вторичного ключа
ключами
Рисунок 1.1 – Пример инвертированного списка
1.2.2 Иерархические системы
Иерархическая БД состоит из упорядоченного набора деревьев.
Тип дерева состоит из одного "корневого" типа записи и упорядоченного
набора из нуля или более типов поддеревьев (каждое из которых является
некоторым типом дерева). В иерархических структурах запись-потомок должна
иметь одного предка. Пример иерархической системы хранения данных
показан на рисунке 1.2.
Для БД определен полный порядок обхода - сверху-вниз, слева-направо.
Базы данных/Управление данными I семестр
11
Факультет
Названи
е
Номер
Группа
Номер
Кафедра
Старост
а
Названи
е
Зав.каф.
Студент
№
студ.биле
та
Фамили
я
Преподаватель
Таб.ном
Начальник лаборатории
ФамилиТаб.ном
Фамилия
я
Рисунок 1.2 – Пример иерархической структуры организации хранения данных
Типичным примером иерархической модели является организация
хранения данных в операционной системе Windows. Это особенно хорошо
видно, если открыть программу Проводник.
1.2.3 Сетевые системы
Сетевой
подход
к
организации
данных
является
расширением
иерархического (рисунок 1.3).
Ведет занятия в
Преподавате
ль
Группа
Занимается у
Группа
Преподавате
ль
ИТЗ 204
Преподаватель
Карпова
ИТЗ 203
Преподавате
ль
Кулаков
Рисунок 1.3 – Пример сетевой структуры организации хранения данных
В сетевой структуре данных потомок может иметь любое число предков.
Между ветвями дерева могут существовать горизонтальные связи. Это
Базы данных/Управление данными I семестр
12
достаточно
сложные
структуры,
состоящие
из
"наборов”.
"Наборы"
соединяются с помощью "записей-связок", образуя цепочки и т.д. Один из
разработчиков операционной системы UNIX сказал: "Сетевая база – это самый
верный способ потерять данные".
Сложность практического использования иерархических и
сетевых
СУБД заставляла искать иные способы представления данных.
1.2.4 Реляционные системы
Почти все программные продукты, созданные с конца 70-х годов,
основаны на реляционном подходе:
1.
Данные представлены в двумерных таблицах.
2.
Пользователю предоставляются операторы для выборки данных, с
помощью которых генерируются новые таблицы на основе исходных.
Более подробное описание реляционной модели представлено в разделе 3.
1.3 Сравнение классических моделей данных
При сравнении моделей данных очень трудно отделить факторы,
характеризующие
принципиальные
особенности
модели,
от
факторов,
связанных с реализацией этих моделей данных средствами конкретных СУБД.
1.3.1 Достоинства и недостатки реляционной модели
Рассматривая преимущества и недостатки известных моделей данных,
следует отметить ряд несомненных достоинств реляционного подхода:
1. Простота. B реляционной модели всего одна информационная
конструкция,
которая
формализует
табличное
представление
данных,
привычное для пользователей экономистов.
2. Теоретическое обоснование. Наличие теоретически обоснованных
методов нормализации отношений и проверки ацикличности структуры
позволяет получать базы данных с заданными характеристиками.
3. Независимость данных. Когда необходимо изменить структуру
реляционной БД, это, как правило, приводит к минимальным изменениям в
прикладных программах.
Базы данных/Управление данными I семестр
13
Среди недостатков реляционной модели данных необходимо назвать
следующие.
1.
Низкая скорость при выполнении операции соединения.
2.
Большой расход памяти для представления реляционной БД. Хотя
проектирование в ЗНФ рассчитано на минимальную избыточность (каждый
факт представляется в БД один раз), другие модели данных обеспечивают
меньший расход памяти для представления тех же фактов.
1.3.2 Достоинства и недостатки иерархической модели
Достоинствами иерархической модели данных являются следующие.
1. Простота.
Хотя
модель
использует
три
информационные
конструкции, иерархический принцип соподчиненности понятий является
естественным для многих экономических задач (например, организация
статистической отчетности).
2. Минимальный расход памяти. Для задач, допускающих реализацию с
помощью любой из трех моделей данных, иерархическая модель позволяет
получить представление с минимально требуемой памятью.
Недостатки иерархической модели.
1. Неуниверсальность. Многие важные варианты взаимосвязи данных
невозможно реализовать средствами иерархической модели, или реализация
связана с повышением избыточности в базе данных.
2. Допустимость только навигационного принципа доступа к данным.
3. Доступ к данным производится только через корневое отношение.
1.3.3 Достоинства и недостатки сетевой модели
Необходимо отметить следующие преимущества сетевой модели данных.
1. Универсальность. Выразительные возможности сетевой модели
данных являются наиболее обширными в сравнении с остальными моделями.
2. Возможность доступа к данных через значения нескольких отношений
(например, через любые основные отношения).
В качестве недостатков сетевой модели данных можно назвать.
Базы данных/Управление данными I семестр
14
1. Сложность, т.е. обилие понятий, вариантов их взаимосвязей и
особенностей реализации.
2. Допустимость только навигационного принципа доступа к данным.
Результаты, полученные для ациклических баз данных, позволяют
говорить
о
равноценных
возможностях
представления
информации
у
ациклических реляционных БД, двухуровневых сетевых БД и иерархической
БД без логических связей.
При
анализе
моделей
данных
не
затрагивалась
проблема
упорядоченности значений в отношениях баз данных. Для реляционной модели
данных эта упорядоченность с теоретической точки зрения необязательна, а в
двух других моделях она широко используется для повышения эффективности
реализации запросов.
1.4 Неклассические модели данных
1.4.1 Постреляционная модель данных
Классическая реляционная модель предполагает неделимость данных,
хранящихся в полях записей таблиц. Это означает, что информация в таблице
представляется в первой нормальной форме. Существует ряд случаен, когда это
ограничение мешает эффективной реализации приложений.
Постреляционная модель данных представляет собой расширенную
реляционную
модель,
снимающую
ограничение
неделимости
данных,
хранящихся в записях таблиц. Постреляционная модель данных допускает
многозначные поля - поля, значения которых состоят из подзначений. Набор
значений
многозначных
полей
считается
самостоятельной
таблицей,
встроенной в основную таблицу.
По сравнению с реляционной моделью в постреляционной модели
данные хранятся более эффективно, а при обработке не требуется выполнять
операцию соединения данных
из двух
таблиц.
Помимо
обеспечения
вложенности полей постреляционная модель поддерживает ассоциированные
многозначные поля (множественные группы). Совокупность ассоциированных
полей называется ассоциацией. При этом в строке первое значение одного
Базы данных/Управление данными I семестр
15
столбца ассоциации соответствует первым значениям всех других столбцов
ассоциации. Аналогичным образом связаны все вторые значения столбцов и т.
д.
На длину полей и количество полей в записях таблицы не накладывается
требование постоянства. Это означает, что структура данных и таблиц имеет
большую гибкость.
Поскольку постреляционная модель допускает хранение в таблицах
ненормализованных данных, возникает проблема обеспечения целостности и
непротиворечивости данных. Эта проблема решается включением в СУБД
механизмов, подобных хранимым процедурам в клиент-серверных системах.
Для описания функций контроля значений в полях имеется возможность
создавать процедуры (коды конверсии и коды корреляции), автоматически
вызываемые до или после обращения
к данным. Коды корреляции
выполняются сразу после чтения данных, перед их обработкой. Коды
конверсии, наоборот, выполняются после обработки данных.
Достоинством
представления
постреляционной
совокупности
постреляционной
модели
связанных
таблицей.
Это
является
реляционных
обеспечивает
возможность
таблиц
высокую
одной
наглядность
представления информации и повышение эффективности ее обработки.
Недостатком постреляционной модели является сложность решения
проблемы обеспечения целостности и непротиворечивости хранимых данных.
Рассмотренная нами постреляционная модель данных поддерживается СУБД
uniVers. К числу других СУБД, основанных на постреляционной модели
данных, относятся также системы Bubba и Dasdb.
1.4.2 Многомерная модель данных
Многомерный подход к представлению данных в базе появился
практически
одновременно
с
реляционным,
но
реально
работающих
многомерных СУБД (МСУБД) до настоящего времени было очень мало. C
середины 90-х годов интерес к ним стал приобретать массовый характер.
Базы данных/Управление данными I семестр
16
Толчком послужила в 1993 году программная статья одного из
основоположников реляционного подхода Э. Кодда. B ней сформулированы 12
основных требований к системам класса OLAP (OnLine Analytical Processing оперативная аналитическая обработка), важнейшие из которых связаны с
возможностями концептуального представления и обработки многомерных
данных.
Многомерные
системы
позволяют
оперативно
обрабатывать
информацию для проведения анализа и принятия решения.
B развитии концепций ИС можно выделить следующие два направления:
 системы оперативной (транзакционной) обработки;
 системы аналитической обработки (системы поддержки принятия
решений).
Реляционные СУБД предназначались для информационных систем
оперативной обработки информации и в этой области были весьма
эффективны. B системах аналитической обработки они показали себя
несколько неповоротливыми и недостаточно гибкими. Более эффективными
здесь оказываются многомерные СУБД (МСУБД).
Многомерные
СУБД
являются
узкоспециализированными
СУБД,
предназначенными для интерактивной аналитической обработки информации.
Раскроем основные понятия, используемые в этих СУБД: агрегируемость,
историчность и прогнозируемость данных.
Агрегируемостъ
данных
означает
рассмотрение
информации
на
различных уровнях ее обобщения. B информационных системах степень
детальности представления информации для пользователя зависит от его
уровня: аналитик, пользователь-оператор, управляющий, руководитель.
Историчностъ данных предполагает обеспечение высокого уровня
статичности (неизменности) собственно данных и их взаимосвязей, а также
обязательность привязки данных ко времени.
Статичность
данных
позволяет
использовать
при
их
обработке
специализированные методы загрузки, хранения, индексации и выборки.
Базы данных/Управление данными I семестр
17
Временная привязка данных необходима для частого выполнения
запросов,
имеющих
значения
времени
и
даты
в
составе
выборки.
Необходимость упорядочения данных по времени в процессе обработки и
представления данных пользователю накладывает требования на механизмы
хранения и доступа к информации. Так, для уменьшения времени обработки
запросов желательно, чтобы данные всегда были отсортированы в том порядке,
в котором они наиболее часто запрашиваются.
Прогнозируемостъ
данных
подразумевает
задание
функций
прогнозирования и применение их к различным временным интервалам.
Многомерность модели данных означает не многомерность визуализации
цифровых данных, а многомерное логическое представление структуры
информации при описании и в операциях манипулирования дынными.
По сравнению с реляционной моделью многомерная, организация данных
обладает более высокой наглядностью и информативностъю.
Если речь идет о многомерной модели с мерностью больше двух, то не
обязательно визуально информация представляется в виде многомерных
объектов (трех-, четырех- и более мерных гиперкубов). Пользователю и в этих
случаях более удобно иметь дело с двухмерными таблицами или графиками.
Данные при этом представляют собой «вырезки» (точнее, «срезы») из
многомерного
хранилища
данных,
выполненные
с
разной
степенью
детализации.
Основным достоинством многомерной модели данных является удобство
и эффективность аналитической обработки больших объемов данных,
связанных со временем. При организации обработки аналогичных данных на
основе реляционной модели происходит нелинейный рост трудоемкости
операций в зависимости от размерности БД и существенное увеличение затрат
оперативной памяти на индексацию.
Недостатком многомерной модели данных является ее громоздкость для
простейших задач обычной оперативной обработки информации.
Базы данных/Управление данными I семестр
18
Примерами систем, поддерживающих многомерные модели данных,
являются Essbase (Arbor Software), Media Mu1ti-matгix (Speedware), Oracle
Express Server (Огас1е) и Cache (InterSystems). Некоторые программные
продукты, например Media/M R (Speedware), позволяют одновременно работать
с многомерными и с реляционными БД. B СУБД Cache, и которой внутренней
моделью данных является многомерная модель, реализованы три способа
доступа к данным: прямой (на уровне узлов многомерных массивов),
объектный и реляционный.
1.4.3 Объектно-ориентированная модель данных
В объектно-ориентированной модели при представлении данных имеется
возможность идентифицировать отдельные записи базы. Между записями базы
данных и функциями их обработки устанавливаются взаимосвязи с помощью
механизмов,
подобных
соответствующим
средствам
в
объектно-
ориентированных языках программирования.
Стандартизованная
объектно-ориентированной
модель
описана
в
рекомендациях стандарта ODMG-93 (Object Database Management Group группа управления объектно-ориентированными базами данных). Реализовать в
полном объеме рекомендации ODMG-93 пока не удается.
Логическая структура объектно-ориентированной БД внешне похожа на
структуру иерархической БД. Основное отличие между ними состоит в методах
манипулирования данными.
Для выполнения действий над данными в рассматриваемой модели БД
применяются логические операции, усиленные объектно-ориентированными
механизмами инкапсуляции, наследования и полиморфизма Ограниченно могут
применяться операции, подобные командам SQL (например, для создания БД).
Создание
и
модификация
БД
сопровождается
автоматическим
формированием и последующей корректировкой индексов (индексных таблиц),
содержащих информацию для быстрого поиска данных.
Рассмотрим
кратко
понятия
инкапсуляции,
наследования
и
полиморфизма применительно к объектно-ориентированной модели БД.
Базы данных/Управление данными I семестр
19
Инкапсуляция
ограничивает область
видимости
имени
свойства
пределами того объекта, в котором оно определено.
Наследование, наоборот, распространяет область видимости свойства на
всех потомков объекта.
Полиморфизм в объектно-ориентированных языках программирования
означает способность одного и того же программного кода работать с
разнотипными данными. Другими словами, он означает допустимость в
объектах разных типов иметь методы (процедуры или функции) с одинаковыми
именами. Во время выполнения объектной программы одни и те же методы
оперируют с разными объектами в зависимости от типа аргумента.
Поиск в объектно-ориентированной БД состоит в выяснении сходства
между объектом, задаваемым пользователем, и объектами, хранящимися в БД.
Определяемый пользователем объект, называемый объектом-цёлью (свойство
объекта имеет тип goal), в общем случае может представлять собой
подмножество всей хранимой в БД иерархии объектов. Объект-цель, а также
результат вьполнения запроса могут храниться в самой базе.
Основным достоинством объектно-ориентированной модели данных в
сравнении с реляционной является возможность отображения информации о
сложных взаимосвязях объектов. Объектно-ориентированная модель данных
позволяет идентифицировать отдельную запись базы данных и определять
функции их обработки.
Недостатками объектно-ориентированной модели являются высокая
понятийная сложность, неудобство обработки данных и низкая скорость
выполнения запросов.
B 90-e годы существовали экспериментальные прототипы объектноориентированных систем управления базами данных. B настоящее время такие
системы получили широкое распространение, в частности, К ним относятся
следующие СУБД: POET (POET Software), Jasmine (Computer Associates),
Versant (Versant Technologies), 02 (Ardent Software), ODB-Jupiter (научнопроизводственный центр «Интелтек Плюс»), а также Iris, Orion и Postgres.
Базы данных/Управление данными I семестр
20
Поведем некоторые итоги данного раздела.
Определение модели данных предусматривает указание множества
допустимых информационных конструкций, множества допустимых операций
над данными и множества ограничений для хранимых значений данных.
Модель данных, с одной стороны, представляет собой формальный
аппарат для описания информационных потребностей пользователей, а с
другой - большинство СУБД ориентируются на конкретную модель данных, и,
таким образом, если информационные потребности удается точно выразить
средствами одной из моделей данных, то соответствующая СУБД позволяет
относительно быстро создать работоспособный фрагмент ЭИС.
Информационные конструкции, операции и ограничения моделей данных
выбираются
из
достаточно
небольшого
множества
вариантов,
характеризующего «крупные» информационные объекты и операции. B
частности, не допускается рассмотрение отдельных символов данных, операций
сложения атрибутов, ограничения на соответствие типов данных и т. п., что
характерно для языков программирования.
Классификация
информационных
конструкций
(информационных
объектов) тесно связана с областью их использования в ЭИС.
1. Объекты для технологии баз данных - отношения и веерные
отношения.
2. Объекты для технологии искусственного интеллекта - предикаты,
фреймы и семантические сети.
3. Объекты для технологии мультимедиа - тексты, графические
изображения, фонограммы и видеофрагменты.
Информационные
объекты
послужили
основой
для
объектно-
ориентированного проектирования систем, когда фиксируется множество
информационных объектов и действий над объектами. Типичный список
действий включает в себя создание/уничтожение объекта, редактирование
объекта, фиксацию одного объекта в качестве части другого объекта,
связывание объектов, синхронизацию действий над объектами.
Базы данных/Управление данными I семестр
21
Довольно-таки часто все названные объекты встраиваются в структуру
отношений, которые можно считать простейшими универсальными объектами.
На окончательный выбор модели данных влияют многие дополнительные
факторы, например, наличие хорошо
зарекомендовавших
себя
СУБД,
квалификация прикладных программистов, размер базы данных и др.
B последнее время реляционные СУБД заняли преимущественное
положение как средство разработки ЭИС. Недостатки реляционной модели
компенсируются ростом быстродействия и ресурсов памяти современных ЭВМ.
Вследствие процессов децентрализации управления в экономике многие базы
данных ЭИС имеют простую структуру, которая легко трансформируется в
понятные системы таблиц (отношений).
Таблица 1.1 – Обзор популярных СУБД
Дореляционные системы
Категория
Название продукта
Инвертированные CA-DATACOM/DB
Фирма-изготовитель
Computer Associates Internatonal
списки
Иерархические
IMS
IBM
CA-IDMS/DB
Computer Associates Internatonal
системы
Сетевые системы
Реляционные системы
Реляционные
DB 2
IBM
Oracle
Oracle
Ingres
Ingres Division of the Ask Group Inc.
Sybase
Sybase
Access
Microsoft
Paradox
Borland
Базы данных/Управление данными I семестр
22
2
Основные понятия теории баз данных
2.1 Терминология БД
База данных (БД) – это единое хранилище данных, которое однократно
определяется, а затем используется многими пользователями. В СУБД
определение данных отделено от приложения. Добавление и изменение данных
никак не влияет на приложение.
Система управления БД (СУБД) – программный комплекс, с помощью
которого пользователи могут определять и поддерживать БД, а также
осуществлять контролируемый доступ к данным (рисунок 2.1)
Приложение1
(Пользователь бухгалтерия)
База
данных
СУБД
Приложение2
(Пользователь –
Гл.технолог)
Приложение n
(Пользователь - M)
Рисунок 2.1 – Структура СУБД
Для определения БД (тип данных, структура, ограничения и т.д.)
используется язык DDL (Data Definition Language).
Для манипулирования данными (вставка, обновление, извлечение
информации по определенному условию) используется язык DML (Data
Manipulation Language).
Существует
две
разновидности
языка
DML:
процедурный
и
непроцедурный. Процедурные языки обычно обрабатывают информацию в БД
последовательно – запись за записью. Непроцедурные языки оперируют
целыми наборами данных. Наиболее распространенным типом непроцедурного
языка, который сегодня является стандартом при работе с реляционными БД,
является язык SQL.
Базы данных/Управление данными I семестр
23
Программы, с помощью которых пользователи работают с БД,
называются приложениями. С одной БД может работать несколько
приложений параллельно и независимо друг от друга. Например, если БД
моделирует работу предприятия в целом, то для работы с ней могут быть
созданы разные приложения:
 приложение по учету кадров;
 приложение для складского учета;
 приложение по планированию производственного процесса и т.д.
И именно СУБД призвана обеспечить работу множества приложений с
единой БД таким образом, чтобы каждое из них выполнялось корректно, но
учитывало все изменения в БД, вносимые другими приложениями.
Банк данных (БнД) – это система специальным образом организованных
данных – баз данных, программных, технических, языковых и других средств.
Банки данных позволяют обобщать информацию и извлекать новые знания по
заложенным формализованным правилам, например, по правилам логики.
Иногда Банки данных называют Базами знаний.
2.2 Архитектура СУБД
Проект базы данных начинается с анализа предметной области и
выявления
требований
к
ней
отдельных
пользователей
(сотрудников
организации, для которых создается база данных), т.е. сначала создается
обобщенное неформальное описание создаваемой базы данных.
Описание,
выполненное
с
использованием
естественного
языка,
математических формул, таблиц, графиков и других средств, понятных всем
людям,
работающих
над
проектированием
базы
данных,
называют
инфологической моделью данных (рисунок 3.1).
Такая человеко-ориентированная модель полностью независима от
физических параметров среды хранения данных. В конце концов, этой средой
может быть память человека, а не компьютер. Остальные модели, показанные
на рисунке. 3.1, являются компьютеро-ориентированными.
Базы данных/Управление данными I семестр
24
Рисунок 3.1 – Архитектура СУБД
Описание на языке конкретной СУБД, создаваемое по инфологической
модели данных, называют даталогической моделью данных (c указанием
типов данных).
Нужные данные отыскиваются СУБД на внешних запоминающих
устройствах по физической модели данных.
Трехуровневая
архитектура
(инфологический,
даталогический
и
физический уровни) позволяет обеспечить независимость хранимых данных от
использующих их программ. Например, данные, сохраненные в виде таблиц в
программе Microsoft Excel, можно экспортировать в программу Microsoft
Access, и пользоваться ими, создавая необходимые запросы и формы. В свою
очередь, доступ к данным таблиц, созданных в Microsoft Access, можно
организовать с помощью приложений (программ), созданных в Delphi и т.д.
Кроме того, специальные программы (Oracle, SyBase, InterDase и др.)
позволяют спроектировать базы данных, позволяющие подключить к системе
любое
число
новых
пользователей
(новых
приложений),
организовав
удаленный доступ к базам данных.
Базы данных/Управление данными I семестр
25
2.3 Основные функции СУБД
Рассмотрим основные функции систем управления базами данных:
1.
Непосредственное управление данными во внешней памяти.
Эта
функция
обеспечивает
возможность
сохранения
данных,
непосредственно входящих в БД, а также выполнение некоторых служебных
функций, например ускорение доступа к данным с использованием индексов. В
развитых СУБД пользователи не обязаны знать, как эти функции реализуются в
системе.
2.
Управление буферами оперативной памяти.
СУБД обычно работают с БД значительного размера. СУБД
имеет
собственный набор буферов оперативной памяти с собственной дисциплиной
замены буферов. Для ускорения работы необходимая выборка данных
помещается в буфер оперативной памяти (кэш), над ними производятся
действия, и только потом модифицированные данные сохраняются в БД.
Заметим, что существует отдельное направление СУБД, которое
ориентировано на постоянное присутствие в оперативной памяти всей БД. Это
направление основывается на предположении, что в будущем объем
оперативной памяти компьютеров будет настолько велик, что позволит не
беспокоиться
о буферизации.
Пока
эти работы
находятся
в стадии
исследований.
3.
Управление транзакциями.
Транзакция
–
это
последовательность
операций
над
БД,
рассматриваемых СУБД как единое целое и переводящее БД из одного
состояния в другое. Транзакция либо успешно выполняется, и СУБД фиксирует
изменение БД, либо происходит откат транзакции, и ни одно из изменений не
отражается
на
состоянии
БД.
Понятие
транзакции
необходимо
для
поддержания логической целостности БД.
Понятие транзакции очень важно в многопользовательских СУБД.
Например, резервирование и приобретение билетов в ж/д
и авиа кассах,
бронирование номеров в гостиницах и т.д.
Базы данных/Управление данными I семестр
26
4.
Журнализация.
Одним из основных требований к СУБД является обеспечение
надежности хранения данных во внешней памяти, т.е. СУБД должна быть в
состоянии восстановить данные после аппаратного сбоя или программного
прерывания.
Обычно рассматриваются два возможных вида аппаратных сбоев: так
называемые мягкие сбои, которые можно трактовать как внезапную остановку
работы компьютера (например, аварийное выключение питания), и жесткие
сбои, характеризуемые потерей информации на носителях внешней памяти.
Примерами программных сбоев могут быть: аварийное завершение работы
СУБД (по причине ошибки в программе или в результате некоторого
аппаратного сбоя) или аварийное завершение пользовательской программы, в
результате чего некоторая транзакция остается незавершенной.
Понятно, что в любом случае для восстановления БД нужно располагать
некоторой дополнительной информацией. Другими словами, поддержание
надежности хранения данных в БД требует избыточности хранения данных,
причем та часть данных, которая используется для восстановления, должна
храниться особо надежно. Наиболее распространенным методом поддержания
такой избыточной информации является ведение журнала изменений БД.
Журнал - это особая часть БД, недоступная пользователям СУБД и в
которую поступают записи обо всех изменениях основной части БД. Эта часть
поддерживается с особой тщательностью (иногда поддерживаются две копии
журнала, располагаемые на разных физических дисках),
5.
Поддержка языков БД.
Языки БД позволяют понятными пользователю символами, близкими к
обычному английскому языку
создавать, модифицировать и управлять
данными в БД.
В ранних СУБД использовались два языка:
 язык определения схемы (логической структуры) БД – SDL Schema
Definition Language;
Базы данных/Управление данными I семестр
27
 язык манипулирования данными – DML Data Manipulation Language.
В современных СУБД обычно поддерживается единый интегрированный
язык, содержащий все необходимые средства для работы с БД, начиная от ее
создания, и обеспечивающий базовый пользовательский интерфейс с базами
данных. В реляционных СУБД используется язык структурированных запросов
SQL, который сочетает возможности языков SDL и DML.
2.4 Типовая организация современных СУБД
Логически
в
современной
реляционной
СУБД
можно
выделить
внутреннюю часть – ядро СУБД (часто его называют Data Base Engine),
компилятор языка БД (обычно SQL), подсистему поддержки времени
выполнения, набор утилит. В некоторых системах эти части выделяются явно, в
других - нет, но логически такое разделение можно провести во всех СУБД.
1.
Внутренняя часть - ядро СУБД (Database Engine).
Ядро отвечает за управление данными во внешней памяти, управление
буферами оперативной памяти, управление транзакциями, журнализацию. Ядро
обладает собственным интерфейсом, недоступным пользователям напрямую.
2.
Компилятор языка БД (обычно SQL).
Основной функцией является преобразование операторов языка БД в
выполняемую программу, представленную в машинных кодах.
3.
Набор утилит (вспомогательных служебных программ).
Утилиты БД обычно выполняют такие процедуры, которые слишком
накладно выполнять с использованием языка БД, например, загрузка и
выгрузка БД, сбор статистики, глобальная проверка целостности БД и т.д.
Базы данных/Управление данными I семестр
28
3
Реляционные модели данных
3.1 Основные понятия
В конце 60-х годов появились работы, в которых обсуждались
возможности применения различных табличных моделей данных, т.е.
возможности
использования
привычных
и
естественных
способов
представления данных. Наиболее значительной из них была статья сотрудника
фирмы IBM д-ра Эдгара Кодда (Codd E.F., A Relational Model of Data for Large
Shared Data
Banks. CACM 13: 6, June 1970), где, вероятно, впервые был
применен термин "реляционная модель данных".
Будучи математиком по образованию Э.Кодд предложил использовать
для обработки данных аппарат теории множеств (объединение, пересечение,
разность, декартово произведение). Он показал, что любое представление
данных сводится к совокупности двумерных таблиц особого вида, известного в
математике как отношение – relation (англ.).
Основными понятиями реляционных БД являются:
 отношение,
 тип данных,
 домен,
 атрибут,
 кортеж,
 первичные и вторичные ключи,
 целостность данных.
На рисунке 6.1 приведен пример реляционной таблицы с иллюстрацией
основных терминов, используемых в теории баз данных.
Отношение – это таблица.
Типы данных. Понятие тип данных в реляционной модели данных
полностью совпадает с понятием типа данных в языках программирования.
Обычно в современных реляционных БД допускается хранение символьных,
числовых данных, битовых строк, специализированных числовых данных
(таких как "деньги"), а также специальных "темпоральных" данных (дата,
Базы данных/Управление данными I семестр
29
время, временной интервал). В нашем примере мы имеем дело с данными трех
типов: строки символов, логический тип и целочисленный тип формата
"деньги".
Домен
Кардинальное
число
Первичный
ключ
Атрибут
Кортеж
Степень отношения
Рисунок 6.1 – Отношение (двумерная таблица)
Домен. Понятие домена более специфично для баз данных, хотя и имеет
некоторые аналогии с подтипами в некоторых языках программирования.
Домен - допустимое потенциальное множество значений данного типа в
определенной предметной области. Например, домен "Цвет" в нашем примере
определен на базовом типе строк символов, но в число его значений могут
входить только те строки, которые могут изображать название цвета (в
частности, такие строки не могут начинаться с мягкого знака).
Смысловая нагрузка понятия домен: данные считаются сравнимыми
только в том случае, когда они относятся к одному домену. В нашем примере
значения доменов "Модель" и "Цвет" относятся к типу символьных строк, но не
являются сравнимыми. Заметим, что в большинстве реляционных СУБД
понятие домена не используется, хотя в Oracle V.7 оно уже поддерживается.
Атрибут – это столбец, поле оношения. Количество атрибутов образует
степень отношения. Степень отношения «Таблица1» – 5, степень отношения
«Таблица2» - 4.
Схема отношения - это именованное множество пар {имя атрибута, имя
домена (или типа)}. Например:{Код модели Integer}, {Модель Varchar(20)},
{Цвет Varchar(20)}, {Цена Currency}.
Базы данных/Управление данными I семестр
30
Степень (арность) отношения - количество атрибутов или полей.
Степень отношения Прайс-лист равна четырем, то есть оно является 4-арным.
Кортеж - это множество пар {имя атрибута, значение}. Например:
Код модели 10215, Модель ВАЗ 21102, Цвет Коралл, Цена 200000р.
Количество кортежей называют кардинальным числом отношения или
мощностью отношения. Кардинальное число отношения изменяется во
времени в отличие от его степени.
Схема БД (в структурном смысле) - это набор именованных схем
отношений. Например (рисунок 6.2):
1.
Прайс-лист (Код модели Integer, Модель Varchar(20), Цвет
Varchar(20), Цена Currency)
2.
Продажа (Номер договора Integer, Фамилия Varchar(20), Модель
Varchar(20))
3.
Динамика продаж(…………………)
Ï ÐÀÉÑ_ËÈÑÒ
Êî ä_ì î äåëè
Ì î äåëü
Öâåò
Èí æåêòî ð
Öåí à
î ï ðåäåëÿåò
ÄÈÍ ÀÌ ÈÊÀ_Ï ÐÎ ÄÀÆ
Í î ì åð_Ï ÒÑ
Êî ä_ì î äåëè (FK)
Äàòà_ï î ñòóï ëåí èÿ
Äàòà_ï ðî äàæè
Рисунок 6.2 – Схема базы данных
Обычным житейским представлением отношения является таблица,
заголовком которой является схема отношения, а строками - кортежи
отношения-экземпляра; в этом случае имена атрибутов именуют столбцы этой
таблицы. Поэтому иногда говорят "столбец таблицы", имея в виду "атрибут
отношения".
Этой
терминологии
придерживаются
в
большинстве
коммерческих реляционных СУБД.
Как видно, основные структурные понятия реляционной модели данных
(если не считать понятия домена) имеют очень простую интуитивную
интерпретацию, хотя в теории реляционных БД все они определяются
абсолютно формально и точно.
Базы данных/Управление данными I семестр
31
Первичный ключ (primary key) - это поле (или несколько полей),
однозначно идентифицирующее запись.
Вторичный или внешний ключ (foreign key) - это поле таблицы,
используемое для связи с другой таблицей, в которой оно является первичным
ключом. Связующие поля должны иметь одинаковые типы и, как правило,
одинаковые названия. На рисунке 6.2 в таблице 1 первичным ключом является
поле Код модели. В таблице 2 поле Номер ПТС является первичным ключом, а
поле Код модели – вторичным ключом, который позволяет связать между собой
две таблицы и пользоваться выборками данных из двух таблиц одновременно.
Целостность
неприкосновенности
данных
связи
-
это
между
ряд
правил,
таблицами.
сохраняющих
Целостность
в
данных
функционирует строго на основе ключевых полей. Из двух связанных таблиц
одну обычно называют родительской, а другую дочерней. Целостность данных
гарантирует отсутствие записей-сирот (т.е. дочерней записи без родительской).
В нашем примере (рисунок 6.2) при удалении записи из родительской таблицы
1 (снятие автомобиля с производства) с определенного момента не должно быть
записей в дочерней таблице 2 (в продажу не могут поступать автомобили, не
производящиеся на заводе).
Еще один классический пример важности поддержания целостности из
банковской деятельности.
Допустим, в одной из таблиц содержатся сведения обо всех клиентах
банка (имена, паспортные данные и т.д.), а в другой – сведения о взятых
клиентами кредитах. Удаление записи о клиенте с непогашенным кредитом
может закончиться большими неприятностями. По правилам поддержания
целостности должно быть предусмотрено предупреждение типа «Прежде чем
удалить запись о клиенте, убедитесь, что его кредит погашен!».
3.2 Фундаментальные свойства отношений
Отсутствие кортежей-дубликатов. Из этого свойства вытекает наличие
у каждого отношения первичного ключа – набора атрибутов, значения которых
однозначно определяют кортеж отношения. Для каждого отношения, по
Базы данных/Управление данными I семестр
32
крайней мере, полный набор его атрибутов обладает этим свойством. Однако на
практике его делают "минимальным". Понятие первичного ключа является
исключительно важным в связи с понятием целостности баз данных.
Отсутствие упорядоченности кортежей. Отсутствие требования к
поддержанию
порядка
на
множестве
кортежей
отношения
дает
дополнительную гибкость СУБД при хранении баз данных во внешней памяти
и при выполнении запросов к базе данных.
Отсутствие упорядоченности атрибутов. Это свойство теоретически
позволяет, например, модифицировать схемы существующих отношений не
только
путем
добавления
новых
атрибутов,
но
и
путем
удаления
существующих атрибутов. Однако в большинстве существующих систем часто
в качестве неявного порядка атрибутов используется их порядок в линейной
форме определения схемы отношения. Например, обратиться к столбцу
таблицы можно по его порядковому номеру.
Атомарность значений атрибутов. Значения всех атрибутов являются
атомарными (неделимыми).
Итак, таблица обладает следующими свойствами:
1.
В таблице нет двух одинаковых строк
2.
Порядок строк в таблице произвольный
3.
Порядок столбцов в таблице произвольный
4.
На пересечении столбца и строки находится единственное
значение.
Базы данных/Управление данными I семестр
33
3.3 Проектирование баз данных с использованием нормализации
Процесс проектирования БД в немалой степени зависит от опыта и
интуиции разработчика, однако некоторые его моменты можно формализовать.
Одним из таких формальных требований является нормализация.
Процесс нормализации имеет своей целью устранение избыточности
данных. Каждой нормальной форме соответствует некоторый определенный
набор ограничений, и отношение находится в некоторой нормальной форме,
если удовлетворяет свойственному ей набору ограничений.
В теории реляционных баз данных обычно выделяется следующая
последовательность нормальных форм:
 первая нормальная форма (1NF);
 вторая нормальная форма (2NF);
 третья нормальная форма (3NF);
 нормальная форма Бойса-Кодда (BCNF);
 четвертая нормальная форма (4NF);
 пятая
нормальная
форма,
или
нормальная
форма
проекции-
соединения (5NF или PJ/NF).
Основные свойства нормальных форм:
 каждая следующая нормальная форма в некотором смысле лучше
предыдущей;
 при переходе к следующей нормальной форме свойства предыдущих
нормальных форм сохраняются.
При нормализации происходит декомпозиция (разбиение) отношения,
находящегося в предыдущей нормальной форме, в два или более отношений,
удовлетворяющих требованиям следующей нормальной формы.
3.3.1 Первая нормальная форма
Первая нормальная форма (1НФ) требует, чтобы каждое поле таблицы
БД было неделимым (атомарным) и не содержало повторяющихся групп.
Базы данных/Управление данными I семестр
34
Рассмотрим порядок нормализации на примере автоматизации процесса
отпуска товаров со склада по накладной, которая имеет вид, представленный на
рисунке 7.1.
Накладная № 123
Дата
14.11.2002
Покупатель
ООО «Коттедж»
Адрес
Г.Тольятти, ул.Тополиная, д.12
покупателя
Товар
Наименование
Ед.изм.
Цена
за
ед Количество
изм.
Общая
стоимость
Цемент
кг
5
500
2500
Доска 10 мм
м3
50
100
5000
Рисунок 7.1 – Примерный вид документа «Накладная»
Разместим имеющиеся данные в одну таблицу:
Поле Адрес покупателя можно разделить на две части: Город и
собственно Адрес. Поле Товар будет исключено, так как оно включает в себя
значения повторяющихся групп (наименование: товар1, товар2 и т.д.; ед.изм:
ед.изм1, ед.изм2 и т.д.).
Отпуск каждого товара должен фиксироваться в отдельной записи.
Получилась первая нормальная форма.
3.3.2 Вторая нормальная форма
Вторая нормальная форма (2НФ) требует, чтобы таблица была
приведена к 1НФ, и все поля таблицы зависели от первичного ключа. Поля,
которые зависят от части первичного ключа, должны быть выделены в
отдельные таблицы. Необходимо стремиться, чтобы первичный ключ не был
избыточен.
Определим для нашего примера первичный ключ.
Базы данных/Управление данными I семестр
35
Например, в его состав включим поля «Дата», «Покупатель», «Номер
накладной» и «Товар» (рисунок 7.2). Нетрудно заметить, что первичный ключ
является избыточным: поле «Номер накладной» однозначно определяет дату и
покупателя.
ОТПУСК_ТОВАРОВ_СО_СКЛАДА
Номер_накладной
Товар
Дата
Покупатель
Город
Адрес
Едизм
Цена_за_ед_изм
Отпущено_ед
Общая_стоимость
Рисунок 7.2 – Первый этап приведения таблицы к 2НФ
Оставим в составе первичного ключа поля «Товар» и «Номер накладной».
Именно такое сочетание полей позволит идентифицировать каждую запись в
таблице.
ï ðî äàåòñÿ
î ô î ðì ëÿåò
Ï Î ÊÓÏ ÀÒÅËÜ
ÒÎ ÂÀÐ
Í àèì åí î âàí èå
Åä_èçì
Öåí à
Ï î êóï àòåëü
Ãî ðî ä
Àäðåñ
Òåëåô î í
Í ÀÊËÀÄÍ Àß
¹ _í àêëàäí î é
Í àèì åí î âàí èå (FK)
Ï î êóï àòåëü (FK)
Äàòà
Êî ëè÷åñòâî
Ñóì ì à
Рисунок 7.3 – Второй этап приведения таблицы к 2НФ
Рассмотрим зависимость полей таблицы от первичного ключа (рисунок
7.3). Поля «Ед. изм.», «Цена за ед. изм.» зависят только от значения «Товар»,
поэтому выделяем эти поля в самостоятельную таблицу «Товары». Поле
«Покупатель» зависит только от значения поля «Номер накладной», поэтому
Базы данных/Управление данными I семестр
36
его и зависящие от него поля «Город» и «Адрес» выделяем в отдельную
таблицу «Покупатель». По такому же принципу формируем таблицу
«Накладная», включающие поля «Дата» и «Номер накладной».
Почему нужно приводить отношение ко второй нормальной форме?
Рассмотрим ситуацию, когда у покупателя сменился адрес. В первом случае (1
НФ) необходимо найти все записи с данным покупателем и изменить значение
в поле Адрес на новое. Покупатель, являющийся постоянным клиентом, может
иметь очень много накладных на отпуск товаров. Во втором случае (2НФ)
меняется только один кортеж в отношении «Покупатели». Кроме этого в
таблицу «Покупатели» мы можем внести сведения о потенциальных клиентах
фирмы, которые еще не получили ни одной накладной.
3.3.3 Третья нормальная форма
Третья нормальная форма (3НФ) требует, чтобы таблицы были
приведены ко 2НФ, и в таблице не имелось функциональных зависимостей
между неключевыми полями.
В таблице Накладная
имеется зависимость значения поля Сумма от
значения поля Количество и Цена из таблицы Товар. Удалив поле Сумма,
получим приведенную к 3НФ структуру базы данных.
3.3.4 Нормализация – за и против
Нормализация призвана устранить из таблиц избыточную информацию
для экономии дискового пространства. Но чем шире число сущностей,
охватываемой предметной областью, тем из большего числа таблиц будет
состоять нормализованная база данных. Поэтому с увеличением числа
нормализованных таблиц уменьшается целостное восприятие базы данных как
системы взаимосвязанных данных. Другим недостатком нормализованной БД, с
точки зрения быстроты получения результата, является необходимость
считывать информацию из разных таблиц при выполнении запросов. Поэтому,
при работе с данными большого объема приходится искать компромисс между
требованиями нормализации и необходимостью улучшения быстродействия
системы.
Базы данных/Управление данными I семестр
37
3.4 Реляционная алгебра
3.4.1 Основные операции
Теоретические основы реляционной алгебры заложили в начале 20-го
века два логика: американец Пирс и немец Шредер. Эдгар Кодд в 1970 году
сформулировал основные понятия и ограничения реляционной модели,
выделил
основные
(теоретико-множественные)
и
дополнительные
(специальные реляционные) операции реляционной алгебры.
Теоретико-множественные операции:
 объединение;
 пересечение;
 вычитание;
 декартово произведение.
На рисунке 8.1 показана иллюстрация данных операций, где каждый
прямоугольник является множеством каких-либо значений.
пересечение
объединен
ие
a
b
c
x
y
декартово произведение
a
a
b
b
c
c
вычитание
x
y
x
y
x
y
Рисунок 8.1 – Иллюстрация теоретико-множественных операций
Специальные реляционные операции:
 выборка;
 проекция;
 соединение;
 деление.
Базы данных/Управление данными I семестр
38
На рисунке 8.2 показана иллюстрация специальных реляционных
операций.
Выборка
Проекция
.
a1
a2
b1
b2
b1
b2
c1
c2
a1
a2
b1
b2
c1
c2
a3
b3
b3
c3
a3
b3
c3
Общее поле соединения
Соединение
a
a
a
b
c
x
y
z
x
y
x
y
a
Вычитание
Рисунок 8.2 – Иллюстрация специальных реляционных операций
3.4.2 Синтаксис теоретико-множественных операций
В нижеследующих таблицах приведены данные о выпускаемых деталях
на разных участках предприятия. Под ними приведены выражения для
обозначения операций над множествами деталей, а затем таблица с результатом
операции
R1- детали, выпускаемые
R2 – детали, выпускаемые
на участке 1
на участке 2
Код детали Название
Код детали Название
001
Гайка М1
001
Гайка М1
002
Гайка М2
003
Гайка М3
004
Болт М1
004
Болт М1
005
Болт М2
006
Болт М3
Базы данных/Управление данными I семестр
39
Объединение
R1  R2  r | r  R1  r  R2  или R1 UNION R2.
где R1  r1 , R2  r2  - отношения, где r1 и r2 – соответственно кортежи
отношений R1 и R2

- знак объединения;
 - операция логического сложения «ИЛИ».
R3 - объединение (общая
номенклатура
деталей
цеха)
Код детали
Название
001
Гайка М1
002
Гайка М2
003
Гайка М3
004
Болт М1
005
Болт М2
006
Болт М3
Пересечение
Пересечением отношений называется отношение, которое содержит
множество кортежей, принадлежащих и первому и второму отношению.
R1  R2  r | r  R1  r  R2  или R1 INTERSECT R2.

- знак пересечения;
 - операция логического умножения «И».
Базы данных/Управление данными I семестр
40
R4 - пересечение (детали,
выпускаемые
одновременно
на двух
участках)
Код детали
Название
001
Гайка М1
004
Болт М1
Разность (вычитание)
Разностью отношений называется отношение, содержащее множество
кортежей, принадлежащих R1 и не принадлежащих R2 (и наоборот).
R1 \ R2  r | r  R1  r  R2 ,
R2 \ R1  r | r  R2  r  R1,
или R1 MINUS R2
R2 MINUS R1.
R5
- разность (детали,
изготавливаемые
только
на участке 1)
R6
- разность (детали,
изготавливаемые
только
на участке 2)
Код детали
Название
Код детали
Название
002
Гайка М2
003
Гайка М3
005
Болт М2
006
Болт М3
Расширенное декартово произведение
R7  R8  r1, r2  | r  R1  r  R2  или R7 TIMES R8`
Базы данных/Управление данными I семестр
41
R7
-
обязательная
R8 - перечень цехов
номенклатура деталей для
завода
всех цехов
Цех
Код детали Название
Цех 1
001
Гайка М1
Цех 2
002
Гайка М2
003
Гайка М3
004
Болт М1
R9 - каждый цех изготовляет все
005
Болт М2
требуемые детали
006
Болт М3
Код детали Назван
Цех
ие
001
Гайка
Цех 1
М1
002
Гайка
Цех 1
М2
003
Гайка
Цех 1
М3
004
Болт М1 Цех 1
005
Болт М2 Цех 1
006
Болт М3 Цех 1
001
Гайка
Цех 2
М1
002
Гайка
Цех 2
М2
003
Гайка
Цех 2
М3
004
Болт М1 Цех 2
005
Болт М2 Цех 2
006
Болт М3 Цех 2
Базы данных/Управление данными I семестр
42
3.4.3 Синтаксис специальных операций
Горизонтальный выбор (операция фильтрации)
Выборка возвращает отношение, содержащее некоторые кортежи из
данного отношения, которые удовлетворяют определенным условиям
При этой операции задается условие фильтрации и проверяется его
выполнение. Все кортежи, соответствующие условию фильтрации, образуют
требуемую выборку. Например, выбрать из R9 детали с кодом «001»:
R10 = R9 [Код детали = «001»] или R9 WHERE Код детали=001
R10 - детали «001»
Код
детали
Н
Цех
азвание
Га
001
йка М1
Цех
1
Га
001
йка М1
Цех
2
Вертикальный выбор (операция проектирования)
Проекция возвращает отношение, содержащее все кортежи данного
отношения после исключения из него некоторых атрибутов
Например, необходимо в отдельной таблице представить все цеха,
изготавливающие деталь «Болт М1». Для этого необходимо выбрать детали с
заданным названием, а потом полученное отношение спроектировать на
столбец «Цех».
R11 = R9 [Название детали = «Болт М1»]
R12 = R9 [Цех]
Базы данных/Управление данными I семестр
43
R11 - детали «Болт М1»
Код детали Назван
R12
Цех
Цех
ие
Цех 1
001
Болт М1 Цех 1
Цех 2
001
Болт М1 Цех 2
Операция условного соединения
Соединение возвращает отношение, кортежи которого – это сочетание
двух кортежей, имеющих общее значение для одного или нескольких
атрибутов. Общее значение в результирующем кортеже появляется только один
раз
Для этой операции исходными являются два отношения, а результатом –
одно.
Требуется определить перечень деталей, изготавливаемые на участке 1
(см выше отношение R1) из стали «Ст1»
R13 JOIN R1
R13 - таблица материалов
Код детали Название
R1- детали, выпускаемые
Материал
на участке 1
001
Гайка М1
Ст1
Код детали Название
002
Гайка М2
Ст2
001
Гайка М1
003
Гайка М3
Ст3
002
Гайка М2
004
Болт М1
Ст1
004
Болт М1
005
Болт М2
Ст2
006
Болт М3
Ст3
005
R14
Болт М2
- детали из Ст1,
выпускаемые на участке 1
Название
Гайка М1
Болт М1
Базы данных/Управление данными I семестр
44
Деление для двух отношений бинарного и унарного возвращает
отношение, содержащее все значения одного атрибута бинарного отношения,
которые соответствуют (в другом атрибуте) всем значениям унарного типа.
Базы данных/Управление данными I семестр
45
Заключение
Хотя обработка баз данных всегда была важной темой, популярность
Интернета сделала ее еще и одной из самых нужных специальностей. Цель
базы данных — помочь людям и организациям вести учет различных вещей.
Хотя для этой цели можно использовать списки, они вызывают множество
проблем. Их сложно изменять без возникновения несоответствий, удаления из
списков могут иметь непредвиденные последствия, а неполные данные трудно
записывать. Кроме того, вводя данные, легко вызвать их противоречивость.
Наконец, различные части организации хотят поддерживать некоторые данные
совместно, а некоторые — исключительным образом. Это трудно организовать
при использовании списков.
Базы данных состоят из групп реляционных таблиц. В большинстве
случаев каждая таблица содержит данные по определенной теме. Поддержка
данных таким образом решает все проблемы, перечисленные для списков.
Связи в таблицах представляются разными способами. В этой главе связи
представлялись путем присвоения каждой строке уникального идентификатора
и использования этого идентификатора для связи строки одной таблицы со
строкой другой таблицы. Для представления связей использовались и внешние
ключи. Таблицы можно создавать с помощью языка SQL, который является
промышленным стандартом для обработки таблиц.
Система базы данных состоит из четырех основных элементов:
пользователи, приложения базы данных, СУБД и сама база данных.
Пользователи применяют базу данных для решения своих задач. Приложения
производят формы, запросы и отчеты, выполняют логику приложения и
управляют обработкой базы. СУБД создает, обрабатывает и администрирует
базу
данных.
База
интегрированных
метаданные,
данных
записей.
индексы,
—
Она
хранимые
это
самодокументированное
содержит
процедуры,
пользовательские
триггеры
и
собрание
данные,
метаданные
приложения. Хранимая процедура — это программа, которая обрабатывает
участок базы данных и хранится в базе данных. Триггер — это процедура,
Базы данных/Управление данными I семестр
46
которая вызывается при наступлении определенного события. На рис. 1.6
показаны функции компонентов базы данных.
Технология баз данных может использоваться в широком спектре
приложений. Некоторые базы данных используются одним человеком, другие
— группой людей, а третьи — большими организациями.
Подобно всем информационным системам, системы баз данных
разрабатываются
в
течение
трех
фаз:
формулирования
требований,
проектирования и реализации. Во время фазы формулирования требований
разрабатывается модель данных, или логическое представление структуры базы
данных. Модели данных важны, потому что от них зависит проектирование
базы данных и приложения. Диаграмма сущность—связь — средство,
используемое для представления модели данных.
Модель данных преобразуется в таблицы и связи на фазе проектирования.
Также проектируются индексы, ограничения, хранимые процедуры и триггеры.
Диаграммы структур данных иногда используются для таблиц документов и их
связей. Во время фазы реализации создаются таблицы, связи и ограничения,
пишутся хранимые процедуры и триггеры, база данных заполняется данными и
тестируется. Сегодня таблицы и связанные с ними конструкции создаются с
помощью SQL или графических средств, являющихся частью СУБД.
Разработка приложения идет параллельно с разработкой базы данных.
Большая
часть
этой
книги
посвящена
разработке
базы
данных,
но
проектирование и построение запросов и создание кода приложения также
будут рассматриваться в последующих главах. Существенные события в
истории обработки баз данных показаны в табл. 5.
Базы данных/Управление данными I семестр
47
Список литературы
1. Г.А.Гурвиц. Microsoft Access 2010. Разработка приложений на
реальном примере. +CD. – М.:BHV, 2010, 496 стр.
Рассматриваются этапы создания приложений баз
данных
в
файл-серверной
и
клиент-серверной
архитектурах. Описывается работа с Microsoft Access 2010
(клиент) и Microsoft SQL Server 2008 (сервер). На примере
небольшой, но реальной базы данных показан процесс
создания простого Access-приложения и выполнена его
модификация, придавшая приложению основные черты
профессиональной разработки. Даны практические
приемы перевода созданного программного комплекса в
архитектуру "клиент-сервер".
Для студентов, преподавателей, программистов и
разработчиков баз данных
2. В.М. Илюшечкин. Основы использования и проектирования баз
данных.Учебное пособие для вузов. Гриф УМО. - М.: Высшее образование,
2011, 213 стр.
В учебном пособии содержатся теоретические и
практические сведения о современных системах
управления базами данных (СУБД), об использовании и
проектировании баз данных. Рассматриваются языковые
и программные средства СУБД и систем автоматизации
проектирования баз данных. Приведены примеры
создания инфологических и даталогических моделей,
позволяющие студентам научиться проектировать базы
данных. Предназначено для студентов, обучающихся по
направлению "Информатика и вычислительная техника".
Базы данных/Управление данными I семестр
48
3. А.А. Цыганов, А.В. Кузовкин, Б.А. Щукин. Управление данными.
Учебник для студентов высших учебных заведений. Гриф УМО вузов России. –
М.: Academia (Академпресс), 2010, 256 стр.
Рассмотрены вопросы проектирования информационных
систем, организации и обработки данных, создания и
эксплуатации компьютерных баз данных. Основное
внимание уделено освещению методов, средств анализа и
моделирования предметных областей, проектированию
схем реляционных баз данных, а также изучению средств
манипулирования данными современных промышленных
систем
управления
базами
данных. Приведены
многочисленные примеры и задания, способствующие
закреплению навыков студентов в части проектирования,
создания и использования реляционных баз данных. Для
студентов очной и заочной форм обучения,
аспирантов, преподавателей. Может быть использован
для повышения квалификации специалистов.
Базы данных/Управление данными I семестр
49
Базы данных/Управление данными I семестр
Download