Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lektsia_10_razrabotka_Bazy_Dannykh_modeli_Danny...doc
Скачиваний:
1
Добавлен:
18.09.2019
Размер:
298.5 Кб
Скачать

Нормализация данных

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

Таблица c ненормализованными данными может быть преобразована в несколько нормализованных таблиц-отношений.

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

  • при первой нормальной форме все атрибуты отношения должны быть простыми;

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

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

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

Логические связи в реляционной модели, реляционная бд

Логические связи. Для логической связи таблицы-отношения R1 с подчиненной таблицей-отношением R2 последняя должна содержать внешний ключ, по составу атрибутов одинаковый с уникальным (первичным) ключом главной таблицы-отношения R1.

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

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

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

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

Целостность базы данных – это свойство базы, при построении которой выполнен набор определенных правил, которые устанавливают допустимость типов и значений данных, отсутствие дублирования описательных данных в разных таблицах, обязательность значений ключевых атрибутов в разных таблицах базы, а также корректность связей между таблицами. Ссылочной целостностью считается требование обязательного наличия связанной записи (строки) главной таблицы для каждой строки подчиненной таблицы. Таким образом, внешнему значению ключа связи подчиненной таблицы всегда должна найтись запись с таким же значением первичного ключа в главной таблице. Соответственно, в БД, в которой поддерживается связная целостность, не может быть введена в подчиненную таблицу запись, для которой нет связываемой с ней записи в главной таблице.

Описание логической организации реляционной БД должно определять ее структуру. Оно включает определение состава таблиц-отношений и описание структуры каждого отношения. Описание структуры каждого отношения (реляционной таблицы) должно содержать уникальное в БД имя таблицы-отношения; состав и последовательность атрибутов отношения; задание уникальных (внутри отношения) имен атрибутов; определение типа и размера данного для каждого атрибута. Кроме того, для каждого отношения должен быть указан первичный ключ (простой или составной).

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

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

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

В таблицах этой реляционной базы данных содержатся без повторения атрибуты соответствующих объектов: ДОГОВОР (номер, дата, код заказчика, сумма по договору); ИЗДЕЛИЕ (код, наименование, ед. измерения, цена); ЗАКАЗЧИК (код, наименование, адрес, банк); ЗАКАЗ (номер договора, код изделия, минимальная партия, месяц, плановое количество, сумма поставки). На связях между таблицами указаны внешние ключи.

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

Операциями, выполняемыми на уровне строк отношений, являются включение, удаление, обновление.

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

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

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

Рассмотрим основные операции языка реляционной алгебры над отношениями.

Объединение

Операция объединение выполняется над двумя совместимыми отношениями R1, R2 (с идентичной структурой – d1,d2, ... dn). В результате операции объединения строится новое отношение R = R1 U R2. Отношение R имеет тот же состав атрибутов d1,d2, ... dn и совокупность кортежей (строк) исходных отношений. Причем в эту совокупность не включаются дубликаты.

Ниже приведены исходные отношения: R1 – Клиенты банка А, R2 – Клиенты банка В, результат объединения –.

Рис.10.6.Исходные отношения(R1, R2) и результат объединения (R)

В новое отношение R не вошел кортеж К22, так как он дублирует кортеж К11.

Пересечение

Операция пересечение выполняется над двумя совместимыми отношениями R1, R2 с идентичным набором атрибутов – d1,d2, ... dn. Результирующее отношение RP= R1R2 содержит одинаковые кортежи, которые есть в каждом из двух исходных. Результат пересечения имеет тот же состав атрибутов, как в исходных отношениях.

Пересечение двух отношений R1 (Клиенты банка А) и R2 (Клиенты банка В) дает одно отношение R (Клиент), в которое войдут клиенты, являющиеся одновременно клиентами банка А и банка В:

Рис. 10.7. Пересечение двух отношений

Вычитание

Операция вычитание выполняется над двумя совместимыми отношениями R1, R2 с идентичным набором атрибутов – d1,d2, ... dn. В результате операции вычитания строится новое отношение RV = R1 – R2 с идентичным набором атрибутов, содержащее только те кортежи первого отношения R1, которые не повторяются в другом отношении R2.

Вычитание отношения R2(Клиенты банка В) из отношения R1(Клиенты банка А) дает отношение RV(Клиент только банка А):

RV = R1– R2 = {K11,K12,K13}– {K21,K22,K23} = {K12,K13},

поскольку K11 = K22.

Рис. 10.8. Вычитание двух отношений

Декартово произведение

