Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Базы данных. Учебное пособие для обучающихся по направлению подготовки 09.03.03 «Прикладная информатика»
.pdf
ПОСТРОЕНИЕ БАЗЫ ДАННЫХ
1. Построение концептуальной модели
Для построения базы данных, исходя из вышесказанного, необходимо на основе изучения предметной области построить концептуальную (инфологическую) модель. Для каждой базы данных имеется
только одна концептуальная схема.
Модельные представления, основанные на анализе семантики данных, иногда называют семантическими моделями. Одним из распространенных средств спецификации модельных представлений этого
типа является т.н. «модель сущность – связь» (Entity – Relationship
Model).
Базис понятий семантического моделирования в общем случае
включает:
- определение объекта-экземпляра;
- определение объекта-типа;
- определение связи между объектами;
- определение свойства объекта;
- определение идентифицирующего свойства объекта.
Модель «сущность – связь» (ER-модель) была предложена П.
Ченом в 1976 году [10] как средство «ручного» проектирования баз
данных. Основными абстрактными понятиями этой модели являются
понятия сущности, экземпляра сущности, атрибута и связи.
Как единое логическое описание всех элементов данных и отношений между ними концептуальная схема должна содержать:
- сущности и их атрибуты;
- связи между сущностями;
- ограничения, накладываемые на данные;
- семантическую информацию о данных;
- обеспечение безопасности и поддержки целостности данных.
Модель «сущность – связь» представляет собой набор концепций,
используемых для описания логической структуры базы данных.
Модель «сущность-связь» позволяет представлять объекты предметной области и отношения между ними, т.е. позволяет описывать
структуру предметной области. Она определяется в терминах: сущность, атрибут, связь.
Сущность ‒ представление (абстракция) реально существующего объекта, процесса или явления. Наименование сущности должно
21

быть уникально во всей модели [10].
Сущности подразделяются на сильные и слабые. Сущность является слабой, если ее существование зависит от другой сущности,
сильной по отношению к ней. Сильной – если ее существование не
зависит от сущности какого-то другого типа.
Тип сущности ‒ определяет набор однородных объектов [10].
Экземпляр сущности ‒ конкретный объект из этого набора. На-
пример: сущность «Врачи» определяет всю информацию о врачах
вообще. Конкретный врач А.А. Алексеев является экземпляром сущности «Врачи», а совокупность всех врачей составляет тип сущности
[10].
Атрибут ‒ свойство сущности (объекта). Его имя должно быть
уникально в рамках одной сущности [10].
Экземпляр атрибута ‒ конкретное значение свойства. Например:
сущность «Врачи» определяется атрибутами: «ФИО врача», «Должность», «НомерКабинета» и т.п. То есть для каждого конкретного
врача (экземпляра сущности) мы должны определить экземпляры
атрибутов (их конкретные значения). Продолжим с нашим примером:
экземпляр сущности «Врачи» А.А. Алексеев имеет экземпляр атрибута «ФИО» ‒ «Алексеев А.А.» и экземпляр атрибута «Должность»
‒ «офтальмолог»
Идентифицирующий атрибут (идентифицирующая совокупность атрибутов, ИСА) ‒ атрибут (несколько атрибутов), значение
которого определяет уникальность экземпляра сущности [10].
Связь позволяет моделировать отношения между объектами
предметной области. Наименование связи должно быть уникально
во всей модели.
Определив сущности и их атрибуты, необходимо перейти к выявлению связей, которые могут существовать между некоторыми сущностями. Связь ‒ это то, что объединяет две или более сущностей.
Связи между сущностями также являются частью данных, и они также должны храниться в базе данных.
Связь – соответствие или отображение между элементами двух
или более множеств (между экземплярами сущностей). Различают
следующие виды или типы связей [19]:
1:1 – связь один к одному между сущностями. Связь «один к одному» между сущностями устанавливается, если каждому экземпляру
22

