Базы данных. Каждый студент изучает данный предмет у одного преподавателя

Перевод цикла из 15 статей о проектировании баз данных.
Информация предназначена для новичков.
Помогло мне. Возможно, что поможет еще кому-то восполнить пробелы.

Руководство по проектированию баз данных.

1. Вступление.
Если вы собираетесь создавать собственные базы данных, то неплохо было бы придерживаться правил проектирования баз данных, так как это обеспечит долговременную целостность и простоту обслуживания ваших данных. Данное руководство расскажет вам что представляют из себя базы данных и как спроектировать базу данных, которая подчиняется правилам проектирования реляционных баз данных.

Базы данных – это программы, которые позволяют сохранять и получать большие объемы связанной информации. Базы данных состоят из таблиц , которые содержат информацию . Когда вы создаете базу данных необходимо подумать о том, какие таблицы вам нужно создать и какие связи существуют между информацией в таблицах. Иначе говоря, вам нужно подумать о проекте вашей базы данных. Хороший проект базы данных, как было сказано ранее, обеспечит целостность данных и простоту их обслуживания.
База данных создается для хранения в ней информации и получения этой информации при необходимости. Это значит, что мы должны иметь возможность помещать, вставлять (INSERT ) информацию в базу данных и мы хотим иметь возможность делать выборку информации из базы данных (SELECT ).
Язык запросов к базам данных был придуман для этих целей и был назван Структурированный язык запросов или SQL. Операции вставки данных (INSERT) и их выборки (SELECT) – части этого самого языка. Ниже приведен пример запроса на выборку данных и его результат.

SQL – большая тема для повествования и его рассмотрение выходит за рамки данного руководства. Данная статья строго сфокусирована на изложении процесса проектирования баз данных . Позднее, в отдельном руководстве, я расскажу об основах SQL.

Реляционная модель.
В этом руководстве я покажу вам как создавать реляционную модель данных. Реляционная модель – это модель, которая описывает как организовать данные в таблицах и как определить связи между этими таблицами.

Правила реляционной модели диктуют, как информация должна быть организована в таблицах и как таблицы связаны друг с другом. В конечном счете результат можно предоставить в виде диаграммы базы данных или, если точнее, диаграммы «сущность-связь», как на рисунке (Пример взят из MySQL Workbench).

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

РСУБД.

РСУБД, которую я использовал для создания таблиц примеров – MySQL. MySQL – наиболее популярная РСУБД и она бесплатна.

Утилита для администрирования БД.

После установки MySQL вы получаете только интерфейс командной строки для взаимодействия с MySQL. Лично я предпочитаю графический интерфейс для управления моими базами данных. Я часто использую SQLyog. Это бесплатная утилита с графическим интерфейсом. Изображения таблиц в данном руководстве взяты оттуда.

Визуальное моделирование.

Существует отличное бесплатное приложение MySQL Workbench. Оно позволяет спроектировать вашу базу данных графически. Изображения диаграмм в руководстве сделаны в этой программе.

Проектирование независимо от РСУБД.
Важно знать, что хотя в данном руководстве и приведены примеры для MySQL, проектирование баз данных независимо от РСУБД. Это значит, что информация применима к реляционным базам данных в общем, не только к MySQL. Вы можете применить знания из этого руководства к любым реляционным базам данных, подобным Mysql, Postgresql, Microsoft Access, Microsoft Sql or Oracle.

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

2. История.
В 70-х – 80-х годах, когда компьютерные ученые все еще носили коричневые смокинги и очки с большими, квадратными оправами, данные хранились бесструктурно в файлах, которые представляли собой текстовый документ с данными, разделенными (обычно) запятыми или табуляциями.

Так выглядели профессионалы в сфере информационных технологий в 70-е. (Слева внизу находится Билл Гейтс).

Текстовые файлы и сегодня все еще используются для хранения малых объемов простой информации. Comma-Separated Values (CSV) - значения, разделённые запятыми, очень популярны и широко поддерживаются сегодня различным программным обеспечением и операционными системами. Microsoft Excel – один из примеров программ, которые могут работать с CSV–файлами. Данные, сохраненные в таком файле могут быть считаны компьютерной программой.

Выше приведен пример того, как такой файл мог бы выглядеть. Программа, производящая чтение данного файла, должна быть уведомлена о том, что данные разделены запятыми. Если программа хочет выбрать и вывести категорию, в которой находится урок "Database Design Tutorial" , то она должна строчка за строчкой производить чтение до тех пор, пока не будут найдены слова "Database Design Tutorial" и затем ей нужно будет прочитать следующее за запятой слово для того, чтобы вывести категорию Software .

Таблицы баз данных.
Чтение файла строчка за строчкой не является очень эффективным. В реляционной базе данных данные хранятся в таблицах. Таблица ниже содержит те же самые данные, что и файл. Каждая строка или “запись” содержит один урок. Каждый столбец содержит какое-то свойство урока. В данном случае это заголовок (title) и его категория (category).

Компьютерная программа могла бы осуществить поиск в столбце tutorial_id данной таблицы по специфическому идентификатору tutorial_id для того, чтобы быстро найти соответствующие ему заголовок и категорию. Это намного быстрее, чем поиск по файлу строка за строкой, подобно тому, как это делает программа в текстовом файле.

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

История реляционной модели.
Реляционная модель баз данных была изобретена в 70-х Эдгаром Коддом (Ted Codd), британским ученым. Он хотел преодолеть недостатки сетевой модели баз данных и иерархической модели. И он очень в этом преуспел. Реляционная модель баз данных сегодня всеобще принята и считается мощной моделью для эффективной организации данных.

Сегодня доступен широкий выбор систем управления базами данных: от небольших десктопных приложений до многофункциональных серверных систем с высокооптимизированными методами поиска. Вот некоторые из наиболее известных систем управления реляционными базами данных (РСУБД):

- Oracle – используется преимущественно для профессиональных, больших приложений.
- Microsoft SQL server – РСУБД компании Microsoft. Доступна только для операционной системы Windows.
- Mysql – очень популярная РСУБД с открытым исходным кодом. Широко используется как профессионалами, так и новичками. Что еще нужно?! Она бесплатна.
- IBM – имеет ряд РСУБД, наиболее известна DB2.
- Microsoft Access – РСУБД, которая используется в офисе и дома. На самом деле – это больше, чем просто база данных. MS Access позволяет создавать базы данных с пользовательским интерфейсом.
В следующей части я расскажу кое-что о характеристиках реляционных баз данных.

3. Характеристики реляционных баз данных.
Реляционные базы данных разработаны для быстрого сохранения и получения больших объемов информации. Ниже приведены некоторые характеристики реляционных баз данных и реляционной модели данных.
Использование ключей.
Каждая строка данных в таблице идентифицируется уникальным “ключом”, который называется первичным ключом. Зачастую, первичный ключ это автоматически увеличиваемое (автоинкрементное) число (1,2,3,4 и т.д). Данные в различных таблицах могут быть связаны вместе при использовании ключей. Значения первичного ключа одной таблицы могут быть добавлены в строки (записи) другой таблицы, тем самым, связывая эти записи вместе.

