Теория и практика построения баз данных (1088289), страница 43
Текст из файла (страница 43)
Отношение КОЛЛЕДЖ1 находится в ДКНФ, поскольку все его атрибуты функционально зависят от ключа НазваниеКоппеджа. Однако здесь что-то потеряно. Т(ля того чтобы увидеть, что именно мы потеряли, предположим, что мы хотим узнать названия колледжей, в которых есть заместитель декана по имени Мэри Лбернати. Для этого нам придется искать данное имя в каждом из трех столбцов ЗаместнтепьДекана. Наш запрос будет выглядеть примерно следующим образом: ЗЕСЕСТ Назеанкекоппедма ГЛОМ КОЛЛЕДК1 ННЕЛЕ ЗакеститепьДекана1 = 'Мэри Ябернатн' ОЛ ЗакеститепьДекана2 = 'Мэри Абернати' ОЛ ЗакестнтепьДеканаЗ = 'Мэри Абернатн' Используя нормализованный вариант с таблицей ЗАМДЕКАНА, нам пришлось бтя написать только: ЗЕСЕСТ Наззаниекоппедма ГРОМ ЗАМДЕКАНА АНЕЛЕ ЗакестктепьДекана = 'Мэри Абернати' В этом примере даны три возможных решения, у каждого из которых есть гнои преимущества и недостатки.
Выбор среди этих решений — это искусство: не < ущестнует твердого и быстрого правила, указывающего, какой из вариантов является наилучшим. Выбор зависит от характеристик приложений, использующих .ггу базу данных. В общем, иногда отношения намеренно оставляют в ненормализованном виде либо нормализуют, а затем денормалпзузот. Зачастую это длается лля повышения производительности. Всегда, когда необходимо комбинировать данные из лвух различных таблиц, СУБД должна выполгить дополнительную работу. В большинстве случаев для этого требуется как минимум две операции чтения вместо одной.
198 Глава 5. Реляционная модель и нормализация Резюме 199 Преднамеренная избыточность Одним из преимушеств нормализованных отношений является то, что в них ми- нимизируется дублирование данных Столько значения ключей появляются более чем в одном отношении). Но в целях повышения производительности иногда уместным является умышленное дублирование данных. Рассмотрим, например, приложение, обрабатывающее заказы, которое обращается к таблице ТОВАР, имею- щей следук>шие столбцы; НомерТовара НаименоваииеТовара ЦветТовара ОписаииеТовара ФотографияТовара КоличествоВНаличии ЗаказаиноеКоличесгво СтаидартнаяЦена СтандартиаяСтоимость ИмяПокупателв Предположим, что атрибут НомерТовара является ключом н что таблица нахо- дится в ДКНФ.
Предположим также, что атрибут ОписаниеТовара — это потенци- ально длинное текстовое поле, а ФотографияТовара — это столбец двоичных дан- ных длиной минимум 256 Кбайт. Приложению, обрабатыва|ошему заказы, необходимо будет обратиться к этой таблице, чтобы получить значения атрибутов НазваниеТовара, ЦветТовара, Стандарт- иаяЦена и КоличествоВНаличии, Допустим, что приложению не требуется Описа- ииеТовара цли ФотографияТовара. В зависимости от характеристик используемои СУБД, возможно, что присутствие этих двух больших столбцов значительно за- медлит обработку. В этой ситуации проектировщики базы данных могут решить продублировать некоторые данные во второй таблице, которая будет содержать только ту информацию, которая требуется для обработки заказа.
К примеру, онп могут создать таблицу под названием ЗАКАЗ ТОВАРА (НомерТовара, Наименование- Товара, ЦветТовара, СтаидартиаяЦена, КопичествоВНапичии), которая будет использо- ваться только приложением, обрабатывающим заказы. В этом случае проектировщики создают потенциальный источник серьезных проблем с целостностью данных.
Им придется разработать процедуры как про- грамьчного, так и ручного контроля, чтобы гарантировать, что таких проблем не возникнет. Поэтому к подобному решению они прибегнут только в том случае, если, по их мнению, повышение производительности окупит расходы, связанные с дополнительным контролем, и риск возникновения проблем с целостностью данных, Вше одна причина для введения преднамеренной избыточности — это созда- ние таблиц, предназначенных исключительно для создания отчетов и поддержки принятия решений. Дальнейшее обсуждение этого вопроса последует в главе 17. Резюме Реляционная модель важна по двум причинам: во-первых, с ее помощью можно описывать структуры баз данных независимым от СУБД образом, а во-вторых, зта модель лежит в основе значительной части современных СУБД. Критерием правильности и желательности отношений может служить нормализация.
Отношение — это двумерная таблица, в ячейках которой записаны одиночные значения. Все значения в одном столбце принадлежат к одному и тому же типу; каждый столбец имеет уникальное имя; порядок следования столбцов несуществен. Столбцы назьнаются также атрибутами. В отношении не может быть двух одинаковых строк, а порядок следования строк несуществен, Строки называются также кортежами.
Термины таблица, файл и отношение являются синонимами; то же самое можно сказать о терминах спюлбец поле и атрибут; термины строка, запись и кортеж также синонимичны. Функциональная зависимость — это связь между атрибутами. у функционально зависит от Х, если значение Х определяет значение У. Детерминантом называется группа из одного или нескольких атрибутов, находящаяся с левой стороны функциональной зависимости. Например, если Х определяет У, то Х является детерминантом.
Ключ — это группа из одного или нескольких атрибутов, которая однозначно определяет кортеж. Каждое отношение имеет минимум один ключ; поскольку каждая строка уникальна, в самом крайнем случае ключом является совокупность всех атрибутов отношения, Хотя ключ всегда уникален, детерминант функциональной зависимопи может таковым и не быть. Являются ли атрибуты ключами и являются ли они функционально зависимыми— это определяется не абстрактным набором правил, а тем смыслом, который вкладывают пользователи в эти атрибуты.
В некоторых отношениях в результате обновления данных возникают нежелательные последствия, называемые аномалиями модификации. Аномалия удаления — это ситуация, когда удаление одной строки из отношения вызывает потерю информации о двух илп более фактах. Аномалией вставки называется ситуация, когда реляционная структура вынуждает добавлять информацию одновременно о двух фактах.
Аномалии могут быть устранены путем разбиения исходного отношения на два. Существует много типов аномалий модификации. Отношения можно классифицировать по типам аномалий, которые ими ликвидируются. Типы, на которые подразделяются отношения в рамках этой классификации, называются нормальными формами.
По определению каждое отношение находится в первой нормальной форме. Отношение находится во второй нормальной форме, если кюкдый из его некл1очевых атрибутов зависит от всего ключа. Отношение находится в третьей нормальной форме, если оно находится во второй нормальной форме и не имеет транзитивных зависимостей. Отношение находится в нормальной форме Бойса— Кодда, если каждый его детерминант является ключом-кандидатом. Отношение находится в четвертой нормальной форме, если оно находится в нормальной форме Бойса — Кодда и не имеет многозначных зависимостей.
Определение пятой 200 Глава 5. Реляционная модель и нормализация Вопросы ! группы 201 нормальной формы не имеет интуитивной интерпретации, и поэтому мы его не приводили. Отношение находится в доменно-ключевой нормальной форме, если каждое ограничение, накладываемое на отношение, является логическим следствием определения доменов н ключей. Под ограничением здесь понимается л1обое условие, определяющее возможные статические значения атрибутов, истинность которого может быть проверена. Домены, как они определены нами, имеют физическую и семантическую составляющие. В контексте ДКНФ, однако, под доменом подразумевается только физическое описание.
Неформальная интерпретация ДКНФ заключается в том, что каждое отношение должно иметь только одну тему. Например, в отношении может содержаться информация о профессорах или о студентах, но не о тех и других одновременно. Нормализация — это процесс анализа отношений. Отношения можно также строить синтетическим путем, рассматривая связи между атрибутами.
Если два атрибута функционально определяют друг друга, между ними имеется связь вида «один к одному». Если один из двух атрибутов функционально определяет второй, между этими атрибутами имеется снязь «многие к одному». Если ни один из двух атрибутов не определяет другой, между этими атрибутами имеется связь «ьчногие ко многим». Этв факты, приведенные в табл.