
- •А.В. Брешенков
- •Проектирование баз данных на основе информации табличного вида
- •1. Анализ проблемы проектирования реляционных баз данных на основе использования информации табличного вида 8
- •5. Назначение ключевых полей 142
- •6. Выявление и формирование связей между заполненными таблицами 157
- •7. Объединение таблиц 190
- •8. Разработка и исследование модели методики проектирования реляционных баз данных на основе использования информации табличного вида 220
- •Предисловие
- •Глава 5 посвящена методу назначения ключевых полей в заполненных нереляционных таблицах.
- •1. Анализ проблемы проектирования реляционных баз данных на основе использования информации табличного вида
- •1.1. Понятие информации табличного вида
- •1.2. Мотивы преобразования информации табличного вида в файлы реляционных баз данных
- •1.3. Основные требования к средствам преобразования информации табличного вида в реляционные таблицы
- •1.4. Задачи объединения и разбиения реляционных таблиц
- •1.5. Задачи нормализации реляционных таблиц
- •1.6. Преобразование реляционных нормализованных таблиц в файлы бд
- •1.7. Вопросы преобразования электронных таблиц
- •Упражнения и вопросы для самоконтроля
- •2. Постановка задачи проектирования реляционных баз данных на основе использования информации табличного вида
- •2.1. Укрупненная модель реляционной базы данных
- •2.2. Укрупненная модель информации табличного вида
- •2.3. Задачи преобразования заполненных нереляционных таблиц в реляционные таблицы Преобразование нереляционных таблиц в реляционные таблицы
- •Нормализация заполненных таблиц
- •Назначение ключевых полей для заполненных таблиц
- •Выявление и формирование связей между заполненными реляционными таблицами
- •Упражнения и вопросы для самоконтроля
- •3. Преобразование нереляционных таблиц в реляционные таблицы
- •3.1. Приведение значений атрибутов заполненных таблиц к одному типу
- •3.2. Исключение дублирования записей
- •Упражнения и вопросы для самоконтроля
- •4. Нормализация заполненных реляционных таблиц.
- •4.1. Проблемы нормализации
- •4.2. Модели информации табличного вида и реляционных таблиц.
- •4.2.1. Модель информации табличного вида
- •4.2.2. Модель реляционной таблицы
- •4.3. Преобразование заполненных таблиц к первой нормальной форме
- •4.3.1. Избавление от сложных атрибутов
- •4.3.2. Исключение подзаголовков расположенных внутри таблицы
- •4.3.3. Нормализация заполненных таблиц с подзаголовками в первом столбце.
- •4.4. Преобразование заполненных таблиц ко второй нормальной форме
- •4.5. Преобразование заполненных таблиц к третьей нормальной форме
- •Избавление от функциональной зависимости.
- •4.6. Преобразование заполненных таблиц к четвертой нормальной форме.
- •Упражнения и вопросы для самоконтроля
- •5. Назначение ключевых полей
- •5.1. Задача назначения ключевых полей в заполненных реляционных таблицах
- •5.2. Алгоритмы назначения ключевых полей в заполненных реляционных таблицах
- •Упражнения и вопросы для самоконтроля
- •6. Выявление и формирование связей между заполненными таблицами
- •6.1. Выявление и формирование связей один - к одному
- •6.2. Выявление и формирование связей один - ко многим
- •6.3. Выявление и формирование связей многие - ко многим.
- •Формирование 3-й таблицы для реализации многозначных связей.
- •Упражнения и вопросы для самоконтроля
- •7. Объединение таблиц
- •7.1. Проблемы объединения таблиц
- •Исходные таблицы по своей природе удовлетворяют требованиям совместимости, а по форме – нет.
- •Исходные таблицы удовлетворяют требованиям совместимости, результирующую таблицу необходимо обновлять.
- •Исходные таблицы частично удовлетворяют требованиям совместимости.
- •7.2. Объединение и обновление совместимых таблиц
- •7.3. Объединение таблиц, частично удовлетворяющих требованиям совместимости
- •Упражнения и вопросы для самоконтроля
- •8. Разработка и исследование модели методики проектирования реляционных баз данных на основе использования информации табличного вида
- •8.1. Постановка задачи разработки модели методики
- •8.2. Операторная модель преобразования информации табличного вида к реляционным базам данных
- •8.3. Исследование методики преобразования информации табличного вида в реляционные базы данных
- •8.4. Исследование динамических свойств функционирования системы.
- •8.5. Исследование временных свойств системы.
- •Упражнения и вопросы для самоконтроля
- •Список литературы
Упражнения и вопросы для самоконтроля
Приведите пример таблиц, содержащих данные различного типа в одном столбце.
Опишите алгоритм приведения данных, содержащихся в столбце, к одному типу.
Как реализовать данный алгоритм на основе визуального анализа таблиц и существующих средств СУБД?
Приведите примеры реальных таблиц, содержащих дублирование записей.
Опишите алгоритм исключения дублирования записей.
Как реализовать данный алгоритм на основе визуального анализа таблиц и существующих средств СУБД?
4. Нормализация заполненных реляционных таблиц.
4.1. Проблемы нормализации
В табл. 4.1 представлен общий вид заполненной реляционной таблицы (общий вид отношения).
Т а б л и ц а 4.1
A1 |
A2 |
… |
Ai |
… |
Aj |
… |
Ak |
a11 |
a12 |
… |
a1i |
… |
a1j |
… |
a1k |
a21 |
a22 |
… |
a2i |
… |
a2j |
… |
a2k |
… |
… |
… |
… |
… |
… |
… |
… |
an1 |
an2 |
… |
ani |
… |
ani |
… |
ank |
… |
… |
… |
… |
… |
… |
… |
… |
am1 |
am2 |
… |
ami |
… |
amj |
… |
amk |
Здесь A = {A1, A2, …, Ai …, Aj, …, Ak} – множество атрибутов (заголовков) таблицы (отношения).
a = ((a11, a12 , …, a1i, …, a1j, …, a1k),
(a21, a22 , …, a2i, …, a2j, …, a2k), …,
(an1, an2 , …, ani, …, anj, …, ank), …,
(am1, am2 , …, ami, …, amj, …, amk)) – множество кортежей значений атрибутов.
В данном представлении множество ”a” представляет собой множество записей таблицы.
Если это же множество представить следующим образом:
a = ((a11, a21 , …, an1, …, am1),
(a12, a22 , …, an2, …, am2), …,
(a1i, a2i , …, ani, …, ami), …,
(a1j, a2j , …, anj, …, amj), …,
(a1k, a2k, …, ank, …, amk)),
то в таком представлении множество “а” является множеством значений атрибутов А, где
k – степень отношения;
m – мощность отношения.
В качестве ограничений в данной таблице принимаются следующие требования:
1. Ai (Ai A) (Ai ‘ Ai)
i = 1, k; A = {A1, A2, …, Ai, …, Aj, …, Ak}
Другими словами все атрибуты отношения должны быть неделимы (атомарны).
2. (a11 a21 … an1 … am1) …
(a1i a2i … ani … ami) …
(a1k a2k … ank … amk)),
Т.е., все значения хотя бы одного из столбцов таблицы должны отличаться друг от друга. Это требование обеспечивает наличие первичного ключа. Вопросы, связанные с назначением первичного ключа рассматриваются в главе 5.
Так как ключ может содержать в себе более одного атрибута, то к предыдущему выражению со связкой ”ИЛИ” можно приписать следующее выражение (для двух атрибутов):
concat (a1i, a1j) concat (a2i, a2j) … concat (ani, anj) … concat (ami, amj)
i = 1, k; j = 1, k; i j .
Здесь concat (a1i, a1j) - конкатанация (сцепление) значений атрибутов Ai и Aj.
Первичный ключ может включать в себя и три атрибута. Если это так, то к предыдущему выражению со связкой ”ИЛИ” добавится выражение, включающее конкатенации из 3-х значений атрибутов. На практике первичный ключ исключительно редко включает в себя более 3-х атрибутов – чаще всего он состоит из одного атрибута, реже из 2-х и очень редко из 3-х.
3. Ai (Ai A) (T(a1i) = T(a2i) = … = T(ani) = … = T(ali)), n = 1, m
Здесь T(a2i) – тип значения атрибута a2i. Другими словами, типы значений атрибутов должны совпадать. Вопросы приведения значений одноименных атрибутов к одному типу рассмотрены в 3.1.
concat (a11, a12, …, a1i, …, a1j, …, a1k) …
concat (an1, an2, …, ani, …, anj, …, ank ) …
concat (am1, am2, …, ami, …, amj, …, amk)
Другими словами - все записи таблицы должны быть уникальны. Нетрудно доказать, что так оно и будет, если удовлетворяется условие (п.2). Действительно, в соответствии с ограничением (п.2) в отношении должен присутствовать хотя бы один столбец, для которого выполняется условие:
a1i … ani … ami
Таким образом, во всех конкатенациях п.4 имеются значения атрибутов, которые не равны друг другу. А из этого следует, что не одно из значений конкатенации не равно другому значению конкатенации, что и требовалось доказать.
Однако не для всех таблиц задействуются ключевые поля. В связи с этим, необходимы средства для исключения дублирования в таблицах без ключевых атрибутов.
Часть вопросов реализации изложенных требований к заполненным таблицам изложены в работах [6], часть вопросов рассмотрены в предыдущей главе.
Таким образом, можно принять, что, используя предложенные методы и средства, можно привести заполненную нереляционную таблицу к виду табл. 4.1 и при этом удовлетворить перечисленным требованиям.
В связи с этим для дальнейших выкладок будет использоваться таблица вида табл. 4.1, удовлетворяющая требованиям к реляционным таблицам.
Несмотря на то, что таблица может быть реляционной и допустимой для использования в БД, ее структура не всегда оптимальна. Под оптимальностью в данном случае понимается непротиворечивость, отсутствие избыточности, отсутствие сложных зависимостей внутри таблицы. С целью улучшения названных свойств таблицы разработаны требования к структурам реляционных таблиц и механизмы их реализации, так называемые нормальные формы. Однако они хорошо работают на этапе проектирования таблиц. Для заполненных же реляционных таблиц существующие механизмы напрямую неприменимы. В связи с этим оправданно использование существующей теории (насколько это можно) для разработки средств нормализации заполненных реляционных таблиц.
Как правило, в литературе рассматриваются 4-е нормальные формы [1]. В несколько упрощенном виде они звучат следующим образом.
Атрибуты должны быть атомарны.
Все неключевые атрибуты зависят от ключевого атрибута.
Неключевые атрибуты не должны зависеть друг от друга.
Между атрибутами не должно быть множественных зависимостей.
Следует еще раз обратить внимание на то, что в рассматриваемом случае речь идет не о проектировании отношений, когда разработчик БД может создавать отношения, основываясь на сформулированные условия нормализации. Речь идет о заполненных реляционных таблицах, для которых в общем случае эти условия не выполнены.
В связи с этим возникает задача разработки модели информации табличного вида, модели реляционной таблицы, методов приведения заполненных реляционных таблиц к нормальной форме. Об этом и пойдет речь дальше.