Используя структурированный язык запросов (SQL), данные из разных таблиц, которые связаны ключом, могут быть выбраны за один раз. Для примера вы можете создать запрос, который выберет все заказы из таблицы заказов (orders), которые принадлежат пользователю с идентификатором (id) 3 (Mike) из таблицы пользователей (users). О ключах мы поговорим далее, в следующих частях.


Столбец id в данной таблице является первичным ключом. Каждая запись имеет уникальный первичный ключ, часто число. Столбец usergroup (группы пользователей) является внешним ключом. Судя по ее названию, она видимо ссылается на таблицу, которая содержит группы пользователей.

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


Когда вы создаете таблицу базы данных вы предоставляете тип данных для каждого столбца. К примеру, varchar – это тип данных для небольших фрагментов текста с максимальным количеством знаков, равным 255, а int – это числа.

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

Эти ограничения дают вам контроль над целостностью ваших данных и предотвращают ситуации, подобные следующим:

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

Поддержание целостности данных.
Настраивая свойства полей, связывая таблицы между собой и настраивая ограничения, вы можете увеличить надежность ваших данных.
Назначение прав.
Большинство РСУБД предлагают настройку прав доступа, которая позволяет назначать определенные права определенным пользователям. Некоторые действия, которые могут быть позволены или запрещены пользователю: SELECT (выборка), INSERT (вставка), DELETE (удаление), ALTER (изменение), CREATE (создание) и т.д. Это операции, которые могут быть выполнены с помощью структурированного языка запросов (SQL).
Структурированный язык запросов (SQL).
Для того, чтобы выполнять определенные операции над базой данных, такие, как сохранение данных, их выборка, изменение, используется структурированный язык запросов (SQL). SQL относительно легок для понимания и позволяет в т.ч. и уложненные выборки, например, выборка связанных данных из нескольких таблиц с помощью оператора SQL JOIN. Как и упоминалось ранее, SQL в данном руководстве обсуждаться не будет. Я сосредоточусь на проектировании баз данных.

То, как вы спроектируете базу данных будет оказывать непосредственное влияние на запросы, которые вам будет необходимо выполнить, чтобы получить данные из базы данных. Это еще одна причина, почему вам необходимо задуматься о том, какой должна быть ваша база. С хорошо спроектированной базой данных ваши запросы могут быть чище и проще.

Переносимость.
Реляционная модель данных стандартна. Следуя правилам реляционной модели данных вы можете быть уверены, что ваши данные могут быть перенесены в другую РСУБД относительно просто.

Как говорилось ранее, проектирование базы данных – это вопрос идентификации данных, их связи и помещение результатов решения данного вопроса на бумагу (или в компьютерную программу). Проектирование базы данных независимо от РСУБД, которую вы собираетесь использовать для ее создания.

В следующей части подробнее рассмотрим первичные ключи.

Проектирование баз данных информационных систем является до­статочно трудоемкой задачей. Оно осуществляется на основе форма­лизации структуры и процессов предметной области, сведения о которой предполагается хранить в БД. Различают концептуальное и схемно- структурное проектирование.

Концептуальное проектирование БД ИС является в значительной степени эвр"истическим процессом. Адекватность построенной в его рамках инфологической модели предметной области проверяется опытным путем, в процессе функционирования ИС.

Перечислим этапы концептуального проектирования:

* изучение предметной области для формирования общего пред­ставления о ней;

* выделение и анализ функций и задач разрабатываемой ИС;

* определение основных объектов-сущностей предметной области и отношений между ними;

* формализованное представление предметной области.

При проектировании схемы реляционной БД можно выделить сле­дующие процедуры:

*определение перечня таблиц и связей между ними;

*определение перечня полей, типов полей, ключевых полей каж­дой таблицы (схемы таблицы), установление связей между таб­лицами через внешние ключи;

*установление индексирования для полей в таблицах;

* разработка списков (словарей) для полей с перечислительными данными;

* установление ограничений целостности для таблиц и связей;

* нормализация таблиц, корректировка перечня таблиц и связей. Проектирование БД осуществляется на физическом и логическом уровнях. Проектирование на физическом уровне реализуется сред­ствами СУБД и зачастую автоматизировано.

Логическое проектирование заключается в определении числа и структуры таблиц, разработке запросов к БД, отчетных документов, создании форм для ввода и редактирования данных в БД и т. д.

Одной из важнейших задач логического проектирования БД явля­ется структуризация данных. Выделяют следующие подходы к проек­тированию структур данных:

*объединение информации об объектах-сущностях в рамках одной таблицы (одного отношения) с последующей декомпозицией на несколько взаимосвязанных таблиц на основе процедуры норма­лизации отношений;

* формулирование знаний о системе (определение типов исходных данных и взаимосвязей) и требований к обработке данных, полу­чение с помощью СА5Е-системы готовой схемы БД или даже го­товой прикладной информационной системы;

* осуществление системного анализа и разработка структурных

Информационные системы

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

Возможности человека в обработке информации резко возросли с использованием компьютеров. В применении ЭВМ для решения задач информационного обслуживания можно выделить два периода:

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

 период системного применения ЭВМ. Для решения на ЭВМ комплекса задач создаются программные средства, оперирующие одними и теми же данными, использующие единую информационную модель объекта. Эти средства не зависят от характера объекта, его модели, их можно применять для информационного обслуживания различных задач. Человечество пришло к организации информации в информационных системах.

Информационными системами (ИС) называют большие массивы данных вместе с программно-аппаратными средствами для их обработки. Различают следующие виды ИС: фактографические, документальные и экспертные системы.

Фактографическая ИС - это массив фактов - конкретных значений данных об объектах реального мира.

Информация в фактографической ИС хранится в четко структурированном виде, поэтому она способна давать однозначные ответы на поставленные вопросы, например: «Кто является победителем Чемпионата России по гимнастике в 1999 году?», «Кому принадлежит автомобиль марки AUDI 80 с регистрационным номером РА899Р77?», «Какой номер телефона в бухгалтерии МГУ?», «Кто стал Президентом России на выборах в марте 2002 года?» и т. д. Фактографические ИС используются буквально во всех сферах человеческой деятельности - в науке, материальном производстве, на транспорте, в медицине, государственной и общественной жизни, торговле, криминалистике, искусстве, спорте.

Документальные информационные системы обслуживают принципиально иной класс задач, которые не предполагают однозначного ответа на поставленный вопрос. Базу данных таких систем образует совокупность неструктурированных текстовых документов (статьи, книги, рефераты, тексты законов) и графических объектов, снабженная тем или иным формализованным аппаратом поиска. Цель системы, как правило, - выдать в ответ на запрос пользователя список документов или объектов, в какой-то мере удовлетворяющих сформулированным в запросе условиям. Например: выдать список всех статей, в которых встречается слово «Пушкин». Принципиальной особенностью документальной системы является ее способность, с одной стороны, выдавать ненужные пользователю документы (например, где слово «Пушкин» употреблено в ином смысле, чем предполагалось), а с другой - не выдавать нужные (например, если автор употребил какой-то синоним или ошибся в написании). Документальная система должна уметь по контексту определять смысл того или иного термина, например, различать «ромашка» (растение), «ромашка» (тип печатающей головки принтера).