одной сущности соответствует только один экземпляр другой сущности.
1:M (или М:1) – связь один ко многим (или многие к одному).
Связь «один ко многим» между сущностями устанавливается, если
каждому экземпляру одной сущности соответствует несколько экземпляров другой сущности.
M: N – связь многие ко многим. Связь «многие ко многим» между сущностями устанавливается, если каждому экземпляру одной
сущности соответствует несколько экземпляров другой сущности и
наоборот.
Модель «сущность – связь» основана на диаграммной технике.
Для представления различных аспектов структуры данных (объектов, свойств объектов, связей между объектами, свойств связей и
других) используются графические средства. Для этого существуют
разные модели нотаций: нотация Чена, нотация Мартина (вороньи
лапки), нотация диаграммы классов UML, нотация IDEF1X.
В модели по Чену множества сущностей изображаются в виде
прямоугольников. Множества отношений изображаются в виде ромбов. Если сущность участвует в отношении, они связаны линией.
Если отношение не является обязательным, то линия пунктирная.
Атрибуты изображаются в виде овалов и связываются линией с одним отношением или с одной сущностью (табл. 1).
Таблица 1 – Условные обозначения по нотации Чена
23

Пример концептуальной модели по нотации Чена представлен на
рисунке 4.
Рис. 4. Пример концептуальной модели по нотации Чена
В качестве примера построим концептуальную (инфологическую)
модель по нотации Чена, отражающую деятельность ветеринарной
клиники (рис. 5). Для начала нам необходимо понять работу ветеринарной клиники.
Пусть имеется ветеринарная клиника, которая оказывает ветеринарные услуги населению города. В этой клинике работают врачи,
занимающие разные должности и оклады. Также заказчик хочет, чтобы были собраны данные и по клиентам-пациентам. Это означает,
что должны быть зафиксированы все обращавшиеся в клинику пациенты. При обращении пациента в клинику информация о нем записывается в журнал. При этом необходимо учитывать, что пациент
может быть как новым, так и постоянным клиентом.
Рис.5. Пример ER-диаграммы
24

Представленная нами концептуальная модель отражает такие
сущности как «Пациент», «Журнал», «Услуги», «Врачи». Каждой
сущности определены атрибуты.
Сущность «Пациенты» определяется следующими атрибутами:
Пациент, ФИО владельца, ВидЖивотного, Порода, Возраст, Пол, Телефон, Домашний адрес. Это значит, что при занесении в базу данных нам важны эти характеристики клиента.
У сущности «Врачи» определены такие атрибуты, как: ФИО врача, Фото Врача, НомерКабинета, Телефон. Остальные данные по врачам пока нам не нужны. Но если база данных в будущем будет расширяться, то можно будет внести и другие данные по врачам.
Сущность «Услуги» имеет атрибуты Наименование, Характеристика, Стоимость.
Сущность «Журнал» имеет один атрибут Дата приема. В дальнейшем, при построении логической схемы, данная сущность дополнится ключевыми полями и внешними ключами, поскольку эта сущность
в дальнейшем фиксирует всю деятельность клиники.
Далее предлагаем проверить свою модель согласно существующим правилам, которым должна удовлетворять модель «Сущность-связь»:
1. Модель должна давать полное представление о предметной об-
ласти.
2. Должны быть перечислены все необходимые для реализации
задачи сущности и их атрибуты соответственно.
3. Имена сущностей должны быть уникальны.
4. Имена атрибутов в пределах одной сущности должны быть уни-
кальны.
5. Однозначная трактовка модели.
6. В каждой сущности должна быть выделена идентифицирующая
совокупность атрибутов.
7. Модель должна быть гибкой, т.е. при возникновении новых задач
расширяться без существенных изменений существующей модели.
2. Преобразование концептуальной (инфологической) модели
в логическую модель
Во время проектирования базы данных происходит преобразова-
ние ER- модели в конкретную схему базы. Рассмотрим это преобра-
25

