Автор: Пользователь скрыл имя, 18 Ноября 2012 в 14:40, лекция
Лекции с глоссарием по базам данным
Вуз (Н_ВУЗ, …)
Служащий ( НОМ_СЛ,…, Н_ВУЗ)
Студент ( НОМ_СТ, …,Н_ВУЗ)
Вид_сп ( ВИД_СП,…, НОМ_ТРЕН )
Культивирует ( Н_ВУЗ, ВИД_СП,…)
Судья (НОМ_СУД,…)
Вуз_гость (Н_Г,…)
Вуз_хозяин (Н_Х,…)
Участвует (ВИД_СП , НОМ_СТ,…)
Расписание (НОМ_СУД, Н_Г, Н_Х, ВИД_СП, …)
Тренер (НОМ_ТР,…, ВИД_СП)
7. Затем дописываем в отношения
атрибуты которые
Вуз (Н_ВУЗ, Н_СТАД, ВМЕСТ, ЧИСЛО_СТ)
Служащий ( НОМ_СЛ, Н_ВУЗ, ФАМ, АДР, ДОМ_Т, РАБ_Т, ДОЛЖНОСТЬ)
Студент ( НОМ_СТ, Н_ВУЗ, ПОЛ, ДАТА_РОЖД, ФАМ, АДР_СТ, ДАТА_ПОСТ)
Вид_сп ( ВИД_СП, НОМ_ТРЕН )
Культивирует ( Н_ВУЗ, ВИД_СП)
Судья (НОМ_СУД,ФАМ_СУД, АДР_СУД, ДТЕЛ_СУД, ВИД_СП_СУД)
Вуз_гость (Н_Г)
Вуз_хозяин (Н_Х)
Участвует (ВИД_СП , НОМ_СТ)
Расписание (НОМ_СУД, Н_Г, Н_Х, ВИД_СП, ДАТА_ВСТР, ВРЕМЯ_НАЧАЛА)
Тренер (НОМ_ТР, ВИД_СП)
Две таблицы ВУЗ Гость и ВУЗ Хозяин, не содержат ни какой полезной информации. Это является следствием того, что в модели отсутствуют атрибуты, характерные только для команды хозяев, или только для команды гостей. Поэтому эти две таблицы можно исключить. Например если бы мы хотели бы считать расходы команд за матч они были бы различными. Команда гостей должна оплачивать свое проживание, а команда хозяев оплатить банкет после матча например. Тогда в этих двух таблицах хранилась бы дополнительная информация.
Все восемь оставшихся отношений находятся в НФБК.
Рассмотрим вариант когда одну встречу могут судить несколько судей одновременно, тогда верхняя часть рисунка 7.55 выглядела бы следующим образом:
|
Рис. 7.56 Диаграмма ER-типа для связи расписание, в случае если одну встречу судят несколько судей. |
Встреча (ID_встреча, н_гость, н_хозяин, вид_сп, дата, время),
Судит (ID_встреча, ном_с).
Появление реляционных СУБД стало
важным шагом вперед по сравнению
с иерархическими и сетевыми СУБД,
в этих системах стали использоваться
непроцедурные языки
Они идеально походят для таких традиционных приложений, как системы резервирования билетов или мест в гостиницах, а также банковских систем, но их применение в системах автоматизации проектирования, интеллектуальных системах обучения и других системах, основанных на знаниях, часто является затруднительным.
Это прежде всего связано с примитивностью
структур данных, лежащих в основе
реляционной модели данных. Плоские
нормализованные отношения
Другим серьезным ограничением реляционных систем являются их относительно слабые возможности по части представления семантики приложения. Самое большее, что обеспечивают реляционные СУБД,- это возможность формулирования и поддержки ограничений целостности данных.
Обойти эти ограничения можно было бы в том случае, если бы реляционная модель допускала:
Первые работы, в которых отмечались эти и ряд других недостатков, появились уже в начале 80-х годов. В следующих разделах мы рассмотрим некоторые способы преодоления указанных недостатков.
Кратко рассмотрим основные направления исследований и разработок в области так называемых постреляционных систем, т.е. систем, относящихся к следующему поколению.
Хотя отнесение СУБД к тому или иному классу в настоящее время может быть выполнено только условно, можно отметить три направления в области СУБД следующего поколения. Обозначим их именами наиболее характерных СУБД.
В целом можно сказать, что СУБД следующего поколения - это прямые наследники реляционных систем. Тем не менее, различные направления систем третьего поколения стоит рассмотреть отдельно, поскольку они обладают некоторыми разными характеристиками.
Одной из наиболее известных СУБД третьего поколения является система Postgres, а создатель этой системы М.Стоунбрекер. В Postgres реализованы многие интересные средства: поддерживается темпоральная модель хранения и доступа к данным (см. ниже) и в связи с этим абсолютно пересмотрен механизм журнализации изменений, откатов транзакций и восстановления БД после сбоев; обеспечивается мощный механизм ограничений целостности; поддерживаются ненормализованные отношения (работа в этом направлении началась еще в среде Ingres).
Одно свойство системы Postgres сближает ее со свойствами объектно-ориентированных СУБД. В Postgres допускается хранение в полях отношений данных абстрактных, определяемых пользователями типов. Это обеспечивает возможность внедрения поведенческого аспекта в БД, т.е. решает ту же задачу, что и ООБД, хотя, конечно, семантические возможности модели данных Postgres существенно слабее, чем у объектно-ориентированных моделей данных. Основная разница состоит в том, что системы класса Postgres не предполагают наличия языка программирования, одинаково понимаемого как внешней системой программирования, так и системой управления базами данных. Если с использованием такой системы программирования определяются типы данных, хранящихся в базе данных, то СУБД оказывается не в состоянии контролировать безопасность этих определений, т.е. то отсутствует гарантия, что при выполнении процедур абстрактных типов данных не будет разрушена сама база данных.
Заметим, что в середине 1995 г. компания
Sun Microsystems объявила о выпуске нового
продукта - языка и семейства
Идея очень проста: никогда не станет возможно создать универсальную систему управления базами данных, которая будет достаточна и не избыточна для применения в любом приложении. Например, если посмотреть на использование универсальных коммерческих СУБД (например, Oracle или Informix) в российской действительности, то можно легко увидеть, что по крайней мере в 90% случаев применяется не более чем 30% возможностей системы. Тем не менее, приложение несет всю тяжесть поддерживающей его СУБД, рассчитанной на использование в наиболее общих случаях.
Поэтому очень заманчиво производить
не законченные универсальные
Обе эти генерационные системы
основаны прежде всего на принципах
модульности и точного
Одним из основных положений реляционной модели данных является требование нормализации отношений: поля кортежей могут содержать лишь атомарные значения. Для традиционных приложений реляционных СУБД - банковских систем, систем резервирования и т.д. - это вовсе не ограничение, а даже преимущество, позволяющее проектировать экономные по памяти БД с предельно понятной структурой. Запросы с соединениями в таких системах сравнительно редки, для динамической поддержки целостности используются соответствующие средства SQL.
Однако с появлением эффективных реляционных СУБД их стали пытаться использовать и в менее традиционных прикладных системах - САПР, системах искусственного интеллекта и т.д. Такие системы обычно оперируют сложно структурированными объектами, для реконструкции которых из плоских таблиц реляционной БД приходится выполнять запросы, почти всегда требующие соединения отношений. Осознавая эти ограничения и недостатки реляционных систем, исследователи в области баз данных выполняют многочисленные проекты, основанные на идеях, выходящих за пределы реляционной модели данных.
Постреляционная модель данных представляет
собой расширенную реляционную
модель, в которой отменено требование
атомарности атрибутов. Поэтому
постреляционную модель называют “не
первой нормальной формой” (NF2) или “многомерной
базой данных”. Она использует трехмерные
структуры, позволяя хранить в полях таблицы
другие таблицы. Тем самым расширяются
возможности по описанию сложных объектов
реального мира. В качестве языка запросов
используется несколько расширенный SQL,
позволяющий извлекать сложные объекты
из одной таблицы без операций соединения.
Направление объектно-ориентированных баз данных (ООБД) возникло сравнительно давно. Термин “объект” в программной индустрии впервые был введен в языке Simula (1967 г.) и означал какой-либо аспект моделируемой реальности. Сейчас под объектом понимается “нечто, имеющее четко определенные границы”. Одна из причин появления объектно-ориентированных СУБД потребностями программистов на ОО-языках, которым были необходимы средства для хранения объектов, не помещавшихся в оперативной памяти компьютера. Также важна была задача сохранения состояния объектов между повторными запусками прикладной программы. Поэтому, большинство ООСУБД представляют собой библиотеку, процедуры управления данными которой включаются в прикладную программу. Примеры реализации ООСУБД как выделенного сервера базы данных крайне редки.
Пример объектно-ориентированной СУБД - ObjectStore которая обеспечивает долговременное хранение в базе данных объектов, созданных программами на языках C++ и Java.
Первой формализованной и
Любая модель данных должна включать три аспекта: структурный, целостный и манипуляционный. Посмотрим, как они реализуются на основе объектно-ориентированная парадигмы программирования: