4. Модели данных
Предметная область — некая часть реального мира, которая изучается с целью организации управления и автоматизации. Предметная область представляется множеством фрагментов, например, железная дорога — управлением дороги, отделениями дороги, бухгалтерией и т.д. Каждый фрагмент предметной области характеризуется множеством объектов и процессов, использующих объекты, а также множеством пользователей, характеризуемых различными взглядами на предметную область.
Данные являются некоторым отображением объектов реального мира. Любые данные — это абстракция. Чтобы отобразить объект реального мира в базе данных, необходимо знать, какие признаки объекта будут нужны для работы. Если, например, объектом является "служащий", то такими признаками могут быть его фамилия, имя, отчество, год рождения, специальность, зарплата и т. д.
Традиционно объекты реального мира, сведения о которых хранятся в базе данных, называются сущностями (entities). Между сущностями существует некоторое множество связей.
Сущность — это объект, который может быть идентифицирован неким способом, отличающим его от других объектов. Набор сущностей (entity set) — множество сущностей одного типа (обладающих одинаковыми свойствами). Например, все люди, железные дороги и т.д. Наборы сущностей не обязательно должны быть непересекающимися. Например, сущность, принадлежащая к набору ПОЕЗД, также принадлежит набору СРЕДСТВО_ПЕРЕДВИЖЕНИЯ.
Каждая сущность представляется множеством атрибутов, описывающих свойства всех членов данного набора сущностей.
Множество значений (область определения) атрибута называется доменом. Например, для атрибута ВЕС домен задается интервалом целых чисел, положительных поскольку отрицательного веса не бывает.
Ключ сущности — это такая группа атрибутов, что отображение набора сущностей в соответствующую группу наборов значений является взаимно однозначным отображением. Таким образом, ключ сущности — это один или более атрибутов, уникально определяющих данную сущность.
Связь (relationship) — это ассоциация, установленная между несколькими сущностями. Связь может иметь атрибуты. Например, для связи ОТДЕЛ-РАБОТНИК можно задать атрибут СТАЖ_РАБОТЫ В_ОТДЕЛЕ. В связи сущность может иметь ту или иную роль. Роль сущности в связи — функция, которую выполняет сущность в данной связи. Например, в связи РОДИТЕЛЬ-ПОТОМОК сущности ЧЕЛОВЕК могут иметь роли "родитель" и "потомок". Указание ролей не является обязательным и служит для уточнения семантики связи.
Набор связей (relationship set) — это отношение между n(n>1) сущностями, каждая из которых относится к некоторому набору сущностей. При n=2, когда связь объединяет две сущности, она называется бинарной. Доказано, что n-арный набор связей (n>2) всегда можно заменить множеством бинарных.
Число сущностей, которое может быть ассоциировано через набор связей с другой сущностью, называют степенью связи.
База данных — это совокупность описаний объектов мира и связей между ними, значимых для конкретной прикладной области.
Для бинарных связей различают следующие типы связи:
связь 1:1 (один-к-одному). Это такая связь между типами сущностей А и В, когда каждому экземпляру сущности А соответствует один и только один экземпляр сущности В и наоборот — каждому экземляру сущности В соответствует один и только один экземпляр сущности Л. Примером является связь РУКОВОДИТ между сущностями типа НАЧАЛЬНИК_ЖЕЛЕЗНОЙ ДОРОГИ и ЖЕЛЕЗНАЯ ДОРОГА;
связь I:N (один—ко-многим). В такой связи между типами сущностей А и В каждому экземпляру сущности А соответствует один или несколько экземпляров сущности В, а каждому экземпляру сущности В соответствует один и только один экземпляр сущности А. Примером является связь типа ИМЕЕТ В_СОСТАВЕ между сущностями типа ЖЕЛЕЗНАЯ_ДОРОГА и ОТДЕЛЕНИЕ ЖЕЛЕЗНОЙ_ДОРОГИ;
связь М:1 (многие-к—одному). Связь такого типа является обратной связи со степенью 1:N. Примером может служить связь типа ВХОДИТ_В_СОСТАВ между сущностями типа ОТДЕЛЕНИЕ_ЖЕЛЕЗНОЙ_ДОРОГИ и ЖЕЛЕЗНАЯ ДОРОГА;
связь M:N (многие-ко-многим). Это такой тип связи между типами сущностей А и В, при котором каждому экземпляру сущности А может соответствовать несколько экземпляров сущности В и наоборот. Примером является связь типа ИЗУЧАЕТ между сущностями СТУДЕНТ и ДИСЦИПЛИНА.
Сущности, входящие в отображение, могут участвовать в нем обязательно или необязательно, то есть класс принадлежности сущности в заданной связи может быть обязательным или необязательным. Например, не каждый студент может изучать некоторую дисциплину и наоборот — не каждая дисциплина может изучаться студентом.
Модель данных определяет, как сущности, атрибуты и связи отображаются на структуры данных БД.
Любая модель данных БД должна включать следующие составляющие:
структурную, определяющую структуру представления объектов в БД;
целостную, определяющую правила целостности, которые должны задавать разного рода ограничения предметной области, модель которой реализует система БД;
мапипуляционную, определяющую возможности работы с объектами, хранящимися в БД.
Модель данных состоит из:
языка для определения структуры базы данных — языка описания или определения данных ЯОД (data description language — DDL) и языка для манипулирования этими структурами — языка манипулирования данными ЯМД (data manipulation language — DML); язык манипулирования данными часто называют языком запросов.
Обычно системы БД классифицируются в зависимости от модели данных, которая лежит в их основе. В общепринятой классификации в настоящее время известны следующие модели данных:
сетевая,
иерархическая,
реляционная,
объектно-ориентированная,
объектно-реляционная.
Объектно-ориентированную и объектно-реляционную модели часто называют постреляционными моделями данных БД.
Соответственно говорят о сетевых, иерархических, реляционных, объектно-ориентированных, объектно-реляционных системах и постреляционных БД.