Экспертные системы (ЭС) - интеллектуальные системы, призванные играть роль «советчика», построены на базе формализованного опыта и знаний эксперта. Ядром ЭС являются базы знаний, в которых собраны знания экспертов (специалистов) в определенной области, на основе которых ЭС позволяет моделировать рассуждения специалистов из данной предметной области.

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

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

хорошую работу на сайт">

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Контрольная работа

Проектирование реляционных баз данных

  • Нормализация отношений
  • Функциональные зависимости
  • Нормальная форма Бойса-Кодда
  • Литература

Проектирование реляционных баз данных

Основная цель проектирования баз данных - это сокращение избыточности хранимых данных, а следовательно, экономия объема используемой памяти, уменьшение затрат на многократные операции обновления избыточных копий и, в первую очередь, устранение возможности возникновения противоречий из-за хранения в разных местах сведений об одном и том же объекте. Под избыточностью подразумевается то, что некоторые данные или группы данных могут многократно повторяться.

В процессе проектирования баз данных могут возникнуть следующие проблемы:

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

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

Аномалии удаления - обратная проблема может возникнуть при удалении некоторых данных (возможна потеря полезной информации).

Не минимизировано количество Null-значений. Так же как избыточность, неопределенные значения являются источниками потенциальных проблем в реляционных базах данных, так как невозможно определить, что они означают. Поэтому их использование желательно свести к минимуму.

Первые три проблемы разрешаются в процессе нормализации отношений.

реляционная база функциональная зависимость

Нормализация отношений

Нормализация - это разбиение (или декомпозиция) таблицы на две или более, обладающих лучшими свойствами при добавлении, изменении и удалении данных. Окончательная цель нормализации сводится к получению "чистого" проекта базы данных, в котором "каждый факт хранится лишь в одном месте " , т.е. исключена избыточность данных. Это делается не столько с целью экономии памяти, сколько для исключения возможной противоречивости хранимых данных.

Каждая таблица в реляционной базе данных удовлетворяет условию, в соответствии с которым в позиции на пересечении каждой строки и столбца таблицы всегда находится единственное атомарное значение, и никогда не может быть множества таких значений. Любая таблица, удовлетворяющая этому условию, называется нормализованной . Фактически, ненормализованные таблицы, то есть таблицы, содержащие повторяющиеся группы, даже не рассматриваются в реляционной базе данных.

Нормализованная таблица соответствует первой нормальной форме , сокращенно 1НФ. Таким образом, "нормализованная" и "находящаяся в 1НФ" означают для таблицы одно и то же. Однако на практике термин "нормализованная" часто используется в более узком смысле - "полностью нормализованная", который означает, что в проекте не нарушаются никакие принципы нормализации.

Теперь в дополнение к 1НФ можно определить дальнейшие уровни нормализации - вторую нормальную форму (2НФ), третью нормальную форму (3НФ) и т.д. Считается, что таблица находится во 2НФ, если она находится в 1НФ и удовлетворяет, кроме того, некоторому дополнительному условию, суть которого будет рассмотрена ниже. Таблица находится в 3НФ, если она находится в 2НФ и, помимо этого, удовлетворяет другому дополнительному условию и т.д.

Таким образом, каждая нормальная форма является в некотором смысле более ограниченной, но и более желательной, чем предшествующая. Это связано с тем, что (n+1) - я нормальная форма не обладает некоторыми непривлекательными особенностями, свойственными n-й нормальной форме. Общий смысл дополнительного условия, налагаемого на (n+1) - ю нормальную форму по отношению к n-й нормальной форме, состоит в исключении этих непривлекательных особенностей.

Процедура нормализации отношений обратима. Например, множество отношений, находящихся в 3НФ, можно преобразовать в отношения, находящиеся в 2НФ. Это очень важное свойство нормализации означает, что в процессе нормализации информация не утрачивается.

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

Функциональные зависимости

Пусть X и Y - произвольные подмножества множества атрибутов отношения R. Y функционально зависит от X тогда и только тогда, когда каждое значение множества X связано в точности с одним значением множества Y. Обозначение: XY (читается как "X функционально определяет Y"). Левая и правая части символической записи называются детерминантом и зависимой частью соответственно.

Рис. 1. Таблица поставок ПОС

Иначе говоря, если два кортежа отношения R совпадают по значению X, то они также совпадают и по значению Y. Для пояснения рассмотрим приведенную на рис. 1 несколько измененную версию таблицы поставок, изображенной на рис. 2.

Все кортежи отношения ПОС с одинаковым значением атрибута П№ имеют одинаковые значения атрибута Гор. Значит, атрибуты Гор функционально зависят от атрибутов П№: {П№}{Гор}. Более того, в этом отношении присутствуют и другие постоянные функциональные зависимости: {П№, Д№}{Кол}, {П№, Д№}{Гор}, {П№, Д№}{Гор, Кол}, {П№, Д№}{П№}, {П№, Д№}{П№, Д№, Гор, Кол}, а также зависимости, которые являются функциональными в любой данный момент, но не все время, например, {П№}{Кол}.

Отметим, что если X является потенциальным ключом отношения R, то все атрибуты Y отношения R должны быть функционально зависимы от X (это следствие из определения потенциального ключа). Фактически, если отношение R удовлетворяет функциональной зависимости АВ и А не является потенциальным ключом, то R будет характеризоваться некоторой избыточностью . Например, в отношении ПОС сведения о том, что каждый поставщик находится в определенном городе будут повторяться много раз.

Функциональные зависимости являются ограничениями целостности, поэтому при каждом обновлении базы данных они должны быть проверены. Очевидным способом сокращения множества функциональных зависимостей является исключение тривиальных зависимостей , т.е. таких, которые не могут не выполняться. Например, {П№, Д№}{П№}. Функциональная зависимость является тривиальной тогда и только тогда, когда правая часть символьной записи является подмножеством левой части. Такие зависимости не представляют никакого интереса с практической точки зрения.

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

Функциональные зависимости могут быть изображены при помощи диаграмм. Для базы данных поставщиков и деталей (рис.1) диаграмма функциональных зависимостей изображена на рис.2.

Каждая стрелка на диаграмме начинается с первичного ключа соответствующего отношения. На диаграмме возможны и другие стрелки. В таком случае процедуру нормализации можно неформально охарактеризовать как процедуру исключения стрелок, которые начинаются не на первичном ключе.

Нормальные формы, обоснованные функциональными зависимостями

Мы упоминали о первой нормальной форме (1НФ). Приведем более строгое ее определение, а также определения других нормальных форм.

Таблица находится в первой нормальной форме (1НФ) тогда и только тогда, когда ни одна из ее строк не содержит в любом своем поле более одного значения и ни одно из ее ключевых полей не пусто.

Например, этим требованиям не удовлетворяет таблица, изображенная на рис.3 (данные в поле Д№ не атомарные):

Рис. 3. Пример таблицы, которая не является реляционным отношением

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

