Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Базы данных. Учебное пособие для обучающихся по направлению подготовки 09.03.03 «Прикладная информатика»

.pdf
Скачиваний:
0
Добавлен:
06.09.2026
Размер:
2 Мб
Скачать
ПОСТРОЕНИЕ БАЗЫ ДАННЫХ
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
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]