УПРАВЛЕНИЕ, ВЫЧИСЛИТЕЛЬНАЯ ТЕХНИКА И ИНФОРМАТИКА
УДК 004.05
НОРМАЛИЗАЦИЯ ОТНОШЕНИЙ МЕТОДОМ ЗАДАЧИ О НАИМЕНЬШЕМ ПОКРЫТИИ
© 2011 г. И.В. Клименко
Ростовский государственный университет Rostov State Transport
путей сообщения University
Предложен процесс нормализации реляционной модели, основанный на наличии зависимостей между атрибутами исходных отношений,который позволяет снизить избыточность (дублирование) хранимых данных, а следовательно, устранить аномалии добавления, обновления и удаления хранимых записей. Безызбыточные файлы баз данных занимают меньше места на внешних носителях и требуют меньше времени при обработке информационных запросов пользователей базы данных. Формализованный метод нормализации отношений реляционной модели позволяет достичь третьей нормальной формы и оптимизировать и автоматизировать процесс нормализации.
Ключевые слова: нормализация отношений реляционной модели; нормальные формы; задача о наименьшем покрытии; первичный ключ; функциональные зависимости.
In the modern theory of databases of the most actual the problem of normalization of relations of relational model as till now is not formalized is considered. Normalization process is based on presence of dependences between attributes of initial relations and allows to lower redundancy (duplication) keep the data, and, hence, to eliminate anomalies of addition, updating and removal keep records. On the other hand, irredundant files of databases take less places on external carriers and demand less time at processing of queries of users of a database. In work the formalized method of normalization of relations of relational model to 3 normal forms is developed. The offered approach will allow to optimize and automate normalization process.
Keywords: normalisation of relations of relational model; normal forms; a problem about the least covering; a primary key; functional dependences.
В современной теории баз данных наиболее актуальной считается задача нормализации отношений реляционной модели, так как до настоящего времени не является формализованной.
В большинстве фундаментальных трудов отмечается достаточность и целесообразность целям практики достижения третьей нормальной формы (3НФ).
Отношение БД находится в 3НФ относительно множества функциональных зависимостей F, если оно удовлетворяет условиям 1НФ и ни один из непервичных атрибутов не является транзитивно зависимым от ключа.
Для формализации процесса нормализации отношений реляционной модели можно использовать методы целочисленного программирования и, в частности, задачи о наименьшем покрытии. Так, при анализе определения 3НФ сделан вывод, что целью такой нормализации является устранение транзитивных зависимостей между атрибутами.
Пусть дан граф G(X, F), где Х - множество атрибутов интересующей нас предметной области, F -множество функциональных зависимостей между ними. Определим транзитивно независимое множество (ТНМ) атрибутов как подграф графа G такой, что, применяя к нему аксиому F5 (правила вывода функ-
циональных зависимостей) вид подграфа не меняется.
ТНМ называется максимальным (МТНМ), когда нет другого ТНМ, в которое оно бы входило.
На первый взгляд кажется, что нахождение всех МТНМ - простая задача, которую можно решить простым перебором ТНМ с одновременной проверкой их на максимальность. Последнее действие обычно осуществляется путем добавления к исследуемому ТНМ дополнительного атрибута, не принадлежащего ему, и выяснения того, сохраняется ли независимость после применения F5.
Представление о простоте задачи справедливо только для небольших графов (в несложных предметных областях) с числом атрибутов до 20. Однако с увеличением количества атрибутов этот метод поиска становится с вычислительной точки зрения громоздким.
Ниже предлагается систематический метод перебора, который позволяет уменьшить число шагов решения задачи. В предлагаемом методе не нужно запоминать генерируемые ТНМ для проверки их на максимальность путем сравнения с ранее сформированными ТНМ.
По существу метод является упрощенным перебором, использующим дерево поиска.
В процессе поиска - на некотором этапе k - ТНМ Sk расширяется путем добавления к нему подходящим образом выбранной вершины (чтобы получилось новое ТНМ Sk+l) на этапе k+l, и так происходит до тех пор, пока добавление вершин станет невозможным, а порождаемое ТНМ не станет максимальным.
Пусть Qk будет на этапе k наибольшим множеством вершин, для которого SknQk=0, т.е. после добавления любой вершины из Qк к Sk получается ТНМ Sk+1.
В некоторый произвольный момент работы алгоритма множество Qk состоит из вершин двух типов: подмножества Q-к тех вершин, которые уже использовались в процессе поиска для расширения Sk, и подмножества Q+к таких вершин, которые еще не использовались.
Тогда дальнейшее ветвление в дереве поиска включает процедуру выбора вершины х, е Q+к,
добавление ее к Sk для построения множества Sk+1 = = Sk и {х^ } и порождение новых множеств: Q-k+1 =
= Q-к - F( хч ) и Q+k+l = д+к - хч ) и { хч }).
Шаг возвращения алгоритма состоит в удалении вершины х^ из Sk+1, чтобы вернуться к Sk, изъятии
х, из старого множества Q+k и добавлении х, к
старому множеству Q-k для формирования новых множеств 0+к и Q-k.
Легко заметить, что множество Sk является МТНМ только тогда, когда невозможно его дальнейшее расширение, т.е. когда Q+k=0. Если Q-kФ0, то немедленно заключают, что текущее множество Sk было расширено на некотором предшествующем этапе работы алгоритма путем добавления вершины из Q-k, и поэтому оно не является МТНМ. Таким образом, необходимым и достаточным условием того, что Sk -МТНМ, является выполнение равенств Q-k = Q+k = 0.
Теперь совершенно очевидно, что если очередной этап работы алгоритма наступает тогда, когда существует некоторая вершина х е Q-k для которой F(х)nQ+k=0, то безразлично, какая из вершин, принадлежащих Q+k, используется для расширения Sk, и это справедливо при любом числе дальнейших ветвлений; вершина х не может быть удалена из Q-p на любом следующем шаге р > k. Таким образом, условие ЭxеQ-k, такая, что F(х)nQ+k = 0, является достаточным для осуществления шага возвращения, поскольку из Sk при всяком дальнейшем ветвлении уже не получится МТНМ.
Как и во всяком методе, использующем дерево поиска, здесь выгодно стремиться начать шаги возвращения как можно раньше, поскольку это ограничит «размеры» «ненужной» части дерева поиска. Следовательно, целесообразно сосредоточить усилия на том, чтобы возможно раньше добиться выполнения условия (Q-k = Q+k = 0) с помощью подходящего выбора вершин, используемых при расширении множеств Sk. На каждом следующем шаге процедуры можно выбирать для добавления к Sk любую вершину х, еQ+k; на шаге возвращения х, будет удалена из
Q+k и включена в Q~k. Если вершину хк выбрать так, чтобы она принадлежала множеству F(x) при некоторой вершине х из Q~k, то на соответствующем шаге возвращения величина Д(х) = |F(x) nQ+k| уменьшится на единицу (по сравнению с тем значением, которое было до выполнения прямого шага и шага возвращения), так что условие (Qk = Q+k = 0) теперь станет выполняться раньше.
Таким образом, один из возможных способов выбора вершины x^ для расширения множества Sk состоит, во-первых, в нахождении вершины х*е Q~k с возможно меньшим значением величины Д(х*) и, кроме того, в выборе вершины xik из множества
F(x*) n Q+k. Такой выбор вершины x^ будет приводить на шаге возвращения к уменьшению величины Д(х*) - каждый раз на единицу - до тех пор, пока вершина х* не станет удовлетворять условию (Q k = Q+k = 0) при выполнении шага возвращения.
Следует отметить, что поскольку на шаге возвращения вершина xt попадает в Q~k, то может оказаться, что при этом новом входе значение величины Д меньше, чем для ранее фиксированной вершины х*. Значит, надо проверить, не ускорит ли эта новая вершина выполнение условия (Q~k = Q+k = 0). Это особенно важно в начале ветвления, когда Q~k=0.
Результатом применения указанного алгоритма является полное семейство МТНМ. Каждое МТНМ -в интерпретации баз данных - представляет собой схему отношения, находящуюся в 3НФ или выше.
Следующий этап - определение схемы нормализованной базы данных (как совокупности схем отношений). Для этого предстоит решить задачу наименьшего покрытия (ЗНП) G максимальными ТНМ.
ЗНП своим названием обязана следующей теоретико-множественной интерпретации. Даны множество X = {xj,..., xM} и семейство 3 = {Sj,..., SN} множеств Sj с R. Любое подсемейство 3'= {Sj,Sj ,..., Sjk} k
семейства 3, такое, что U Sj = X , называется по-
i=1 '
крытием множества Х, а множества Sj называются
покрывающими множествами. Если ЗНП в дополнение к соотношению з удовлетворяет условию S, n S, = 0, Vh, /е{1,..., k}, h Ф l, т.е. множества S,
Jh Jl Ji
(i= l,..., k) попарно не пересекаются, то 3' называется разбиением множества R.
Если каждому S;e 3 поставлена в соответствие (положительная) стоимость с, то ЗНП формулируется так: найти покрытие множества Х, имеющее наименьшую стоимость, причем стоимость семейства
k
3' = {Sji,S;2,...,Sjk} определяется как £Cj{ .
i=i
В матричной форме, когда строки (Мх^-матрицы [tj], состоящей из нулей и единиц, покрываются
столбцами, ЗНП может быть сформулирована как задача линейного программирования: минимизировать
N
* = 2 с, |;
1=1
при ограничениях
где с,- > 0,
5, ='
il, если S, е 3',
0, если S, г3'
и tij = ■
(1, если х е S,
|0, если х i S,.
1 *-- «г •
Вследствие особой природы ЗНП часто удается сделать при ее исследовании определенные, хорошо известные заранее выводы и упрощения.
Основные из них следующие:
1) если для некоторого элемента xi из X справедливы соотношения х^^, У/=1, ..., Ы, то XI покрыть нельзя и, следовательно, задача не имеет решения;
2) если Эх,еХ, такое, что xieSk и xiíSj■, Урфк, то Sk должно присутствовать во всех решениях и задачу можно свести к «меньшей», положив Х=Х-{х,} и 3 = 3- };
3) пусть V={j\ х^}; тогда, если Эр, qе{1, ...,М} такие, что VpcVq, то хц можно удалить из X, поскольку любое множество, которое покрывает хр, должно также покрывать хч, т.е. хр доминирует над хц;
4) если для некоторого семейства множеств 3с3 справедливы соотношения У S/ зSk и
2 о}- < ск для любых Бк е 3 - 3, то Sk может быть
^ е3
вычеркнуто из 3, поскольку У S/ доминирует над Sk.
Когда все упрощения выполнены (если они возможны), исходная ЗНП переформулируется в неприводимой форме и может быть решена одним из эффективных методов целочисленного программирования, например алгоритмом Балаша.
В этом направлении актуальной видится задача модификации известных алгоритмов для решения задачи оптимального покрытия с учетом специфики реляционной модели. Указанные модификации должны быть направлены на сокращение количества шагов, так как ЗНП относится к классу ЫР--полных.
Для окончательного сведения рассматриваемой задачи к ЗНП, необходимо решить вопрос о правилах присвоения стоимостей каждому МТНМ из семейства 3.
Очевидно, что чем больше вершин хi входит в максимальное свободное от конфликтов множество Sj, тем больше строк матрицы [р покроет Sj. Следовательно, чем больше элементов входит в каждое из МТНМ, покрывающих множество Х, тем больше вероятность того, что меньшее количество МТНМ потребуется для покрытия Х. В свою очередь, если каждому МТНМ поставлено в соответствие отношение базы данных, то для уменьшения общего количества отношений в проекте БД нужно стремиться использовать МТНМ с большим количеством атрибутов.
В соответствии с приведенными аргументами разработано следующее правило присвоения стоимостей МТНМ Sj.
Если Sj - МТНМ атрибутов предметной области, а ^ - мощность этого множества, то для решения задачи оптимизации проекта БД множеству Sj■ необходимо присвоить стоимость Ор
1
с, =
q,
Sjез
Sj
Поступила в редакцию 24 января 2011 г.
Клименко Игорь Валерьевич - канд. техн. наук, кафедра «Вычислительная техника и автоматизированные системы управления», Ростовский государственный университет путей сообщения. Тел. (863)294-32-62. E-mail: [email protected]
Klimenko Igor Valerevich - Candidate of Technical Sciences, department «Computer Facilities and Automated Control Systems», Rostov State Transport University. Ph. (863)294-32-62. E-mail: [email protected]