Если мы разрабатываем реляционную базу данных, то на первом этапе может быть создана таблица, объединяющая все рассматриваемые данные, например, Поставщики, Детали, Поставки. Таблица на рис.3 представляет собой корректное реляционное отношение. Его называют универсальным отношением проектируемой базы данных. В одно универсальное отношение включаются все представляющие интерес атрибуты и оно может содержать все данные, которые предполагается размещать в базе данных в будущем. Для малых баз данных универсальное отношение может использоваться в качестве отправной точки при их проектировании. Первичным ключом таблицы является комбинация полей П№ и Д№. Эта таблица удовлетворяет всем требованиям 1НФ.

Дозиметр

Радиометр

Дозиметр

Дозиметр

Дозиметр

Рис. 4. Отношение в первой нормальной форме

Диаграмма функциональных зависимостей такого отношения имеет вид, изображенный на рис. 4 (будем предполагать, что статус поставщика определяется городом).

Рассматриваемое отношение, которое находится в 1НФ, обладает структурой, которая по некоторым причинам не совсем желательна. Например, очевидна избыточность информации. Это приводит не только к увеличению размера базы данных, но и к разным аномалиям:

Вставка (Insert). Нельзя вставить данные о поставщике (П5), не указав деталь (Null-значение в ключевом поле недопустимо).

Удаление (Delete). При удалении некоторого кортежа приходится удалять слишком много другой информации (удаление информации о поставке удаляет информацию о поставщике).

Обновление (Update). Избыточная информация может привести к несовместимым результатам. Если поставщик П1 переехал в другой город, а обновление сделано не во всех кортежах, то база данных будет содержать противоречивую информацию.

Эти аномалии могут быть устранены путем приведения отношения ко второй нормальной форме, разбив его на два.

Таблица находится во второй нормальной форме (2НФ), если она удовлетворяет определению 1НФ и все ее поля, не входящие в первичный ключ, связаны неприводимой зависимостью с первичным ключом (или находятся в полной функциональной зависимости с первичным ключом).

Функциональные зависимости отношений нашей базы данных, приведенных ко 2НФ, показаны на рис. 4, а соответствующие таблицы - на рис. 5.

Сейчас в базу данных можно вводить сведения о поставщиках без сведений об их товаре, при удалении сведений о товаре остаются остальные данные (о поставщиках, например), сведения о городе встречаются один раз и это снимает проблему, связанную с избыточностью информации. Т.е., благодаря декомпозиции мы избавились от многих проблем, присутствовавших в отношении в 1НФ. В то же время, отношения, приведенные на рис.5, могут быть объединены и тогда мы вернемся к отношению, изображенному на рис.3 - значит декомпозиция проведена без потери данных.

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

Рис. 7. Отношения в 2НФ

Однако структура отношений, показанных на рис.7, может создать некоторые проблемы, связанные с отношением Поставщик, в котором неключевые атрибуты не являются взаимно независимыми. Зависимость атрибута Статус от атрибута П№ является функциональной и неприводимой, но эта зависимость также транзитивна через атрибут Город - каждое значение П№ определяет значение Город, а каждое значение Город определяет значение Статус. Но если выполняются зависимости АВ и ВС, то выполняется также зависимость АС. Транзитивные зависимости могут опять привести к аномалиям обновления:

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

Удаление - при удалении поставщика теряется информация о статусе города (очевидно, что причиной такой проблемы является совместная информация - в таблице содержится информация и о поставщиках, и о городе).

Обновление - статус городов повторяется несколько раз. При изменении статуса города приходится просматривать множество строк, чтобы исключить получение противоречивого результата, но вероятность ошибки остается.

Проблема решается приведением отношения Поставщик к третьей нормальной форме через его декомпозицию:

Эта процедура исключает транзитивную зависимость и разрешает все трудности.

Отношение находится в третьей нормальной форме (3НФ ) тогда и только тогда, когда оно находится в 2НФ и каждый неключевой атрибут нетранзитивно зависит от первичного ключа .

Другими словами: таблица находится в третьей нормальной форме (3НФ ), если она находится в 2НФ и ни одно из ее неключевых полей не зависит функционально от любого другого неключевого поля .

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

В процессе выполнения процедуры нормализации часто возникают ситуации, когда отношение может быть подвергнуто операции декомпозиции несколькими способами. Например, отношение Поставщик (рис.7) с функциональными зависимостями П№Город и ГородСтатус и, следовательно, транзитивной зависимостью П№ Статус. Возможны варианты декомпозиции этого отношения на две проекции, находящиеся в 3НФ:

А: (П№, Город) и (Город, Статус) (так было предложено ранее) и В: (П№, Город) и (П№, Статус)

Третий вариант декомпозиции на проекции (П№, Статус) и (Город, Статус) не может быть применен, поскольку выполняется с потерей информации - несколько городов могут иметь одинаковый статус, тогда будет потеряна информация о городе, где находится поставщик.

По некоторым причинам декомпозиция В менее желательна, чем декомпозиция А. Например, после выполнения декомпозиции В невозможно вставить информацию о том, что некоторый город имеет некоторый статус, без указания поставщика из этого города.

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

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

Каждая функциональная зависимость в отношении R является логическим следствием функциональных зависимостей в проекциях R1 и R2;

Общие атрибуты проекций R1 и R2 образуют потенциальный ключ, по крайней мере, для одной из них.

В рассматриваемом примере в декомпозиции А две проекции независимы, поскольку их общий атрибут Город является потенциальным ключом для второй проекции и каждая функциональная зависимость исходного отношения сохраняется в проекциях. Наоборот, в декомпозиции В две проекции не являются независимыми, т.к. зависимость ГородСтатус не может быть получена из функциональных зависимостей этих проекций, хотя их общий атрибут П№ является потенциальным ключом для обеих проекций.

Идея нормализации с декомпозицией на независимые проекции предложена Риссаненом (Rissanen) и называется декомпозицией с сохранением зависимости .

Нормальная форма Бойса-Кодда

До сих пор мы предполагали для простоты, что каждое отношение имеет только один потенциальный ключ - первичный ключ. Данное выше определение 3НФ не совсем подходит, если

- отношение имеет два или более потенциальных ключа;

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

Поэтому определение 3НФ было дополнено нормальной формой Бойса-Кодда (Boyce-Codd) - НФБК . Его можно сформулировать так:

Отношение находится в нормальной форме Бойса-Кодда тогда и только тогда, когда детерминанты являются потенциальными ключами .

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

Комбинация таких условий не часто встречается на практике, поэтому для отношений без таких условий 3НФ и НФБК эквиваленты.

Дадим еще одно определение: Таблица находится в нормальной форме Бойса-Кодда (НФБК ), тогда и только тогда, когда любая функциональная зависимость между ее полями сводится к неприводимой функциональной зависимости от потенционального ключа .

Рассмотрим пример, включающий два неперекрывающихся потенциальных ключа:

Поставщик (П№, Имя_П, Статус, Город),

где атрибуты П№ и Имя_П являются потенциальными ключами, а атрибуты Статус и Город совершенно независимы. Диаграмма функциональных зависимостей изображена на рис. 8. Это отношение находится в НФБК. Здесь все детерминанты являются потенциальными ключами, а все стрелки начинаются с потенциальных ключей.

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

