Оглавление
Метод нисходящего проектирования. 2
Для разработки и проектирования систем БД используются различные средства моделирования. Конечной целью проектирования, очевидно, является БД. В теории проектирования ИС предметную область принято рассматривать в трех видах:
1) в том виде, в котором она реально существует
2) как ее воспринимает человек
3) как она может быть описана
Процесс проектирования разбивается на три этапа:
1) Концептуальное проектирование.
Собираются и анализируются данные. Редактируются требования к ним.
Для этого проводятся следующие мероприятия:
a) Обследование предметной области
b) Выявление всех фрагментов
c) Моделирование представлений
После этого произведенных действий получается концептуальная модель, которая чаще всего представляется в виде «Сущность-связь»
2) Логическое проектирование.
Преобразование требований к данным в структуры данных. В результате получаем СУБД-ориентированную структуру БД.
3) Физическое моделирование.
На данном этапе определяются особенности хранения данных, способов доступа и т.п.
Метод нисходящего моделирования является одним из самых поулярных методов, применяемых при проектировании БД. Данный метод подразумевает разложение общей функции обработки данных на простые функциональные элементы.
В результате получается иерархическая схема, которая показывает состав и подчиненность отдельных функций. Эта схема также носит название функциональной структуры алгоритма приложения (ФСА).
При построении ФСА приложения надо придерживаться следующей последовательности действий:
1. Определить цели автоматизации предметной области
2. Установить состав приложений, которые обеспечивают реализацию поставленных целей
3. Уточнить характер взаимосвязи приложений и их основные характеристики
4. Определить необходимые функции обработки данных
5. Выполнить декомпозицию функций до необходимой структурной сложности
Разложение обязано носить строго функциональный характер. Отдельный элемент ФСА должен описывать законченную содержательную функцию обработки информации, которая подразумевает определенный способ программной реализации.
Степень детализации функций может быть различной, но иерархическая схема должна давать представление о составе и структуре взаимосвязанных функций и общем алгоритме обработки данных.
Модель Сущность-Связь (ER-модель) (англ. entity-relationship model или entity-relationship diagram ) — это модель данных, позволяющая описывать концептуальные схемы. Она предоставляет графическую нотацию, основанную на блоках и соединяющих их линиях, с помощью которых можно описывать объекты и отношения между ними какой-либо другой модели данных. В этом смысле ER-модель является мета-моделью данных, то есть средством описания моделей данных.
ER-модель удобна при прототипировании (проектировании) информационных систем, баз данных, архитектур компьютерных приложений, и других систем (далее, моделей). С её помощью можно выделить ключевые сущности, присутствующие в модели, и обозначить отношения, которые могут устанавливаться между этими сущностями. Важно отметить что сами отношения также являются сущностями (выделяются в отдельные графические блоки), что позволяет устанавливать отношения на множестве самих отношений.
На этапе перехода к реализации данной ER-диаграммы в виде реальной информационной системы или программы, происходит отображение ER-модели в более детальную модель данных реляционной (объектной, сетевой, логической, или др.) базы данных, которая называется физической моделью данных по отношению к исходной ER-диаграмме.
Основные понятия ER-диаграмм:
1) Сущность – класс однотипных объектов информация о которых должна быть учтена в моделях
2) Экземпляр сущности – представитель сущности
3) Атрибут сущности - именованная характеристика, являющаяся некоторым свойством сущности
4) Ключ сущности – неизбыточный набор атрибутов, значения которых в совокупности являются уникальными для каждого экземпляра сущности
5) Связь – некоторая ассоциация между двумя сущностями
Разделяют три типа связей:
a) один-к-одному – экземпляр первой сущности связан только с одним экземпляром второй сущности
b) один-ко-многим - экземпляр первой сущности связан с несколькими экземплярами второй сущности. Сущность со стороны «один» называется родительской, а со стороны «много» - дочерней
c) много-ко-многим – каждый экземпляр первой сущности может быть связан с несколькими экземплярами другой сущности. Является временным видом связи.
Каждая связь обладает одной из двух модальностей:
a) Может
b) Должен
В ER-диаграммах, как и в реляционных моделях БД существует понятие нормальных форм.
1) Первая НФ – устраняются повторяющиеся атрибуты и группы атрибутов, т.е. выявление неявных сущностей.
2) Вторая НФ – устраняются атрибуты зависящие от части уникального идентификатора. Такая часть уникального идентификатора определяет отдельную сущность
3) Третья НФ – устраняются атрибуты, которые зависят от атрибутов не входящих в уникальный идентификатор
Рассмотрим построение ER-диаграммы на примере выполняемой работы:
Представим предметную область как взаимодействие нескольких сущностей: «Спортсмен», «Тренер», «Вид спорта», «Соревнования», «Организатор» и «Клуб». Сущность «Клуб» и сущность «Спортсмен» взаимодействуют посредством связи «Состоит в». Связь имеет мощность «один-ко-многим» - т.е. один клуб может содержать у нескольких спортсменов. Для связи сущностей используется атрибут «Состоит в клубе». Далее сущность «Тренер» и сущность «Клуб» взаимодействует посредством связи «Работает в». В данном случае мощность связи «один-ко-многим». Связь сущностей осуществляется через атрибут «Работает в». Сущность «Тренер» и сущность «Вид спорта» взаимодействуют посредством связи «Владеет». Связь имеет мощность «один-к-одному», т.к. одна тренер может владеть (в данном контексте – тренировать) только одним видом спорта. Связь через атрибут «Тренирует по». Сущность «Соревнование» «устраивается по» «Вид спорта». Связь этих сущностей имеет мощность «один-ко-многим», т.е. по одному и тому же виду спорта может быть устроено несколько соревнований. Сущность «Организатор» и сущность «Соревнование» взаимодействуют посредством связи «Спонсировать», где связь имеет мощность «многие-ко-многим», т.к. одно и то же соревнование могут спонсировать разные источники и в то же время источники могут спонсировать много соревнований. Сущность «Организатор» взаимодействует с сущностью «Спортсмен» посредством связи «Награждает» где мощность связи «многие-ко-многим», аналогично предыдущему. Сущность «Клуб» и сущность «Спортсмен» взаимодействуют посредством связи «Выставляет на соревнование». Связь имеет мощность «один-ко-многому», т.к. один клуб может выставить на соревнование нескольких спортсменов. Сущность «Тренер» и сущность «Спортсмен» взаимодействуют посредством связи «Тренирует». Связь имеет мощность «многие-ко многим», т.к. Спортсмен может иметь несколько тренеров, и тренер может иметь нескольких спортсменов. Сущность «Спортсмен» и сущность «Ссоревнование» взаимодействуют посредством связи «Учавствует от клуба». Связь имеет мощность «один-ко-многому».
Модель предметной области должна быть представлена в терминах модели конкретной СУБД – в моем случае MS Access. Данная стадия носит название логического моделирования БД. Результатом выполнения этой стадии является концептуальная схема БД. Не все виды связей могут быть реализованы в логичекой модели. На данном этапе требуется преобразовать ER-диаграмму в реляционную схему.
Первый шаг преобразования – превращение каждой сущности в таблицу (отношение). Каждое свойство становится столбцом таблицы.
Второй шаг – преобразование связей во внешние ключи.
После выполнения этих двух шагов я получил следующую схему:
После получения концептуальной схемы можно перейти к созданию самой БД.
В данном случае БД представлена семью таблицами.
1) Клуб – 1 строка – один клуб
2) Тренер – 1 строка – один тренер
3) Вид спорта – 1 строка – один вид спорта (название)
4) Соревнование – 1 строка – одно соревнование
5) Организатор – 1 строка – один организатор
6) Стадионы – 1 строка – один стадион
7) Спортсмен – 1 строка – 1 спортсмен
Следующий этап – определение типов данных, хранящихся в столбцах таблиц. Вместе с этим требуется задать ограничения целостности. Должны быть выделены столбцы, которые должны быть обязательно заполнены при создании новой строки. Также необходимо задать значения столбцов по умолчанию.
Таблица Спортсмен
Столбец | Тип данных | Ограничение |
ФИО | String[100] | NOT_NULL |
Группа крови | String[10] | NOT_NULL |
Вес (кг) | Byte | NOT_NULL |
Дата рождения | String[100] | NOT_NULL |
Спортивное звание | String[100] | NOT_NULL |
Вид спорта | String[100] | NOT_NULL |
Состоит в клубе | String[100] | NOT_NULL |
Тренируется у | String[100] | NOT_NULL |
Таблица Соревнование
Столбец | Тип данных | Ограничения |
Вид спорта | String[100] | NOT_NULL |
Дата проведения | Date | NOT_NULL |
Организатор | String[100] | NOT_NULL |
Победитель(и) | String[100] | NOT_NULL |
Место проведения | String[100] | NOT_NULL |
Таблица Тренер