- •Содержание
- •Основные понятия
- •Понятие данных
- •Файловые системы
- •Системы баз данных
- •История развития субд
- •Трехуровневая архитектура ansi/sparc
- •Общая характеристика моделей данных
- •Основные понятия модели данных
- •Представление статических и динамических свойств
- •Общая характеристика структурных компонентов. Множества: домены и атрибуты
- •Общая характеристика структурных компонентов. Отношения: сущности
- •Общая характеристика структурных компонентов. Отношения: связи
- •Общая характеристика ограничений целостности
- •Модель данных «сущность – связь»
- •Уровни представления информации
- •Уровень 1 – информация о сущностях и связях
- •Уровень 2. Структура информации
- •Ограничения целостности в модели сущность-связь
- •Расширенная модель данных сущность-связь: нотация idef1x
- •Реляционная модель данных
- •Базовые структурные компоненты реляционной модели данных
- •Целостная часть реляционной модели данных
- •Языковые средства описания данных
- •Манипуляционная часть реляционной модели данных
- •Подмножество sql для манипулирования данными
- •Примеры написания запросов
- •I. И еще несколько примеров написания запросов из документации [10]
- •Краткая характеристика языка sql pl db2® udb
- •Дополнительные возможности описания ограничений целостности
- •Дополнительные возможности db2
- •Описание данных
- •Манипулирование данными
- •Дополнительные возможности формирования запросов
- •Типы данных, определенные пользователем
- •Функции, определенные пользователем
- •Теория проектирования реляционных баз данных
- •Цели проектирования
- •Функциональные зависимости
- •1. Рефлексивность
- •2. Пополнение
- •3. Транзитивность
- •4. Псевдотранзитивность
- •5. Аддитивность (объединение)
- •6. Декомпозиция (проективность)
- •7. Композиция
- •Нормализация отношений
- •Внутренние структуры хранения
- •Структурная схема обработки запроса
- •Бинарные деревья
- •Многоходовые деревья
- •Сравнение методов индексирования
- •Создание индексов в db2®
- •Организация файлов базы данных в db2®
Модель данных «сущность – связь»
В модели "сущность-связь" используется более естественное представление, в соответствии с которым реальный мир состоит из "сущностей" и "связей". Эта модель основывается на некоторой важной семантической информации о реальном мире. Модель может обеспечить высокую степень независимости данных и основывается на теории множеств и реляционной теории.
Модель "сущность-связь" предложена в 1976 году Питером Ченом (P. Chen) и с тех пор неоднократно усовершенствовалась и самим Ченом, и многими другими.
Уровни представления информации
П. Чен, разрабатывая модель данных «сущность-связь», предложил следующие четыре уровня представления информации:
Информация, относящаяся к объектам и связям, как она существует в нашем представлении.
Структура информации – организация информации, в которой объекты и связи представлены данными.
Структура данных, независимая от способа доступа (т.е. не связанная со схемами поиска, индексации и т.п.)
Структура данных, зависимая от способа доступа.
Модель данных «сущность – связь» поддерживает первый и второй уровни абстракции. Она предназначена, прежде всего, для проектирования баз данных; нет ни одной СУБД, которая была бы основана на этой модели данных. В связи с этим, в ней рассматриваются только два основных компонента из трех: определение структуры и ограничения целостности; набор операций для этой модели данных не рассматривается.
Прежде всего, рассмотрим структурные компоненты модели данных.
Уровень 1 – информация о сущностях и связях
Информация, относящаяся к объектам и связям, как она существует в нашем представлении.
В соответствии с названием, основными структурными компонентами модели данных являются сущности (entity) и связи (relationship).
Определение
Сущность – нечто, принадлежащее объективной реальности, облаченное в материальную форму или форму идеи; любой объект, который может быть идентифицирован некоторым способом, отличающим его от других объектов, и информацию о котором надо хранить в базе данных.
Примеры сущностей: ЛИЧНОСТЬ, КОМПАНИЯ, СДЕЛКА
Определение
Связь – некоторая ассоциация, устанавливаемая между двумя или более сущностями.
Примеры связей:
ОТЕЦ-СЫН – связь между сущностями ЛИЧНОСТЬ, в связь вовлекаются экземпляры одной и той же сущности;
СОТРУДНИК ПРЕДПРИЯТИЯ – связь между сущностями ЛИЧНОСТЬ и ПРЕДПРИЯТИЕ.
База данных предприятия содержит информацию о сущностях и связях, которые представляют интерес для этого предприятия.
Сущности: тип сущности и множество сущностей
Будем обозначать сущности, которые существуют в нашем воображении, через e. В соответствии с определением сущности, они обладают некоторыми свойствами, позволяющими их идентифицировать. Следовательно, каждая сущность относится к некоторому отличному от других множеству сущностей. Для каждого множества сущностей определяются некоторые свойства, общие для всех сущностей из множества. Если некоторая сущность относится к определенному множеству сущностей, то эта сущность обладает свойствами, общими для всех сущностей этого множества.
Применение к сущностям приемов построения абстракции позволяет получить тип сущности – некоторое обобщенное представление однородных сущностей. Например, имеем некоторое множество сущностей: {МОСКВА, ОРЕЛ, КУРСК, …}. Обобщая сущности из этого множества, получаем тип сущности: ГОРОД. Экземпляр сущности – конкретный элемент из множества, например, КУРСК. Таким образом, тип сущности – это интенсионал, а конкретное множество сущностей – экстенсионал типа сущности.
С каждым множеством сущностей связывается предикат, позволяющий проверить, принадлежит ли сущность данному множеству. Следовательно, предикат входит в число свойств, общих для множества сущностей. Например, для множества сущностей СОТРУДНИК можно определить следующий предикат: "человек, работающий на предприятии". Задавая предикат, можно включать в него дополнительные условия, например: "возраст сотрудника в пределах …", или "занимает определенную должность", или что-нибудь еще.
Будем обозначать множество сущностей через E.
Заметим, что множества сущностей не обязаны быть непересекающимися. Например, сущность, принадлежащая множеству сущностей СТУДЕНТ, принадлежит также и множеству сущностей ЛИЧНОСТЬ. В этом случае множество сущностей СТУДЕНТ является подмножеством множества сущностей ЛИЧНОСТЬ.
Связи, роли и множество связей
Связь – это ассоциация, устанавливаемая между сущностями. Для связи также определяются:
множество связей,
тип связи,
экземпляр связи.
Множество связей – это математическое отношение между n сущностями, каждая из которых относится к некоторому множеству сущностей.
Обозначим множество связей через R:
R = {<e1, e2, ..., en> | e1 ∈ E1, e2 ∈ E2, ..., en ∈ En}.
Здесь каждый кортеж отношения, <e1, e2, ..., en>, является связью (relationship).
В этом определении множества сущностей не обязаны быть различными. Например, БРАК – это связь между двумя сущностями из одного и того же множества сущностей ЛИЧНОСТЬ.
Тип связи – определяется как ассоциация типов сущностей. Например, ассоциация типов сущностей ЛИЧНОСТЬ, ЛИЧНОСТЬ определяет тип связи БРАК; ассоциация типов сущностей ПРОЕКТ и СОТРУДНИК определяет тип связи ИСПОЛНИТЕЛЬ ПРОЕКТА.
Роль сущности в связи – это функция, которую сущность выполняет в данной связи. Например, в связи БРАК "муж" и "жена" – это роли. В связи ИСПОЛНИТЕЛЬ ПРОЕКТА ролями могут быть "проект" и "исполнитель". Обозначим роли сущностей в связи через r. Упорядочение сущностей в определении связи может отсутствовать, если в связи явно указаны роли сущностей:
<e1, e2, ..., en> – в определении связи сущности упорядочены
<r1/e1, r2/e2, ..., rn/en> – в определении связи сущности не упорядочены; явно указаны роли сущностей.
Рассмотрим примеры.
Для типа связи БРАК: или <e1, e2>, где точно задано, что e1 играет роль мужа, а e2 – жены, или же <муж/e1, жена/e2>, и тогда порядок перечисления типов сущностей в определении типа связи не важен. Для типа связи ИСПОЛНИТЕЛЬ ПРОЕКТА: или <e1, e2>, где точно задано, что e1 – это проект, над которым работает сотрудник, а e2 – сотрудник, исполняющий проект, или же <проект/e1, исполнитель/e2>, и тогда порядок перечисления типов сущностей в определении типа связи не важен.
Атрибут, значение и множество значений
В базе данных организации необходимо хранить информацию о сущностях и связях, интересующую данную организацию. Эту информацию получают путем наблюдения или измерения и выражают множеством пар "атрибут-значение".
Примеры значений: 3, "красный", "Иван", "Иванов". Значения классифицируются и объединяются в некоторые множества значений, например:
КОЛИЧЕСТВО = {3, 28, …}
ЦВЕТ = {красный, зеленый, …}
ФАМИЛИЯ = {Иванов, Петров, Сидоров, …}
Будем обозначать значение через v, а множество значений – через V.
С каждым множеством значений связывается предикат, позволяющий проверить, принадлежит ли значение этому множеству.
Определение
Атрибут может быть определен как функция, отображающая:
множество сущностей в множество значений
f: Ei Vi
или множество связей в декартово произведение множеств значений
f: Ri Vi1 Vi2 ... Vin
Особенность функции заключается в том, что каждому экземпляру сущности соответствует точно одно значение из множества значений.
Например, рассмотрим множество сущностей СОТРУДНИК. Информация о сущностях определяется из множеств значений НОМЕР СОТРУДНИКА, ФАМИЛИЯ, ИМЯ, ОТЧЕСТВО, КОЛИЧЕСТВО ЛЕТ. Определены соответствующие атрибуты (Рис. 3.1).
Рис. 3.1. Информация о сущностях
В приведенном примере можно выделить следующие ситуации:
атрибут может отображать множество сущностей в одно множество значений; пример: атрибут Номер сотрудника;
атрибут может задавать отображение множества сущностей в несколько (декартово произведение) множеств значений; пример: атрибут Полное имя;
разные атрибуты могут задавать отображение одного и того же множества сущностей в одно и то же множество значений (или одну и ту же группу множеств значений). Пример: атрибуты Возраст и Стаж работы.
Таким образом:
Атрибут и множество значений являются различными понятиями, хотя в некоторых случаях они могут иметь одно и то же имя (например, атрибут Номер сотрудника задает отображение множества объектов СОТРУДНИК в множество значений НОМЕР СОТРУДНИКА);
Атрибут определяется как функция. Следовательно, он отображает данный объект в одно значение (или одну группу значений в случае декартова произведения множеств значений).
Связи также могут иметь атрибуты.
Рассмотрим следующий пример. Определены множества сущностей СОТРУДНИК и ПРОЕКТ. Между ними определяется множество связей ИСПОЛНИТЕЛЬ ПРОЕКТА. На данном множестве связей можно определить атрибут Доля времени, представляющий долю времени, выделенную конкретному сотруднику на конкретный проект. Этот атрибут отображает связь на множество значений ПРОЦЕНТ. Он не является ни атрибутом сущности СОТРУДНИК, ни атрибутом сущности ПРОЕКТ, так как его смысл зависит и от сотрудника, и от проекта (Рис. 3.2).
Понятие атрибута связи важно для понимания семантики данных и определения функциональных зависимостей между данными.
Рис. 3.2. Информация о связях