Операция декартово произведение выполняется над двумя отношениями R1, R2, имеющими разный состав атрибутов – (d1,d2, ... dn) и (p1, p2, ... pm), соответственно. В результате операции декартова произведения образуется новое отношение RD = R1  R2, которое включает все атрибуты исходных отношений (d1,d2, ... dn, p1, p2, ... pm). Результирующее отношение состоит из всевозможных сочетаний кортежей исходных отношений R1 и R2. Число кортежей декартова произведения равно произведению количеств кортежей в исходных отношениях.

Например, декартово произведение двух отношений R1(Студент) и R2 (Предмет) дают новое отношение RD(Экзаменационная ведомость), которое содержит все атрибуты исходных отношений.

Рис. 10.9.

Рис. 10.10. Декартово произведение двух отношений

Заметим, что в полученное отношение целесообразно добавить атрибут “оценка” для записи результатов экзамена.

Выбор

Операция выбор выполняется над одним отношением R.

Для отношения R=(d1,d2, ... dn) по заданному условию (предикату) осуществляется выборка подмножества кортежей. Результирующее отношение (RW) имеет ту же схему (d1,d2, ... dn), что и исходное, но число его кортежей будет меньше или равно исходному.

Условие задается как логическое выражение, определяющее значения атрибутов.

Ниже приведен пример исходного отношения R “Изделие” и результат операции выбора (отношение RW) по заданному условию: цена >=150.

Отношение R Отношение RW

Изделие

Цена

Изделие

Цена

И1

100

И2

200

И2

200

И3

150

И3

150

Рис. 10.11. Операция выбора по заданному условию

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

Проекция

Операция проекция выполняется над одним отношением R = (d1,d2, ... dn) и формирует новое отношение (RPR) с заданным подмножеством атрибутов и заданной последовательностью атрибутов исходного отношения R.

Как правило, новое отношение имеет другую структуру (di, dl, ... dm). Оно может содержать меньше кортежей, так как после отбрасывания в исходном отношении R части атрибутов (возможного исключения первичного ключа) могут образоваться кортежи, дублирующие друг друга. Дублирующие кортежи из результирующего отношения RPR исключаются. Проекция позволяет переупорядочить домены в таблице-отношении. Ниже приведен пример исходного отношения R(Служащий) и результат проекции (RPR) этого отношения на два его атрибута – номер отдела и должность.

Рис. 10.12. Проекция отношения

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

Соединение

Операция соединение выполняется для заданного условия соединения над двумя логически связанными отношениями. Исходные отношения R1 и R2 имеют разные структуры, в которых есть один или несколько одинаковых атрибутов – ключи связи.

Операция соединения формирует новое отношение RS= (di, dl, ... dm), структура которого является совокупностью всех атрибутов исходных отношений. Кортежи результирующего отношения (RS) формируются объединением каждого кортежа из R1 с каждым из кортежей в R2, для которого выполняется заданное условие. При этом условием, как правило, являются одинаковые значения ключа связи в исходных отношениях.

Ниже приведен пример отношений R1 (Поставки) и R2 (Поставщики), логически связанных по одинаковому атрибуту – коду поставщика.

Отношение R1 (Поставки) Отношение R2 (Поставщики)

Код

изделия*

Код

поставщика*

Количество

Код

постав-щика*

Наименование

поставщика

Адрес

поставщика

к1

ПО1

10

ПО1

Фирма экспортер

Москва

к1

ПО2

20

ПО2

Малое предприятие

Петербург

к2

ПО1

10

ПО3

Акц. общество

Воронеж

к3

ПО2

15

к4

ПО1

30

* – обозначение ключевых атрибутов

Рис. 10.13. Отношения, связанные по атрибуту код поставщика

Ниже приведено отношение-результат (RS) операции соединения R1 и R2 по условию равенства кода поставщика в кортежах R1 и R2.

Отношение RS – результат соединения

Код

Изделия *

Код

постав-щика*

Коли- чество

Наименование

поставщика

Адрес

поставщика

к1

ПО1

10

Фирма экспортер

Москва

к1

ПО2

20

Малое предприятие

Петербург

к2

ПО1

10

Фирма экспортер

Москва

к3

ПО2

15

Малое предприятие

Петербург

к4

ПО1

30

Фирма экспортер

Москва

Рис. 10.14. Результат операции соединения отношений по условию равенства одинаковых атрибутов

Деление

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

В приведенном выше примере можно применить операцию деления к отношению RS на отношение R1(поставки), тогда получим отношение RD (поставившие товар).

Отношение RD – результат деления

Код поставщика*

Наименование

поставщика

Адрес поставщика

ПО1

Фирма экспортер

Москва

ПО2

Малое предприятие

Петербург

Рис. 10.14. Результат операции деления отношений

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]