Построение ER-диаграммы и логическое моделирование в Oracle

Строить логические диаграммы можно с применением средств наподобие Oracle Designer (Конструктор Oracle) или, если создается хранилище данных, Oracle Warehouse Builder (Конструктор хранилищ данных Oracle). При желании можно создавать и элементарные логические диаграммы с помощью обычного карандаша, и бумаги. В этой статье демонстрируется пример построения простой ER-диаграммы, описывающей университет, с использованием сущностей Студент, Предмет и Профессор. Для изображения сущностей в дальнейшем предлагается использовать прямоугольник, а для отображения отношений — ромб (такие фигуры применяются чаще всего), но при желании вместо них можно использовать и другие обозначения.

Предположи, что между сущностями Студент и Предмет существуют следующие отношения:

  • Студент может записываться на один и более Предметов;
  • Предмет может изучать один и более Студентов.

Начинается процесс моделирования данных очень просто, но затем быстро усложняется по мере получения ответов на вопросы и выявления различных правил и ограничений, которые предъявляются к данным.

Ниже перечислены конкретные шаги, которым нужно следовать, чтобы создать ER-диаграмму.

    1. Присвоить сущностям перечисленные ниже атрибуты.
    2. Наконец, необходимо рассмотреть сущности Предмет и Профессор. Один Профессор преподает каждый Предмет, и каждый Профессор может преподавать много Предметов. Однако, в случае отсутствия Профессора (например, из-за болезни), должен ли фиксироваться тот факт, что тогда его предмет вел другой Профессор? А что если сразу два Профессора могут преподавать один и тот же предмет? Должна ли фиксироваться такая информация? При создании модели нужно обязательно выяснять все подобные моменты, чтобы модель была реалистичной и впоследствии могла сослужить хорошую службу.
    3. Проанализировать сущности Студент и Предмет. Существует ли между ними отношение? Да, потому что каждый Студент может посещать один или более Предметов. А каждый Предмет может посещать один или более Студентов. Это указывает на то, что между этими двумя сущностями присутствует отношение типа “многие ко многим”.
    4. Проанализировать для каждой сущности по очереди ее отношения с другими сущностями. Начать можно с любой сущности. Например, сначала можно взять сущности Студент и Профессор. Существует ли между ними отношение? Профессор преподает предмет, а Студент посещает один или более из них, так что на первый взгляд отношение между этими сущностями таки существует. Но в данном случае оно является косвенным, поскольку не обходится без участия сущности Предмет.
    5. Нарисовать сущности, используя для представления каждой из них отдельный прямоугольник.
    6. Определить сущности, каковые в данном случае должны выглядеть так: Студент, Предмет и Профессор.
      • Студент. Идентификационный номер студента, Имя, Фамилия, Адрес, Год.
      • Профессор. Идентификационный номер сотрудника, Номер карточки социального страхования, Имя, Фамилия, Адрес места работы, Номер телефона.
      • Предмет. Идентификационный номер предмета, Номер аудитории, Учебник, Кредитные часы, Стоимость.

      Взгляните на атрибут Учебник в сущности Предмет. Его можно использовать для иллюстрации очень важного момента. В том виде, в котором сущность Предмет подается в этом примере, у нее может быть только один атрибут Учебник. Подобное вполне возможно в реальном мире и зависит от существующих правил деятельности, но что делать при необходимости зафиксировать тот факт, что для изучения каждого Предмета рекомендуется не один, а несколько Учебников? Текущая модель не допускает подобного варианта, если только не сохранять несколько элементов данных в одном поле. Для решения этой проблемы можно было бы добавить новую сущность под названием Учебники и затем связать ее отношением с сущностью Предмет. После этого с каждым Предметом стало бы возможно ассоциировать много различных Учебников.

    7. Количество элементов в отношениях, как упоминалось выше, диктует то, являются ли они отношением типа “один к одному”, “один ко многим”, “многие ко многим” или какими-то еще. На этом этапе необходимо определить это количество. Присвоить обозначения отношений “один ко многим” или “многие к одному”. Разбить любые отношения типа “многие ко многим” на более простые отношения (вроде двух отношений типа “один ко многим”). Например:
      • Студент может посещать один или более Предметов.
      • Каждый Предмет может посещать много Студентов.
      Это отношения типа “многие ко многим”, которые нужно разбивать путем применения таблицы связей (link table). В данном случае эта таблица должна сама по себе представлять сущность и содержать отдельную регистрационную запись для каждого Предмета, посещаемого одним Студентом.
    8. Преобразовать отношения в фактическую ER-диаграмму, используя прямоугольники для сущностей, ромбы для отношений и овалы для атрибутов сущностей.

ER-диаграмма должна охватывать все функциональные требования базы данных для того, чтобы стать действительной моделью. В приведенном выше примере отношения между сущностями выглядели довольно просто, но в реальности могут встречаться и гораздо более сложные отношения, например, рекурсивные, которые подразумевают наличие у данных внутри сущности отношений с самим собой. Например, в таблице “Персонал” один член персонала может подчиняться какому-нибудь другому вышестоящему члену. В таком случае будет считаться, что у таблицы имеется рекурсивное отношение с самой собой.

Здесь были затронуты лишь основы ER-моделирования, которое на самом деле является целым настоящим искусством. Хорошо овладеть им, как и любыми другими вещами, можно только постоянно практикуясь.

Напоследок Совет. Интернет является замечательным источником как простых, так и сложных материалов по данной теме, которыми можно пользоваться для совершенствования своих навыков моделирования. Здесь можно найти все, начиная от простых баз данных для обработки заказов и заканчивая полнофункциональными системами для управления данными персонала. Одним из лучших ресурсов являются Web-сайты крупных университетов. На них всегда можно найти описания компьютерных курсов, среди которых особое внимание следует уделять описанию курсов по проектированию баз данных, потому что именно многие из них включают практические занятия по созданию ER-диаграмм.

Вас заинтересует / Intresting for you:

Oracle IDE: JDeveloper, SQL De...
Oracle IDE: JDeveloper, SQL De... 4522 просмотров Ольга Потемкина Tue, 21 Nov 2017, 13:18:46
Oracle и Java: использование P...
Oracle и Java: использование P... 5750 просмотров sepia Tue, 08 May 2018, 08:52:34
Деятельность Oracle в XML-инду...
Деятельность Oracle в XML-инду... 7952 просмотров Дэн Tue, 21 Nov 2017, 13:33:37
Язык PL/SQL Oracle для програм...
Язык PL/SQL Oracle для програм... 2630 просмотров Илья Дергунов Tue, 21 Nov 2017, 13:28:01
Войдите чтобы комментировать