Первый пример: Отношение Поставки (П№, Имя_П, Д№, Кол-во).

В этом отношении содержится некоторая избыточность, которая обуславливает аномалии обновления. Потенциальными ключами здесь являются {П№, Д№} и {Имя_П, Д№}, а П№ и Имя_П взаимно определяют друг друга. Это отношение не находится во второй нормальной форме и может быть разделено на две проекции (П№, Имя_П) и (П№, Д№, Кол-во) для получения неприводимых функциональных зависимостей. Но такую же декомпозицию можно предложить исходя из того, что отношение не находится в НФБК, т.к. содержит два детерминанта, которые не являются потенциальными ключами (П№ и Имя_П - детерминанты, поскольку определяют друг друга):

Поставщик (П№, Имя_П) и Поставки 1 (П№, Д№, Кол-во).

Второй пример: Отношение СДП (С, Д, П),

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

- Каждый студент изучает данный предмет у одного преподавателя;

- Каждый преподаватель ведет только один предмет (но каждый предмет может преподаваться несколькими преподавателями).

Из первого ограничения следует зависимость {С, Д}П, из второго - ПД. На рис.9 показан пример таблицы и диаграммы функциональных зависимостей такого отношения. В рассматриваемом примере есть два перекрывающихся потенциальных ключа - {С, Д} и {С, П}. Отношение находится в 3НФ (присутствующая здесь транзитивная зависимость касается ключевого атрибута), но не находится в НФБК и характеризуется некоторыми аномалиями обновления. Например, если удалить информацию о том, что Олег изучает физику, то мы потеряем информацию о том, что Петров преподает физику. Эта проблема вызвана тем, что П является детерминантом, но не является потенциальным ключом. Для решения этой проблемы исходное отношение надо разбить на две проекции: СП и ПД.

Таким образом, концепция НФБК позволяет избавиться от некоторых проблем, присущих отношениям в 3НФ. Определение НФБК проще определения 3НФ, т.к. в нем не используются понятия нормальных форм, первичного ключа и транзитивной зависимости. Кроме того, понятие потенциального ключа может быть заменено введением более фундаментального понятия функциональной зависимости. Но, с другой стороны, концепции первичного ключа, транзитивной зависимости и т.д. полезны на практике, поскольку позволяют представить идею постепенного процесса, выполняемого разработчиком для приведения произвольного отношения к эквивалентному набору отношений в НФБК.

Нормальные формы, обоснованные более сложными зависимостями

Рис. 10. Ненормализованное отношение ДПУ

В следующих нормальных формах (4НФ и 5НФ) учитываются не только функциональные, но и многозначные зависимости и зависимости соединения между атрибутами отношения. Для знакомства с ними рассмотрим ненормализованное отношение, показанное на рис.10. Каждый кортеж отношения содержит название дисциплины, группу имен преподавателей, и набор учебников. Это значит, что каждый курс может преподаваться любым преподавателем с использованием любых учебников. Преобразуем это отношение в эквивалентное нормализованное. Для представленных данных функциональные зависимости не определены. Поэтому нет формальной основы для декомпозиции этого отношения и нормализованное отношение изображено на рис. 11.

Механика

Механика

Математика

Геометрия

Математика

Мат. анализ

Рис. 11. Нормализованное отношение ДПУ

Рис. 12. Проекции {Д,П} и {Д,У} отношения ДПУ

Очевидно, что отношение ДПУ характеризуется значительной избыточностью и приводит к возникновению аномалий обновления, например, при добавлении нового преподавателя надо вводить по кортежу на каждый учебник. Тем не менее, отношение является полностью ключевым и поэтому находится в НФБК. Возникающие проблемы вызваны тем, что преподаватели и учебники полностью независимы друг от друга. Проблема нормализованного отношения ДПУ не возникла бы, если бы первоначально были разделены все независимые повторяющиеся группы. В нашем случае можно было улучшить ситуацию, заменив отношение ДПУ проекциями {Д, П} и {Д, У} (рис.12). При этом обе проекции являются полностью ключевыми и находятся в НФБК, а их соединение дает исходную таблицу, то есть, декомпозиция выполнена без потерь. Такая декомпозиция не может быть выполнена на основе функциональных зависимостей, которых нет в этом примере. Ее можно осуществить на основе многозначной зависимости. Многозначные зависимости - это обобщение функциональных зависимостей в том смысле, что каждая функциональная зависимость является многозначной, у которой зависимая часть является одноэлементным множеством.

В отношении ДПУ есть две многозначные зависимости: ДП и ДУ.

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

Вторая многозначная зависимость интерпретируется аналогично.

Пусть А , В, С являются произвольными подмножествами множества атрибутов отношения R . В многозначно зависит от А (А В ) тогда и только тогда, когда множество значений В, соответствующее заданной паре значений (А , С ) отношения R , зависит только от А, но не зависит от С .

Очевидно, что многозначная зависимость АВ выполняется только тогда, когда выполняется многозначная зависимость АС. Многозначные зависимости всегда образуют связанные пары: AB||C.

Возвращаясь к проблемам отношения ДПУ, можно сказать, что они связаны с существованием многозначных зависимостей, которые не являются функциональными (именно наличие таких зависимостей требует вставлять два кортежа, когда надо добавить данные еще об одном преподавателе физики). Проекции {Д, П} и {Д, У} не содержат многозначных зависимостей и поэтому являются более желательными. Прежде чем дать определение четвертой нормальной формы, познакомимся с теоремой Фейгина (R. Fagin):

Пусть А, В, С являются множествами атрибутов отношения R{А, В, С}. Отношение R будет равно соединению его проекций {А, В} и {А, С} тогда и только тогда, когда для отношения R выполняются многозначные зависимости АВ и АС.

Отношение R находится в четвертой нормальной форме (4НФ ) тогда и только тогда, когда в случае существования многозначной зависимости A B все остальные атрибуты R функционально зависят от A .

Другими словами:

Отношение R находится в 4НФ, если оно находится в НФБК и все многозначные зависимости отношения R фактически являются функциональными зависимостями от потенциальных ключей .

Отношение ДПУ не находится в 4НФ, поскольку содержит многозначную зависимость, не являющуюся функциональной зависимостью. Однако обе проекции {Д, П} и {Д, У} находятся в 4НФ, которая по сравнению с НФБК позволяет создать улучшенную структуру.

Отметим, что концепция независимых проекций Риссанена, основанная на функциональных зависимостях (отношение R{A,B,C}, удовлетворяющее функциональным зависимостям A>B и B>C, следует разбивать на проекции {A,B} и {B,C}, а не {A,B} и {A,C}), применима и к выбору пути декомпозиции, если вместо функциональных зависимостей присутствуют многозначные зависимости A>>B и A>>C. В Этом случае следует провести декомпозицию на отношения {A,B} и {A,C}.

Во всех рассмотренных до этого момента процедурах нормализации производилась декомпозиция одного отношения на два. Иногда это сделать не удается, но возможна декомпозиция на большее число отношений, каждое из которых обладает лучшими свойствами. Такое отношение называется n-декомпозируемым отношением, для которого n>2.

