русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

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


Дата добавления: 2014-02-04; просмотров: 890; Нарушение авторских прав


Итак, первым делом задаем в отношении Т1 уникальный ключ по атрибуту NAME. Этап 4 означает, что все записи окажутся отсортированными по выбранному полю, что делает их пригодными для быстрого (двоичного) поиска. С каждой записью оказывается связанным некоторое ключевое выражение - например, номер записи в отношении Т1. Это ключевое выражение мы и будем хранить в атрибуте связи отношения Т0.

T1 T0

NAME   NAME I1 I2 PHONE
Иванов   А Б
Петров   В Г
Сидоров   Д Е
    М В

Рис. 27.7. Установление связи между таблицами

Теперь данная БД нормализована: в ней нет дублирующей информации. Обратите внимание, что для удобства атрибут связи и атрибут с уникальными значениями имеют одинаковые имена (Рис. 23.7).

Следует заметить, что декомпозиция должна быть оправдана не только с точки зрения устранения дублирования, но и с точки зрения минимизации размера БД. Так, в рассматриваемом примере значения атрибутов I1 или I2 отношения T0 могут повторяться, но их вынесение в отдельные отношения было бы нерациональным решением. Давайте посчитаем: в отношении Т0 каждое из этих полей занимает 1 байт. Вынос их в отдельные отношения приведет к тому, что ключевое выражение будет иметь длину также 1 байт (число букв, для русского языка равное 32, вполне умещается в одном байте). Поле связи, соответственно, тоже будет иметь размер 1 байт. В итоге не имеем никакого выигрыша в размере отношения Т0 и сверх этого получаем еще два отношения. В данном случае подобная оптимизация не оправдана.

И, наконец, последний 5-й этап создания БД - установление связей между отношениями. Прежде всего, надо выделить главное отношение. Главным отношением будет, как правило, то, которое содержит поля связи. В данном случае это Т0. Установим следующее правило: при переходе с записи на запись в Т0 берется ключевое значение из поля Т0àNAME и по нему выполняется двоичный поиск в отношении Т1. Тогда всегда в отношении Т1 текущей будет запись с фамилией, соответствующей текущему номеру телефона в отношении Т0.



 

БЫЛО:

PRODUCT FIRMA
Привод ОАО «Электроприбор»
Задвижка ООО «Арматура»
Задвижка ОАО «Электроприбор»
Привод ООО «Арматура»

 

СТАЛО:

PRODUCT   PRODUCT FIRMA   FIRMA
Привод     ОАО "Электроприбор"
Задвижка     ООО "Арматура"
       
       

Рис. 27.8. Нормализация связи «многий – ко – многим»

 

Интересный вопрос возникает при удалении записи из нормализованного отношения, не являющего главным. Скажем, оказалось, что всем абонентам по фамилии "Петров" сняли телефоны. Тогда можно удалить соответствующую запись из отношения Т1. При этом правильно спроектированная БД выполнит каскадное удаление: автоматически удалит все записи в Т0, атрибут связи которых ссылался на запись "Петров" в отношении Т1. Каскадное удаление гарантирует отсутствие в главном отношении "потерянных" записей, которые ссылаются "в никуда".

Существует три вида связей между атрибутами двух отношений. Они называются "один-к-одному", "один-ко-многим" и "многий-ко-многим".

Связь "один-к-одному":между атрибутами А и В существует связь "один к одному", если каждому значению атрибута А соответствует одно и только одно значение атрибута В. Обратное может быть неверно. Именно такой вид связи установлен между атрибутами "Имя абонента" (А) и "Номер телефона" в ненормализованной базе данных (В): каждому абоненту соответствует один и только один телефонный номер.

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

Связь "один-ко-многим": одному значению атрибута А соответствует одно или несколько значений атрибута В. Это самый распространенный вид связи. В данном примере, если рассматривать Т1 как главное отношение, атрибут T1àNAME (A) связан связью "один-ко-многим" с атрибутом T0àPHONE (B), поскольку абоненты с разными номерами телефонов могут иметь одинаковые фамилии (Рис. 23.9). Нормализация такой связи заключается в выделении в отдельное отношение атрибута А.

 

 

Рис. 27.9 Связь "один-ко-многим".

Связь "многий-ко-многим": нескольким значениям атрибута А соответствует несколько значений атрибута В (Рис. 23.10). Пример такой связи - уже рассматривавшаяся выше база товаров и их покупателей. Один покупатель может покупать несколько разных товаров, а один и тот же товар может продаваться нескольким разным покупателям. Для нормализацииБД разбивается на три отношения: нормализованное А, нормализованное В и отношение связи.

 

 

Рис. 27.10 Связь "многий-ко-многим".


 



<== предыдущая лекция | следующая лекция ==>
Нормализация структур баз данных | Создание баз данных


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 1.046 сек.