Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по БД на транспорте ТИМ.doc
Скачиваний:
19
Добавлен:
25.12.2018
Размер:
2.63 Mб
Скачать
  1. Модели данных концептуального уровня

Семантическая модель данных типа «сущность-связь» - ER-модель - впервые предложена в 1976 г. Ченом. Существует несколько вариантов графического представления модели «сущность-связь». На данное время единого графического формата представления ER-диаграмм не установлено.

Сущность - реальный или абстрактный объект ПрО, характеризующийся свойствами - атрибутами.

Атрибут сущности (класса объектов) – это именованное имманентное свойство объектов класса, описывающее множество значений, которые могут принимать экземпляры класса.

Свойство, выражаемое атрибутом, является свойством моделируемой сущности, общим для всех объектов данного класса. Каждая сущность представляет собой множество, содержащее экземпляры сущности. Сущность может иметь любое число атрибутов (в частности, не иметь ни одного атрибута – пустое множество). Атрибут является абстракцией состояния объекта. Любой атрибут любого объекта класса должен иметь некоторое значение.

Например, сущность - «Транспортное_средство» (ТС) содержит в себе легковой автомобиль и грузовик – экземпляры сущности. Марка, цвет и государственный_номер ТС – атрибуты этой сущности (рис. 1).

Рис. 1. Класс «Транспортное_средство» с именами атрибутов

С объектами класса возможны некоторые операции – выполнение именованной услуги, которую можно запросить у любого объекта этого класса. Операция – это абстракция того, что можно делать с объектом. Класс может содержать любое число операций (в частности, не содержать ни одной операции). Набор операций класса является общим для всех объектов класса.

Описание операции может содержать ее сигнатуру, т.е. имена и типы всех параметров, а если операция является функцией, то и тип ее значения. Класс «Транспортное_средство» с определенными операциями показан на рисунке 2:

Рис. 2. Класс «Транспортное_средство» с операциями над объектами класса

Для класса «Транспортное_средство» мы определили три операции. Операции «Выдать_Имя_Владельца» и «Выдать_Код_Города» используют значение атрибута «Государственный_Номер». Операция «Сохранить_Текущий_Пробег» позволяет зафиксировать в состоянии объекта количество пройденных километров на текущую дату для данного ТС. Эти данные могут быть использованы, например, для определения суммарного пробега указанного ТС за указанное время. Заметим, что состояние объекта меняется при выполнении только третьей операции. Результаты первой и второй операций формируется на основе текущего состояния объекта.

Между сущностями устанавливаются связи. Связь - соответствие или отображение между элементами (объектами) двух или более экземпляров сущности (класса).

Различают несколько разновидностей связей:

  • 1:1 - один к одному: один экземпляр сущности связан с одним и только одним экземпляром другой сущности.

  • 1:M или М:1 - один ко многим: один экземпляр первой сущности соответствует нескольким экземплярам второй сущности.

  • M:N - многие ко многим: каждому экземпляру одной сущности соответствует несколько экземпляров другой сущности и наоборот.

При проектировании в диаграмме классов могут присутствовать связи трех разных категорий: зависимость, обобщение и ассоциирование. Для проектирования реляционных БД наиболее важны вторая и третья категории связей [Замулин А.В. Системы программирования баз данных].

Зависимостью называют связь по использованию, когда изменение в спецификации одного класса может повлиять на поведение другого, использующего первый класс. Чаще всего зависимости применяются в диаграммах классов, чтобы отразить в сигнатуре операции одного класса тот факт, что параметром этой операции могут быть объекты другого класса. Понятно, что если интерфейс второго класса изменяется, то это влияет на поведение объектов первого класса. Простой пример диаграммы классов со связью-зависимостью показан на рисунке 3. Зависимость показана прерывистой линией со стрелкой, направленной к классу, от которого имеется зависимость. Легко видеть, что связи-зависимости существенны для объектно-ориентированных систем (в том числе и для объектно-ориентированных баз данных).

Рис. 3. Зависимость между классами «Маршрут» и «Расписание_Движения_Транспортного_Средства»

Связь обобщение устанавливается между сущностью-суперклассом (родителем) и более специализированной разновидностью этой сущности, - подклассом (потомком). Обобщение регламентирует связь типа «is_a», имея в виду, что класс-потомок является частным случаем класса-предка. Класс-потомок наследует все атрибуты и операции класса-предка, но в нем могут быть определены дополнительные атрибуты и операции. Объекты подкласса могут использоваться везде, где могут использоваться объекты суперкласса.

Ассоциацией называется структурная связь, показывающая, что объекты одного класса некоторым образом связаны с объектами другого или этого же класса. Ассоциация из двух классов определяется бинарной связью. Допускается создание ассоциаций, связывающих сразу n классов (n-арные ассоциации).

С понятием ассоциации связаны четыре важных дополнительных понятия: имя, роль, кратность и агрегация. Ассоциации может быть присвоено имя, характеризующее природу связи. Пример именованной ассоциации показан на рисунке 4. Стрелка определяет направление связи: именованная ассоциация читается как: «Транспортное средство движется по данному маршруту».

Рис. 4. Именованная ассоциация

Ассоциация двух классов характеризует связь между равноправными сущностями: оба класса находятся на одном концептуальном уровне. Ассоциация двух классов, имеющая специальный вид «целое-часть» («part_of» - является частью), подразумевает, что класс «целое» имеет более высокий концептуальный уровень, чем класс «часть». Ассоциация такого рода называется агрегацией. Пример агрегатной ассоциации показан на рисунке 5: класс «Дорожно-Транспортное_Происшествие» (ДТП) является частью класса «Улица».

Рис. 5. Агрегатная ассоциация

Объектами класса «Улица» являются улицы населенного пункта, по которым движутся транспортные средства. На любой улице может произойти «Дорожно-Транспортное_Про­исшествие». Поэтому в некотором смысле класс «ДТП» является «частью» класса «Улица». Роль класса «ДТП» является необязательной, поскольку могут существовать улицы без ДТП (например, улица, ограниченная дорожными знаками «Пешеходная зона»). На улицах, по которым не движутся ТС, как правило, не совершаются ДТП, объекты классов «ДТП» и «Улица» существуют независимо.

Агрегатные ассоциации, когда связь «части» и «целого» настолько сильна, что уничтожение «целого» приводит к уничтожению всех его «частей» называются композициями. При наличии композиции объект-часть может быть частью только одного объекта-целого (композита). Пример композитной агрегатной ассоциации показан на рисунке 6.

Рис. 6. Композитная агрегатная ассоциация

Любая улица является частью одного города, и ликвидация города приводит к ликвидации всех существующих в нем улиц (хотя во время существования города отдельные улицы могут ликвидироваться и создаваться).

В контексте проектирования БД агрегатные и в особенности композитные ассоциации влияют только на способ поддержки ссылочной целостности. В частности, композитная связь является явным указанием того, что ссылочная целостность между «целым» и «частями» должна поддерживаться путем каскадного удаления частей при удалении целого. При наличии простой ассоциации между двумя классами предполагается возможность навигации между объектами, входящими в один экземпляр ассоциации. Если известен конкретный объект-»часть», то должна обеспечиваться возможность узнать соответствующий объект-»целое». Если известен конкретный объект-»целое», то должна обеспечиваться возможность узнать все соответствующие объекты-»часть». Другими словами, если не оговорено противное, то навигация по ассоциации может проводиться в обоих направлениях. Однако бывают случаи, в которых желательно ограничить направление навигации для некоторых ассоциаций.