Рассмотрим, например, отношение П-Д-Пр (Поставщики-Детали-Проекты) (рис.13). Один и тот же поставщик может поставлять несколько типов деталей для разных проектов. Первичным ключом этого отношения является полная совокупность его атрибутов, отсутствуют функциональные и многозначные зависимости (многозначной зависимости нет, т.к. для П1 набор деталей зависит от проекта). Поэтому отношение находится в 4НФ. Однако в нем могут существовать аномалии (не всегда очевидные), которые можно устранить путем декомпозиции на три отношения (декомпозиция на два отношения невозможно, так как обратная операция не позволяет вернуться к исходному отношению). Причем, степень декомпозиции зависит от кортежей. Например, если в исходном отношении убрать один из первых трех кортежей или добавить кортеж (П2, Д1, Пр2), то его можно разделить на две проекции. Если же в исходном отношении убрать последний кортеж или заменить его кортежем (П2, Д1, Пр2), то его нельзя разделить ни на две, ни на три проекции без нарушения целостности данных. Декомпозируемость этого отношения может быть фундаментальным и независящим от времени свойством, если добавить дополнительное ограничение.

Утверждение, что ПДПр равно соединению трех проекций ПД, ДПр, ПрП эквивалентно следующему утверждению:

ЕСЛИпара (П1, Д1) принадлежит отношению ПД

Ипара (Д1, Пр1) принадлежит отношению ДПр

Ипара (Пр,1П1) принадлежит отношению ПрП,

ТОтройка (П1, Д1, Пр1) принадлежит отношению ПДПр.

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

С другой стороны, справедливо утверждение, что пара (П1, Д1) присутствует в отношении ПД, если тройка (П1, Д1, Пр2) присутствует в отношении ПДПр, пара (П1, Пр1) - в отношении ППр, если (П1, Д2, Пр1) есть в ПДПр, а пара (Д1, Пр1) - в отношении ДПр, если (П2, Д1, Пр1) есть в ПДПр. Тогда, если учесть наше первое утверждение, то в таком отношении должен присутствовать и кортеж (П1, Д1, Пр1)! Значит, чтобы обеспечить корректность отношения ПДПр в любой момент времени, необходимо ввести следующее ограничение:

Если кортежи (П1 , Д 1 , П р2 ), (П2 , Д 1 , П р1 ) и (П1 , Д 2 , П р1 ) принадлежат отношению ПДПр, то и кортеж (П1 , Д 1 , П р1 ) также принадлежит этому отношению .

Если это утверждение верно всегда, то есть, для всевозможных дополнительных кортежей отношения ПДПр, то будет получено независящее от времени ограничение на данное отношение, которое называется 3D-ограничением. Поскольку 3D-ограничение удовлетворяется тогда, когда отношение равносильно соединению некоторых его проекций, то такое ограничение называется зависимостью соединения.

Можно обратить внимание на то, что в рассматриваемом нами примере существует некоторая цикличность в данных. Критерием n-декомпозиции отношения для n>2 является некоторое циклическое ограничение. Что означает циклическое ограничение? Пусть в нашем примере последний кортеж означает, что Смитт поставляет гаечные ключи для Манхеттенского проекта. Первые три кортежа несут информацию о том, что Смитт поставляет гаечные ключи, Смитт является поставщиком для Манхеттенского проекта и гаечные ключи используются в Манхеттенском проекте. Но из этих утверждений не следует, что именно Смитт поставляет ключи для данного проекта. Если декомпозировать отношение ПДПр, состоящее из этих трех кортежей, на три проекции, то их соединение не будет равно исходному - появится "лишний" четвертый кортеж (П1, Д1, Пр1), о чем было сказано выше. Чтобы избежать такое несоответствие и вводится дополнительное ограничение, которое может быть легко реализовано декомпозицией отношения. Такая декомпозиция возможна без потерь информации только в случае существования зависимости соединения:

Отношение R (X,Y, . , Z ) удовлетворяет зависимости соединения * (X,Y, . , Z ) в том и только в том случае, когда R восстанавливается без потерь путем соединения своих проекций на X, Y, . , Z .

Рассмотрим два примера аномалий, которые существуют в отношении, на которое наложено 3D-ограничение.

2. В отношении, показанном на рис.15, кортеж (П2, Д1, Пр1) можно удалить без проблем. Но если удалять (П1, Д1, Пр1), то необходимо удалить один из оставшихся, чтобы не было некоторой цикличности в данных.

Сейчас теорему Фейгина можно сформулировать в таком виде:

Отношение R (А , В, С ) удовлетворяет зависимости соединения * (АВ , А С ) тогда и только тогда, когда оно удовлетворяет многозначным зависимостям А В и А С .

Зависимость соединения является обобщением понятия многозначной зависимости. Более того, это наиболее общая форма зависимости.

Возвращаясь к отношению Поставщики-Детали-Проекты, можно обнаружить, что оно содержит зависимость соединения ПДПр * (ПД, ДПр, ПрП), которая не является ни функциональной, ни многозначной зависимостью и не подразумевается его единственным потенциальным ключом - комбинацией всех атрибутов. Такое отношение рекомендуется декомпозировать на проекции, заданные зависимостью соединения. Такой процесс декомпозиции может повторяться до тех пор, пока все результирующие отношения не будут находиться в пятой нормальной форме (5НФ ).

Отношение R находится в пятой нормальной форме в том и только в том случае, когда любая зависимость соединения в R следует из существования некоторого возможного ключа в R .

Менее строгое определение 5НФ:

Таблица находится в пятой нормальной форме (5НФ ) тогда и только тогда, когда в каждой ее полной декомпозиции все проекции содержат возможный ключ . Таблица, не имеющая ни одной полной декомпозиции, также находится в 5НФ .

Сейчас можно сказать, что после 3-декомпозиции отношения ПДПр его проекции ПД, ДПр и ППр находятся в 5 нормальной форме, так как для них вовсе нет зависимости соединения.

Четвертая нормальная форма (4НФ) является частным случаем 5НФ, когда полная декомпозиция должна быть соединением ровно двух проекций. Весьма не просто подобрать реальную таблицу, которая находилась бы в 4НФ, но не была бы в 5НФ.

Для заданного отношения R можно утверждать, что оно находится в 5НФ при условии, что известны все потенциальные ключи и все зависимости соединения. Однако нет алгоритма, позволяющего определять все зависимости соединения. Но такие отношения чрезвычайно редки на практике.

Пятая нормальная форма - это последняя нормальная форма, которую можно получить путем декомпозиции. Ее условия достаточно нетривиальны, но она практически не используется.

Процедура нормализации и проектирования

