- •Информация и данные
- •Основные понятия систем с базами данных
- •Пользователи информационной системы с БД
- •Требования к информационным системам с базами данных
- •Основные компоненты ИС с базами данных
- •Архитектура систем с базами данных. Понятие модели данных
- •Сущности и их свойства
- •Связи (отношения) между сущностями
- •Виды связей между сущностями
- •Еще о сущностях, их свойствах и связях между ними
- •Модели данных. Ранние подходы к организации баз данных
- •Основные понятия реляционной модели данных
- •Структуры данных реляционной модели. Реляционные отношения
- •Свойства отношений
- •Отсутствие в отношении одинаковых кортежей
- •Кортежи отношения не упорядочены (сверху вниз)
- •Атрибуты отношения не упорядочены (слева направо)
- •Значения всех атрибутов являются атомарными
- •Виды отношений
- •Реляционная база данных
- •Реляционная модель. Операции над данными
- •Реляционная алгебра
- •Пересечение отношений
- •Вычитание отношений
- •Декартово произведение отношений
- •Проекция
- •Выборка (ограничение)
- •Естественное соединение отношений
- •Деление
- •Реляционное исчисление
- •Примеры правильно построенных формул
- •Язык SQL
- •Отличие SQL от процедурных языков программирования
- •Формы и составные части SQL
- •Условия и терминология
- •Простейшие SELECT-запросы
- •Ограничения целостности в реляционной модели
- •Ограничения целостности уровня атрибута
- •Домены отношений
- •Отсутствующая информация или NULL-значения.
- •Ограничения целостности уровня кортежа
- •Ограничения целостности уровня отношения
- •Потенциальные, первичные, альтернативные ключи отношения
- •Потенциальные ключи и NULL-значения
- •Ограничения целостности уровня базы данных
- •Внешние ключи и NULL-значения
- •Правила ссылочной целостности
- •При обновлении кортежа в родительском отношении
- •При удалении кортежа в родительском отношении
- •При вставке кортежа в дочернее отношение
- •При обновлении кортежа в дочернем отношении
- •Средства обеспечения целостности данных в СУБД
- •Поддержка декларативных ограничений целостности в языке SQL
- •Проектирование базы данных
- •Функциональная зависимость
- •Нормализация отношений базы данных
- •Нормальные формы
- •Декомпозиция без потерь и функциональные зависимости
- •Первая и вторая нормальные формы.
- •Третья нормальная форма.
- •Многозначные зависимости и четвертая нормальная форма
- •Зависимости соединения и пятая нормальная форма
- •Итоговая схема процедуры нормализации
- •Структуры хранения данных и методы доступа
- •Хранение отношений и доступ к хранимым данным
- •Индексирование
- •Управление транзакциями и целостность баз данных
- •Транзакции и параллелизм
- •Проблемы, возникающие при параллельном выполнении транзакций
- •Проблема потери результатов обновления
- •Проблемы несовместимого анализа
- •Несовместимый анализ – неповторяемое считывание
- •Несовместимый анализ – фиктивные элементы (фантомы)
- •Собственно несовместимый анализ
- •Конфликты между транзакциями
- •Методы сериализации транзакций
- •Решение проблем параллелизма при помощи блокировок
- •Проблема потери результатов обновления
- •Проблема несовместимого анализа. Неповторяемое считывание
- •Фиктивные элементы (фантомы)
- •Собственно несовместимый анализ
- •Уровни изоляции. Объекты синхронизационных блокировок
- •Предикатные синхронизационные блокировки
- •Метод временных меток
- •Уровни изоляции.
- •Синтаксис операторов SQL, определяющих уровни изоляции
33
преподаватель |
дисциплина |
Иванов |
Физика |
Петров |
Математика |
Сидоров |
Информатика |
Орлов |
Химия |
Смирнов |
История |
Попов |
Электроника |
Кузнецов |
Философия |
Еще о сущностях, их свойствах и связях между ними
Как видно из вышеизложенного, построение модели предметной области на данном (инфологическом) этапе состоит в выделении в ней сущностей, определении их свойств и связей между ними и построении соответствующей ER-диаграммы. Такая диаграмма позволяет в компактном виде представить информацию о предметной области, которая затем должна быть отражена в проектируемой базе данных.
Следует обратить внимание на следующую проблему, возникающую при решении задачи описания предметной области в понятиях модели сущностьсвязь, т.е. средствами ER-диаграмм. Проектировщику базы данных необходимо решить, какие элементы и характеристики предметной области должны быть представлены в модели в виде объектов-сущностей, какие в виде их свойств (атрибутов), а какие в виде связей (отношений) между ними. Дело в том, что на самом деле отличие этих категорий друг от друга является не абсолютным, а относительным. Один и тот же объект предметной области в одних ситуациях может быть представлен как самостоятельная сущность, а в других как свойство другого объекта. Например, элемент АДРЕС может выступать в качестве свойства (атрибута) сущности СТУДЕНТ, а может рассматриваться как самостоятельный объект, обладающий своим набором свойств (ГОРОД, УЛИЦА, ДОМ, …), и связанный с сущностью СТУДЕНТ связью типа ПРОЖИВАЕТ. Также относительно различие между категориями сущность и связь. Например, связь между сущностями ПРЕПОДАВАТЕЛЬ и ДИСЦИПЛИНА может при желании интерпретироваться и представляться как самостоятельная сущность (можно назвать ее ПРЕПОДАВАЕМАЯ_ДИСЦИПЛИНА), и которая, в свою очередь как сущность, может обладать каким-либо своими свойствами, например свойством УЧЕБНИКИ, представляющим литературу, используемую преподавателем по учебной дисциплине.
Принимая во внимание сказанное, уточним определение категорий
сущность, свойство и связь следующим образом.
Под сущностью или объектом понимается [1, 2] конкретный опознаваемый предмет, элемент, единица (реальные или абстрактные), имеющие четко определенное функциональное назначение, четко
34
определенные границы в данной предметной области. Добавим – функциональное назначение и границы, обусловленные контекстом задач, в рамках которых представляет интерес информация о данной предметной области.
Свойства выступают в качестве характеристик сущности, позволяя в частности выделять, идентифицировать данную сущность из множества других сущностей. При этом, в качестве свойств сущности могут выступать другие сущности предметной области. И в этом случае представление сущности в форме совокупности (агрегации) ее свойств есть выражение в модели определенного отношения между сущностью-агрегацией и сущностями, выступающими в качестве ее свойств.
Связь – это категория, которая также используется для выражения отношений между сущностями, но, в отличие от категории свойство, связь, как выражение отношения между двумя и более сущностями, фактически порождает новую сущность, которая сама может обладать набором собственных свойств, не являющихся свойствами каждой из связываемых ею сущностей.
Забегая вперед, заметим, что в рассматриваемой ниже реляционной модели данных, как самостоятельные объекты предметной области, так и связи между ними представляются с помощью однотипных структур данных, а именно – реляционных таблиц-отношений. В последнем случае, когда такая таблица представляет связь между объектами, эти объекты обычно выступают в качестве атрибутов, образующих, составной ключ таблицы.
Решение вопросов определения и взаимоотношения категорий сущности, свойства, связи входит в задачу проектирования семантической модели предметной области. Эта задача в большой степени является неформализованной. При этом очень важно понимать необходимость как можно более точного определения границ предметной области именно на этапе инфологического проектирования базы данных. Дело в том, что от решения этого вопроса в большой степени зависят структуры и способы интерпретации данных при последующем построении концептуальной датологической модели данных, эффективность функционирования прикладных подсистем и возможность обслуживания ими запросов пользователей. Неправильное определение границ предметной области на начальном этапе проектирования базы данных может, на более поздних этапах ее проектирования потребовать значительных усилий по изменениям структур данных и кодов интерпретирующих их программных средств или даже перепроектирования системы в целом.
Как уже было сказано выше, свойство – это категория, представляющая характеристики сущности. При этом, одни свойства сущности позволяют идентифицировать ее, то есть выделять из множества других сущностей, другие свойства позволяют объединять множество экземпляров сущностей, обладающих общими свойствами, в абстрактные сущности – типы или классы.
35
Следует, однако, обратить внимание на то, что абстрактная категория свойство объединяет элементы, информационные единицы предметной области, также попадающие под определение категории сущность (нечто – идентифицируемое в предметной области). Проще говоря, свойства также являются одним из типов сущностей предметной области, и в этом смысле, как уже говорилось, представление некоторой сущности в форме агрегации других сущностей, выступающих в качестве ее свойств, является выражением одного из видов отношений между сущностями.
Определение сущности А, в виде агрегации
А{<свойство 1>, <свойство 2>, …, <свойство n>}
является ни чем иным, как выражением определенного отношения или связи между сущностями-свойствами и сущностью-носителем этих свойств.
Рассмотрим особенности этого отношения. Если речь идет о свойствах, выступающих в роли идентификаторов (ключей) сущности, то между ними (сущностью и ее свойствами) имеет место обязательная связь типа один-к-
одному.
Так, например, отношение между сущностью СТУДЕНТ и идентифицирующими ее свойствами – сущность КОД_СТУДЕНТА и сущность ПАСПОРТ можно представить в виде
|
|
1,1 Имеет_код |
1,1 |
|
||
|
Студент |
|
|
|
|
Код_студента |
|
|
|
|
|
||
|
1,1 |
|
|
|
|
|
|
|
|
|
|
|
Имеет_паспорт 1,1
Паспорт
Рис. 4.3. Диаграмма сущности СТУДЕНТ с идентифицирующими ее сущностями-свойствами
Именно наличие обязательной связи типа один-к-одному и делает эти свойства идентификаторами данной сущности.
Другие свойства сущности, представляющие те или иные сущности, находятся с ней в необязательной связи типа один ко многим. То есть конкретная сущность может иметь единственное значение конкретного свойства (это значение может и отсутствовать), однако конкретное значение этого свойства может присутствовать у различных экземпляров сущностей. Причем эта связь носит обязательный характер со стороны сущности, определяемой этими свойствами. Со стороны же сущности-свойства связь может быть как обязательной, так и необязательной.
Отношение сущности СТУДЕНТ с сущностями, выступающими в качестве ее свойств, можно представить в виде следующей диаграммы (рис. 4.4).
Как показано на диаграмме, значение свойств код и паспорт должны быть уникальными для всех экземпляров сущности студент и обязательно должны
36
быть определены (в информации о студенте не может отсутствовать значение его кода и значение его паспорта). У каждого студента обязательно должны указываться фамилия, однако наличие одинаковых значений этого свойства допустимо у разных студентов (однофамильцы).
У каждого студента может быть только одно значение свойств курс и стипендия, причем допустимо отсутствие этих значений (курс или стипендия для конкретного студента не известны). Очевидно также, что одинаковые значения курса и стипендии могут иметь место у различных студентов.
Студент |
1,1 Имеет_код |
1,1 |
||
|
Код_студента |
|||
0,1 |
0,1 |
0,1 1,1 |
|
Имеет_паспорт 1,1
Паспорт
Имеет_фамилию 0,n Фамилия
Учитсянакурсе
0,n Курс
Получает_стипендию
0,n
Стипендия
Рис. 4.4. Диаграмма сущности СТУДЕНТ с ее свойствами
В отношении вышесказанного можно сформулировать и обратные утверждения.
•Если между сущностями имеет место обязательная связь типа один-к- одному, то эти сущности взаимно идентифицируют друг друга (одна из этих сущностей может использоваться в качестве свойства-идентификатора другой сущности).
•Если между двумя сущностями имеет место связь типа один-ко-многим, то первая из них (сторона связи один) выступает в качестве свойства другой сущности (сторона связи многие).
Видно, что в случае, когда одна сущность выступает в качестве свойства другой сущности, в их отношениях (связи) присутствует несимметричность, которая выражается или в несимметричности связи (один-ко-многим) или в том, что в качестве свойства-идентификатора выступает сущность простейшего типа (числовой или строковый литерал). Литералом обычно называют простейший объект-сущность, идентифицирующий сам себя, любые изменения которого превращают его в другой объект, например, ‘01561’, ‘физика’.
Более компактно диаграмму свойств сущности СТУДЕНТ (рис. 4.4) можно представить в виде
37
Студент
Фамилия
Стипендия
Курс
Код_студента Паспорт
Рис. 4.5. Представление сущности СТУДЕНТ с ее свойствами
Подчеркиванием выделены свойства, значения которых уникальны для каждого экземпляра данной сущности, т.е. являются ее идентификаторами.
По-другому обстоит дело, когда между выделенными в предметной области сущностями, простыми или сложными, (являющимися агрегацией других сущностей, выступающих в форме свойств) имеет место связь типа многие-ко-многим. Например, связь между сущностями СТУДЕНТ и ДИСЦИПЛИНА. В данном случае трудно одну из этих сущностей представлять в качестве свойства другой. Каждая из них обладает своим собственным набором свойств, при этом, студент изучает не одну, а множество дисциплин, и каждая дисциплина изучается множеством студентов. Можно рассматривать отношение СТУДЕНТЫ↔ДИСЦИПЛИНЫ как новый самостоятельный тип сущности описываемой предметной области (можно, например, назвать эту сущность ИЗУЧЕНИЕ_СТУДЕНТОМ_ДИСЦИПЛИНЫ). Причем сущность
СТУДЕНТ и сущность ДИСЦИПЛИНА выступают уже в качестве свойств этой новой сущности. Кроме этих свойств сущность
ИЗУЧЕНИЕ_СТУДЕНТОМ_ДИСЦИПЛИНЫ может иметь и другие свойства,
например, свойство ОЦЕНКА, описывающее значение оценки, полученной конкретным студентом по конкретной дисциплине (рисунок 4.6).
Студент |
Изучает_дисциплину |
0,n |
0,n |
|
|
Фамилия |
|
|
|
|
|
Стипендия |
|
|
Курс |
|
|
Код_студента |
|
|
Паспорт |
|
|
Дисциплина
Наименование Колич_часов
Код_дисциплины
38
Обучающиеся_студенты |
|
1,1 |
0,n |
Студент |
|
Фамилия
Стипендия
Курс
Код_студента Паспорт
Изучение_студентом_дисциплины |
|
|
|
|
Оценка |
Изучаемые_дисциплины |
|||
Студент |
||||
0,n |
1,1 |
|
||
Дисциплина |
Дисциплина |
|||
|
|
|||
|
|
|
Наименование |
|
|
|
|||
|
|
|
Колич_часов |
|
|
|
|
Код_дисциплины |
|
|
|
|
|
Рис. 4.6. Введение новой сущности вместо связи многие-ко-многим
Идентификацию экземпляров сущности ИЗУЧЕНИЕ_СТУДЕНТОМ_ДИСЦИПЛИНЫ (конкретная дисциплина, изучаемая конкретным студентом) обеспечивает уже свойствами СТУДЕНТ и ДИСЦИПЛИНА. Причем ее идентификация осуществляется не каждым из этих свойств, а их парой. В данном случае мы имеем дело не с простым идентификатором сущности, а с
составным.
Аналогичным образом в модели сущность-связь могут быть представлены
иболее сложные виды соотношений между сущностями. Например, тернарные
иn-арные связи. Таким образом, сложные виды связей между сущностями могут быть сведены в модели к более простым видам. Такая возможность позволяет использовать более простые и однородные структуры данных для представления информации о предметной области в базах данных на датологическом уровне.