зование на примере реляционных баз данных.
Этап создания логической модели называется логическим про-
ектированием. При переходе от концептуальной (инфологической)
модели к логической (даталогической) следует иметь в виду, что
концептуальная модель должна включать в себя всю информацию
о предметной области, необходимую для проектирования базы данных. Преобразование концептуальной модели в логическую осуществляется по формальным правилам. Логическая модель базы данных строится в терминах информационных единиц, допустимых в
той конкретной СУБД, в среде которой мы проектируем базу данных.
Рассмотрим основные понятия, с помощью которых определяется
реляционная модель (табл. 2).
Таблица 2 – Основные понятия реляционной базы данных
Понятие Описание
Домен Совокупность допустимых значений
Кортеж Таблица
Кардинальность Количество строк в таблице
Атрибут Поле, столбец таблицы
Степень отношения Количество полей (столбцов)
Первичный ключ Уникальный идентификатор
На рисунке 6 представлены основные понятия реляционной базы
данных.
Рис. 6. Основные понятия реляционных баз данных
26

Домен – это совокупность значений, из которой берутся значения
соответствующих атрибутов определенного отношения. С точки зрения программирования, домен ‒ это тип данных, определяемый системой (стандартный) или пользователем.
Первичный ключ – это столбец или некоторое подмножество
столбцов, которые уникально, т.е. единственным образом, определяют
строки. Первичный ключ, который включает более одного столбца,
называется множественным, или комбинированным, или составным.
Правило целостности объектов утверждает, что первичный ключ не
может быть полностью или частично пустым.
Остальные ключи, которые можно также использовать в качестве
первичных, называются потенциальными или альтернативными
ключами.
Внешний ключ – это столбец или подмножество одной таблицы,
который может служить в качестве первичного ключа для другой
таблицы [10]. Внешний ключ таблицы является ссылкой на первичный
ключ другой таблицы. Правило ссылочной целостности гласит,
что внешний ключ может быть либо пустым, либо соответствовать
значению первичного ключа, на который он ссылается. Внешние
ключи являются неотъемлемой частью реляционной модели,
поскольку реализуют связи между таблицами базы данных.
Внешний ключ, как и первичный ключ, тоже может представлять
собой комбинацию столбцов. На практике внешний ключ всегда будет
составным (состоящим из нескольких столбцов), если он ссылается на
составной первичный ключ в другой таблице. Количество столбцов
и их типы данных в первичном и внешнем ключе совпадают.
Если таблица связана с несколькими другими таблицами, она
может иметь несколько внешних ключей. Модель предъявляет к
таблицам следующие требования.
1. данные в ячейках должны быть структурно неделимыми;
2. данные в одном столбце должны быть одного типа;
3. каждый столбец должен быть уникальным (недопустимо
дублирование столбцов);
4. столбцы размещаются в произвольном порядке;
5. строки размещаются в произвольном порядке;
6. столбцы имеют уникальные наименования.
Построим логическую модель нашей БД на основе ее
27

концептуальной модели. Каждой сущности поставлена в соответствие таблица: Сущность «Врачи» – Таблица Врачи, Сущность
«Журнал» – Таблица Журнал, Сущность «Услуги» – Таблица Услуги,
Сущность «Пациенты» – Таблица Пациенты, Сущность «Штатное
расписание» – таблица Штатное расписание. Каждому атрибуту
сущности соответствует поле таблицы.
Определим первичные ключи (рис. 7).
Рис. 7. Логическая модель базы данных
Определим связи между объектами.
Связи между таблицами – это та основа, с помощью которой можно обеспечить целостность данных, чтобы в базе данных не было
потерянных записей [19]. Если в состав уникального идентификато-
ра входят связи, то к числу столбцов первичного ключа добавляется
копия уникального идентификатора сущности, находящейся на дальнем конце связи (этот процесс может продолжаться рекурсивно). Для
именования этих столбцов используются имена концов связей и/или
имена сущностей.
Пациент у нас может быть один, т.е. кот по кличке Барсик может
быть и не один, но для своего хозяина он один, и по совокупности
свойств этот кот всего лишь один. Каждый пациент может приходить
на прием не единожды. Значит, у нас получается пациент – один, а
приемов может быть много, это определяет связь между объектами
Пациент и Журнал как один-ко-многим. Первичный ключ для таблицы Пациент – НомерКарточки для таблицы Журнал – КодПриема.
Так как связь один-ко-многим, то для таблицы Журнал определяем
внешний ключ НомерКарточки.
28