Мы рассмотрели технологию декомпозиции без потерь, применяемую для проектирования базы данных. Основная идея этой технологии состоит в систематическом приведении первоначального отношения, находящегося в 1НФ, к набору меньших отношений, который в некотором заданном смысле эквивалентен исходному отношению, но более предпочтителен. Каждый этап процесса приведения состоит из разбиения на проекции отношений, полученных на предыдущем этапе. При этом заданные ограничения используются на каждом шаге процедуры нормализации для выбора проекций на следующем этапе. Нормализация - это разбиение отношения (таблицы) на несколько отношений, обладающих лучшими свойствами при обновлении, включении и удалении данных. Этот процесс последовательной замены таблицы ее полными декомпозициями выполняется до тех пор, пока все они не будут находиться в 5НФ (на практике обычно ограничиваются приведением отношения к нормальной форме Бойса-Кодда). В общем, можно выделить следующие цели процесса нормализации:

исключение некоторых типов избыточности;

устранение некоторых аномалий обновления, включения и удаления;

проектирование макета базы данных, который являлся бы "хорошим" представлением реального мира, был интуитивно понятен и служил хорошей основой для дальнейшего развития;

упрощение процесса наложения ограничений целостности.

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

1. Унифицированное отношение должно быть приведено к 1НФ.

2. Отношения в 1НФ следует разбить на проекции для исключения всех функциональных зависимостей, которые не являются неприводимыми.

Другими словами, если отношение имеет составной первичный ключ вида (К1, К2) и включает также поле F, которое функционально зависит от части этого ключа, например, от К2, но не от полного ключа, то в этом случае рекомендуется сформировать другое отношение, содержащее К2 и F (первичный ключ - К2), и удалить F из первоначального отношения:

В результате такого действия будет получен набор отношений в 2НФ.

3. Отношения в 2НФ следует разбить на проекции для исключения любых транзитивных функциональных зависимостей. Другими словами, если отношение имеет потенциальный ключ К, не являющийся потенциальным ключом атрибут F1, который функционально зависит от К, и другой неключевой атрибут F2, который функционально зависит от F1, то рекомендуется удалить из исходного отношения атрибут F2 и сформировать другое отношение, содержащее F1 и F2, с первичным ключом F1.

В результате будет получен набор отношений в 3НФ.

5. Отношения в НФБК следует разбить на проекции для исключения всех многозначных зависимостей, которые не являются функциональными зависимостями. В результате будет получен набор отношений в 4НФ (на практике такие многозначные зависимости обычно исключаются при создании исходных отношений, отделяя независимые повторяющиеся группы).

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

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

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

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

1. Представить каждую независимую сущность таблицей базы данных (базовой таблицей) и определить первичный ключ этой базовой таблицы.

2. Представить каждую ассоциацию (связь между сущностями) как базовую таблицу. Использовать в этой таблице внешние ключи для идентификации участников ассоциации и специфицировать ограничения, связанные с каждым из этих внешних ключей.

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

4. Для того, чтобы исключить в проекте непреднамеренные нарушения каких-либо принципов нормализации, выполнить процедуру нормализации.

5. Если в процессе нормализации было произведено разделение каких-либо таблиц, то следует модифицировать инфологическую модель базы данных и повторить перечисленные шаги.

6. Указать ограничения целостности проектируемой базы данных и дать (если это необходимо) краткое описание полученных таблиц и их полей.

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

7. Пример проектирования базы данных

Назначение и предметная область

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

В базе данных должна храниться следующая информация:

Для каждого отдела: уникальный номер отдела, бюджет и уникальный номер руководителя отдела;

для каждого сотрудника: уникальный номер сотрудника, номер текущего проекта, номер кабинета, номер телефона, а также название выполняемой работы вместе с датами и размерами всех оплат, полученных за выполнение данной работы;

для каждого проекта: уникальный номер проекта и бюджет;

для каждого кабинета: уникальный номер кабинета, площадь, номера всех телефонов.

Семантические утверждения (ограничения): Ни один сотрудник не является одновременно руководителем нескольких отделов; ни один сотрудник не работает одновременно более чем в одном отделе; ни один сотрудник не работает одновременно более чем с одним проектом; ни один сотрудник не имеет одновременно более одного кабинета; ни один сотрудник не имеет одновременно более одного телефона; ни один сотрудник не имеет одновременно более одного задания; ни один проект не дается одновременно более чем одному отделу; ни один кабинет не относится одновременно более чем к одному отделу.

Проектирование базы данных

Анализ определенных выше объектов и атрибутов позволяет выделить сущности проектируемой базы данных и построить ее инфологическую модель в виде "Таблицы-связи" (рис. 16).

Рис. 16. Информация о компании, которая должна храниться в базе данных

Исходную иерархическую структуру можно рассматривать как ненормализованное отношение:

ОТДЕЛЫ (ОТД№, БЮДЖЕТ_О, РУК№, СОТРУДНИКИ, ПРОЕКТЫ, КАБИНЕТЫ) CANDIDATE KEY (ОТД№) CANDIDATE KEY (РУК№)

Здесь смысл атрибутов ОТД№ (уникальный номер отдела), БЮДЖЕТ_О, РУК№ (номер руководителя) понятен из названий, а атрибуты СОТРУДНИКИ, ПРОЕКТЫ, КАБИНЕТЫ состоят из значений-отношений. Мы можем расписать их вложенные атрибуты:

ОТДЕЛЫ (ОТД№, БЮДЖЕТ, РУК№, СОТРУДНИКИ (СОТР№, ПРОЕКТ№, КАБ№, ТЕЛ№, РАБОТА (ТЕМА, ОПЛАТА (ДАТА, СУММА))), ПРОЕКТЫ (ПРОЕКТ№, БЮДЖЕТ_П), КАБИНЕТЫ (КАБ№, ПЛОЩАДЬ, ТЕЛЕФОН (ТЕЛ№))) CANDIDATE KEY (ОТД№) CANDIDATE KEY (РУК№)

Сейчас можно привести это отношение к набору отношений в 1НФ. При этом, рассматривая каждое значение-отношение отдельно, мы исключаем все многозначные зависимости, которые не являются функциональными зависимостями.

ОТДЕЛЫ1 (ОТД№, БЮДЖЕТ_О, РУК№) PRIMARY KEY (ОТД№) ALTERNATE KEY (РУК№)

СОТРУДН1 (СОТР№, ОТД№, ПРОЕКТ№, КАБ№, ТЕЛ№) PRIMARY KEY (СОТР№)

РАБОТА1 (ТЕМА, СОТР№) PRIMARY KEY (ТЕМА, СОТР№)

ОПЛАТА1 (СОТР№, ТЕМА, ДАТА, СУММА) PRIMARY KEY (СОТР№, ТЕМА, ДАТА)

ПРОЕКТЫ1 (ПРОЕКТ№, БЮДЖЕТ_П, ОТД№) PRIMARY KEY (ПРОЕКТ№)

КАБИНЕТЫ1 (КАБ№, ПЛОЩАДЬ, ОТД№) PRIMARY KEY (КАБ№)

ТЕЛЕФОНЫ1 (ТЕЛ№, КАБ№) PRIMARY KEY (ТЕЛ№)

Отношения ОТДЕЛЫ1, СОТРУДН1, ОПЛАТА1, ПРОЕКТЫ1, КАБИНЕТЫ1 и ТЕЛЕФОНЫ1 уже находятся в 2НФ.

