
- •230111 Компьютерные сети
- •Оглавление
- •Аннотация
- •Для чего нужны базы данных.
- •1.Представление данных в памяти компьютера.
- •1.1.Типы и структуры данных
- •1.1.1.Основные типы данных.
- •1.1.2.Обобщенные структуры или модели данных.
- •1.2.Методы доступа к данным.
- •1.2.1.Методы поиска по дереву.
- •1.2.2.Хеширование.
- •2.Модель "сущность-связь".
- •2.1.Представление данных с помощью модели "сущность-связь".
- •2.1.1.Назначение модели.
- •2.1.2.Элементы модели.
- •2.2.Диаграмма "сущность-связь".
- •Выделим интересующие нас сущности и связи:
- •Обобщая все проведенные выше рассуждения, получим диаграму "сущность-связь", показанную на слудющем рисунке.
- •2.3.Целостность данных.
- •2.4.Обзор нотаций, используемых при построении диаграмм "сущность-связь"
- •2.4.1.Нотация Чена.
- •2.4.2.Нотация Мартина
- •2.4.3.Нотация idef1x.
- •2.4.4.Нотация Баркера.
- •3.Дореляционные модели представления данных.
- •3.1.Иерархическая модель данных.
- •3.1.1.Структура данных.
- •3.1.2.Операции над данными, определенные в иерархической модели:
- •3.1.3.Ограничения целостности.
- •3.2.Сетевая модель данных.
- •3.2.1.Структура данных.
- •3.2.2.Операции над данными.
- •4.1.2.Свойства отношений.
- •4.2.Теория нормальных форм.
- •4.2.1.Функциональные зависимости.
- •4.2.5. Bcnf - нормальная форма Бойса-Кодда.
- •4.2.6. Многозначные зависимости и четвертая нормальная форма (4nf).
- •4.2.7. Зависимости по соединению и пятая нормальная форма (5nf).
- •4.3.Ограничения целостности
- •4.3.1.Целостность сущностей.
- •4.3.2.Целостность ссылок
- •Проекция
- •Объединение
- •Пересечение
- •Разность
- •Произведение
- •Деление
- •Соединение
- •4.5.Реляционное исчисление.
- •4.6.Язык sql
- •4.6.1.Типы данных sql.
- •5.Проектирование реляционных баз данных.
- •5.1.Этапы проектирования данных
- •5.2.Инструментальные средства проектирования информационных систем.
- •5.3.Методологии функционального моделирования.
- •5.3.1.Диаграммы потоков данных. Нотация Йордона - Де Марко
- •5.3.2.Другие нотации, используемые при построении диаграмм потоков данных.
- •5.3.3.Методология sadt (idef0).
- •5.3.4.Сравнительный анализ методологий функционального моделирования.
- •5.4.Концептуальное моделирование. Пример построения модели "сущность-связь"
- •5.5.Правила порождения реляционных отношений из модели "сущность-связь"
- •5.5.1.Бинарные связи
- •5.5.3.Иерархические связи.
- •5.6.Проектирование реляционной базы данных на основе декомпозиции универсального отношения.
- •5.7.Обзор некоторых case-систем.
- •5.7.1.Power Designer компании Sybase.
- •6.Современные направления развития баз данных.
- •6.1.Ограничения реляционных баз данных.
- •6.2.Постреляционные субд.
- •6.3.Объектно-ориентированные субд.
- •6.3.1.Объектно-ориентированная парадигма.
- •6.3.2.Объектно-ориентированные субд.
- •6.3.3.Стандарт odmg.
- •6.3.4.Объектные расширения реляционных субд. Язык sql-3.
- •6.4.Объектно-реляционные субд.
- •6.5.Нечисловая обработка и ассоциативные процессоры.
- •7.Физическая организация субд.
- •7.1.Архитектура "клиент-сервер".
- •7.1.1.Основные понятия.
- •7.1.2.Модели взаимодействия клиент-сервер.
- •7.1.3.Мониторы транзакций.
- •7.2.Обработка распределенных данных.
- •7.3.Структура сервера базы данных.
- •8.Базы знаний.
- •8.1.Понятие системы баз знаний.
- •8.2.Структура и функции системы баз знаний.
- •8.3.Инструментальные средства построения систем баз знаний.
- •9.Источники информации по базам данных в Internet.
- •9.1.Электронные журналы и другие периодические издания.
- •9.2.Исследовательские группы и проекты.
- •9.3.Компании - разработчики.
5.6.Проектирование реляционной базы данных на основе декомпозиции универсального отношения.
Как мы видели из предыдущего материала, проектирование реляционной базы данных фактически сводится к устранению избыточных функциональных зависимостей (а при необходимости избыточных многозначных зависимостей и зависимостей по соединению) из предварительного набора отношений, полученного каким-либо способом (например, из диаграммы сущность связь). В том случае, когда проектируемая база данных сравнительно невелика (общее число атрибутов не превышает 20-30), предварительный набор отношений можно представить в виде одного отношения, называемого универсальным. В него включаются все представляющие интерес атрибуты.
В качестве примера построим универсальное отношение для базы данных publications:
PUBLICATIONS(AUTHOR, TITLE, YEARPUB, PUBLISHER, PUBL_URL, SITE, SITE_URL)
здесь
AUTHOR - имя автора
TITLE - название книги
YEARPUB - год издания книги
PUBLISHER - наименование издательства
PUBL_URL - ссылка на веб-сервер издательства
SITE - наименование Internet-ресурса
SITE_URL - указатель на Internet-ресурс
Функциональные зависимости, имеющиеся в полученном отношении, представлены на следующей схеме:
(1) TITLE --> YEARPUB
|
(2) -----> PUBLISHER --> PUB_URL
(3) SITE ---> SITE_URL
Для устранения избыточной функциональной зависимости (3) декомпозируем исходное отношение на два:
PUBLICATIONS(AUTHOR, TITLE, YEARPUB, PUBLISHER, PUBL_URL, SITE)
WWWSITES(SITE,SITE_URL)
Приняв во внимание, что атрибут SITE требует типа данных "строка" и следовательно его использование в качестве первичного ключа не очень удобно, введем в отношении WWWSITES первичный ключ SITE_ID, основанный на целом типе данных. (Такая подстановка, хотя и ведет к избыточности с точки зрения теории, на практике позволяет ускорить обработку данных. Поэтому, в дальнейшем, примем за правило заменять подобным образом строковые первичные ключи, не оговаривая это в каждом отдельном случае.).
Теперь наши отношения примут вид:
PUBLICATIONS(AUTHOR, TITLE, YEARPUB, PUBLISHER, PUBL_URL, SITE_ID)
WWWSITES(SITE_ID,SITE,SITE_URL)
Устраним функциональную зависимость (2):
PUBLICATIONS(AUTHOR, TITLE, YEARPUB, PUB_ID, SITE_ID)
PUBLISHERS(PUB_ID,PUBLISHER,PUBL_URL)
WWWSITES(SITE_ID,SITE,SITE_URL)
Теперь мы имеем следующие избыточные функциональные зависимости в отношении PUBLICATIONS:
TITLE --> YEARPUB
|
-----> PUB_ID
Для их устранения необходимо вынести атрибуты TITLE, YEARPUB и PUB_ID в отдельное отношение:
PUBLICATIONS(AUTHOR, TITLE_ID, SITE_ID)
TITLES(TITLE_ID,TITLE,YEARPUB,PUB_ID)
PUBLISHERS(PUB_ID,PUBLISHER,PUBL_URL)
WWWSITES(SITE_ID,SITE,SITE_URL)
Теперь наша база данных находится в третьей нормальной форме, однако мы видим, что полученный набор отношений не совпадает с набором, полученным из модели "сущность-связь". Для того, чтобы разобраться в причинах этого противоречия, рассмотрим отношение PUBLICATIONS вместе с его данными. Добавим автора, который имеет две книги и две web-страницы:
| AUTHOR | TITLE_ID | SITE_ID |
|--------|----------|---------|
| J.Doe | 1 | 1 |
| J.Doe | 2 | 1 |
| J.Doe | 1 | 2 |
| J.Doe | 2 | 2 |
Из этой таблицы становится ясно, что в рассматриваемом отношении существует многозначная зависимость AUTHOR ->> TITLE_ID | SITE_ID. Для ее устранения приведем отношение к четвертой нормальной форме, для чего разобъем его на три.
AUTHORS(AU_ID,AUTHOR)
PUBLICATIONS(AUTHOR,TITLE_ID,SITE_ID) -> TITLEAUTHORS(TITLE_ID,AU_ID)
WWWSITEAUTHORS(AU_ID,SITE_ID)
Окончательно получим:
AUTHORS(AU_ID,AUTHOR)
TITLEAUTHORS(TITLE_ID,AU_ID)
WWWSITEAUTHORS(AU_ID,SITE_ID)
TITLES(TITLE_ID,TITLE,YEARPUB,PUB_ID)
PUBLISHERS(PUB_ID,PUBLISHER,PUBL_URL)
WWWSITES(SITE_ID,SITE,SITE_URL)
Теперь схема базы данных соответствует структуре, полученной другими способами. Анализ показывает, что избыточные функциональные зависимости в ней отсутствуют.
Литература:
Г. Джексон Проектирование реляционных баз данных для использования с микроЭВМ. М, Мир, 1991.
Д. Ульман Основы систем баз данных. М.1983.