Определим связь между объектами Журнал и Услуги. В каждом
журнале мы определяем услугу, оказываемую пациенту. Услуга по
отношению к этому действию одна, но может быть оказана многим
пациентам. Отсюда следует, что между таблицами Услуги и Журнал
– связь «один-ко-многим». Первичный ключ для таблицы Услуги–
КодУслуги, для таблицы Журнал – КодПриема. Так как связь «одинко-многим», то для таблицы Журнал определяем внешний ключ
КодУслуги.
Рассмотрим отношения Врачи и Штатное расписание. Долж-
ность одна, например, ветеринарный врач-терапевт, а врачей на этой
должности может быть несколько. Отсюда, связь между таблицами
Врачи и Штатное расписание «один-ко-многим». Первичный ключ
для таблицы Врачи – Код Врача, для таблицы Штатное расписание
– КодДолжности. Так как связь «один-ко-многим», то для таблицы
Врачи определяем внешний ключ КодДолжности.
Рассмотрим теперь связи между таблицами Врачи и Услуги. Врачей у нас может быть много, каждый врач может быть дежурным.
Это означает, что врачей много и услуг, оказываемых ими тоже много. Отсюда, предполагаемая связь - «многие-ко-многим».
Для того чтобы создать связи «многие-ко-многим», необходимо
создать таблицу для соединения двух других. Эта новая таблица называется промежуточной (или иногда связующей). В этих целях
создана таблица ВрачиУслуги, которая является промежуточной таблицей для организации связи «многие-ко-многим». Ключевые слова
– КодВрача для таблицы Врачи и КодУслуги для таблицы Услуги.
3. Избыточность данных. Нормализация
Задача проектирования БД – это сокращение избыточности хранимых данных. Избыточность данных в БД относится к нежелательным
явлениям, поскольку ведет к увеличению объема памяти, необходимого для физического хранения отношений. Избыточность вызывается, прежде всего, дублированием данных.
При работе с отношениями, содержащими избыточные данные,
могут возникнуть проблемы, которые называются аномалиями обновления.
Различают три вида аномалий в базе данных[10]:
- аномалии включения;
29

- аномалии удаления;
- аномалии модификации.
Аномалии включения. Чтобы исключить различного рода аномалии из отношения, его подвергают процессу декомпозиции (нормализации). При решении задачи декомпозиции возникают две проблемы. Первая проблема ‒ это проблема обратимости, заключающаяся
в возможности восстановления исходной схемы, а именно ‒ восстановления любого кортежа исходного отношения, используя кортежи
полученных в результате декомпозиции отношений. Декомпозиция,
удовлетворяющая этому требованию, называется декомпозицией,
гарантирующей отсутствие потерь. Вторая проблема связана с сохранением зависимостей. Проектирование базы данных включает в
себя и определение ограничений, накладываемых на ее отношения.
В процессе декомпозиции получаются новые отношения и ограничения, которые приписываются им, должны быть такими, чтобы были
сохранены исходные ограничения. Все сказанное означает, что проводимая декомпозиция должна сохранять эквивалентность схем при
замене одной схемы на другую, т.е. нужна декомпозиция, гарантирующая отсутствие потерь и сохранение зависимостей.
Экономия объема используемой памяти, уменьшение затрат на
многократные операции обновления избыточных копий и устранение
возможности возникновения противоречий из-за хранения в разных
местах сведений об одном и том же объекте. Такой проект БД можно
создать, используя методологию нормализации отношений.
Нормализация – это процесс удаления избыточных данных.
Избыточность устраняется, как правило, за счёт декомпозиции отношений (таблиц), т.е. разбиения одной таблицы на несколько [10].
Другими словами, нормализация – это процесс разбиения или декомпозиции исходного отношения на несколько отношений с целью
устранения нежелательных функциональных зависимостей, приводящих к возникновению избыточности хранения информации и аномалиям добавления, удаления, обновления.
Аппарат нормализации отношений разработан Коддом. В нем
определены различные нормальные формы отношений. Кодд выделил три нормальные формы: 1НФ, 2НФ, 3НФ, а сегодня определены
4НФ, 5НФ.
Таблица находится в первой нормальной форме (1НФ) тогда и
30
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