Отношение РАБОТА1 является проекцией отношения ОПЛАТА1, следовательно, оно несет избыточную информацию и его можно удалить без потери данных. В то же время, отношение ТЕЛЕФОНЫ1 является проекцией отношения СОТРУДН1, но при его удалении появятся аномалии обновления - данные о телефонах не будут существовать без данных о конкретных сотрудниках.

Покажем сейчас структуру базы данных, отношения которой приведены к 2НФ, используя язык моделирования "Таблица-Связь", который применяется в СУБД MS ACCESS:

Далее, исключая транзитивные зависимости, можно привести отношения к эквивалентной совокупности отношений в 3НФ. Единственным отношением, которое не находится в 3НФ, является отношение СОТРУДН, в котором атрибуты КАБ№ и ОТД№ транзитивно зависят от первичного ключа СОТР№ - КАБ№ через ТЕЛ№, а ОТД№ через ПРОЕКТ№ и, кроме того, через КАБ№ и ТЕЛ№. Тогда отношение СОТРУДН можно заменить совокупностью проекций, находящихся в 3НФ:

X (ТЕЛ№, КАБ№) PRIMARY KEY (ТЕЛ№)

Y (ПРОЕКТ№, ОТД№) PRIMARY KEY (ПРОЕКТ№)

Z (КАБ№, ОТД№) PRIMARY KEY (КАБ№)

Но отношение X - аналог отношения ТЕЛЕФОН2, Y - проекции отношения ПРОЕКТ2, Z - проекции КАБИНЕТ2 и, значит, могут быть удалены из модели базы данных. Следовательно, модель базы данных, отношения которой приведены к 3НФ, будет выглядеть так:

ОТДЕЛЫ3 (ОТД№, БЮДЖЕТ_О, РУК№) PRIMARY KEY (ОТД№) ALTERNATE KEY (РУК№)

СОТРУДН3 (СОТР№, ПРОЕКТ№, ТЕЛ№) PRIMARY KEY (СОТР№)

ОПЛАТА3 (СОТР№, ТЕМА, ДАТА, СУММА) PRIMARY KEY (СОТР№, ТЕМА, ДАТА)

ПРОЕКТЫ3 (ПРОЕКТ№, БЮДЖЕТ_П, ОТД№) PRIMARY KEY (ПРОЕКТ№)

КАБИНЕТЫ3 (КАБ№, ПЛОЩАДЬ, ОТД№) PRIMARY KEY (КАБ№)

ТЕЛЕФОНЫ3 (ТЕЛ№, КАБ№) PRIMARY KEY (ТЕЛ№)

Каждое из этих отношений находится в НФБК. Более того, они находятся в 4НФ - от возможных многозначных зависимостей мы избавились на этапе приведения модели к 1НФ. Все отношения не содержат видимых аномалий и поэтому можно предполагать, что база данных сконструирована правильно.

Литература

1. Бек, Кент Шаблоны реализации корпоративных приложений; М.: Вильямс, 2008. - 369 c.

2. Веймаер, Р.; Сотел, Р. Освой самостоятельно Microsoft SQL Server 2000 за 21 день (+ CD-ROM); М.: Вильямс, 2013. - 549 c.

3. Гандерлой, Майк; Харкинз, Сьюзан Сейлз Автоматизация Microsoft Access с помощью VBA; М.: Вильямс, 2013. - 416 c.

4. Гетц, Кен; Джинберт, Майкл; Литвин, Пол Access 2000. Руководство разработчика. Том 1. Настольные приложения. том 1; Киев: BHV, 2008. - 576 c.

5. Голицына, О.Л. и др. Базы данных; Форум; Инфра-М, 2013. - 399 c.

6. Гринченко, Н.Н. и др. Проектирование баз данных. СУБД Microsoft Access; Горячая Линия Телеком, 2012. - 613 c.

7. Дейт, К. Дж. Введение в системы баз данных; К.: Диалектика; Издание 6-е, 2012. - 360 c.

8. Дэвидсон, Луис проектирование баз данных на SQL Server 2000; Бином, 2009. - 631 c.

9. Дюваль, Поль М. Непрерывная интеграция. Улучшение качества программного обеспечения и снижение риска; М.: Вильямс, 2008. - 497 c.

10. Каратыгин, С.; Тихонов, А. Работа в Paradox для Windows 5.0 на примерах; М.: Бином, 2011. - 512 c.

11. Каратыгин, Сергей Access 2000 на примерах. Руководство пользователя с примерами; М.: Лаборатория Базовых Знаний, 2012. - 376 c.

12. Кауфельд, Джон Microsoft Office Access 2003 для "чайников"; М.: Диалектика, 2013. - 439 c.

13. Каучмэн, Джейсон; Швинн, Ульрике Oracle 8i CertifiedProfessionaql DBA Подготовка администраторов баз данных; ЛОРИ, 2009. - 510 c.

Подобные документы

    Понятие системы базы данных. Реляционная модель и ее характеристики. Целостность в реляционной модели. Реляционная алгебра. Вопросы проектирования БД. Нормальные формы отношений. Проектирование БД методом сущность-связь. ER-диаграммы. Язык SQL.

    курс лекций , добавлен 03.10.2008

    Использование нормализации. Вторая и третья нормальные формы. Нормальная форма Бойса-Кодда. Четвертая и пятая нормальная форма. Семантическое моделирование данных, ER-диаграммы. Основные понятия модели Entity-Relationship.

    контрольная работа , добавлен 07.08.2007

    Понятие нормализации таблиц базы данных и ее цели. Этапы процесса нормализации. Пример ненормализованных данных. Нормальные формы, к которым приводятся таблицы. Реляционная алгебра над учебной базой. База данных для предметной области "Учебные пособия".

    контрольная работа , добавлен 30.07.2010

    Создание структуры базы данных на примере "Школьного журнала" с использованием метода и принципа нормализации. Понятия базы данных, архитектуры БД и проектирования. Описание предметной области; приложения для работы с базой данных TTable и TQuery.

    дипломная работа , добавлен 01.04.2012

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

    курсовая работа , добавлен 22.02.2012

    Авторизация с каталогами проектирования базы данных магазина. Задачи базы данных: учет всех товаров, поиск и выдача данных о клиентах, адрес, телефоны, цена и наличие товара. Этапы проектирования базы данных. Схема данных, создание запросов и их формы.

    реферат , добавлен 22.10.2009

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

    презентация , добавлен 14.10.2013

    Определения, необходимые для понимания процесса проектирования реляционных баз данных на основе нормализации. Декомпозиция без потерь по теореме Хита. Аномальные обновления. Разработка моделей базы данных и приложений, анализ проблем при их создании.

    презентация , добавлен 14.10.2013

    Интегрированная база данных. Разработка концепции и структуры корпоративной базы данных для новой информационной системы. Подходы в методах проектирования баз данных: компонентная открытость и смысловая интероперабельность; разработка понятийных моделей.

    доклад , добавлен 11.01.2011

    Анализ предметной области, ее формализации с помощью функциональных зависимостей. Этапы минимизации системы функциональных зависимостей и на основании полученной редуцированной системы проектирование модели базы данных. Создание и моделирование запросов.