Определение атрибутов сущности

Сущность – некоторый объект, явление из рассматриваемой предметной области. Примеры сущностей: человек, автомобиль, сделка, визит к стоматологу.

Атрибуты – данные, описывающие свойства сущности. Примеры атрибутов: фамилия, цвет, стоимость, дата.

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

Следует различать тип сущности и конкретные ее экземпляры.

Тип сущности – признак принадлежности к некоторому классу (множеству) объектов (явлений). Тип сущности характеризуется множеством ее атрибутов.

Экземпляр сущности – конкретный объект, принадлежащий определенному классу объектов. Экземпляр сущности определяется значениями ее атрибутов.

Фактически, в базе данных хранятся только наборы значений атрибутов. Каждый такой набор определяет один экземпляр сущности.

Многозначные атрибуты. Может оказаться, что некоторый атрибут сущности способен принимать одновременно несколько значений. Реляционная модель, в которую должна быть впоследствии преобразована данная инфологическая модель, не допускает многозначности атрибутов. Данное противоречие должно быть разрешено. Возможное решение – образование новой сущности.

В приведенном ранее примере атрибут «номер телефона» становится кандидатом на создание сущности «номер телефона».

Другое решение – заменить название атрибута «номер телефона» на «перечень номеров телефонов» и позволить хранить несколько номеров, перечисленных через запятую, в виде одной текстовой строки. Кроме того, некоторые СУБД позволяют размещать в ячейках таблиц массивы, содержащие несколько элементов. Однако при сохранении многозначного атрибута могут возникнуть сложности с извлечением данных. Например, будет затруднительно составить запрос следующего вида: «извлечь из БД сведения о персонах, имеющих заданный номер телефона».

Кроме того, возможное решение зависит от общего контекста разрабатываемой БД. Если речь идет о контактных номерах телефонов сторонних клиентов, номер, скорее всего, является атрибутом и возможные повторы маловероятны и несущественны. Если же ставится задача построения телефонного справочника некоторой организации, в которой, с одной стороны, один сотрудник может быть доступен по нескольким номерам, а с другой – по одному номеру может быть доступно несколько сотрудников, номер телефона, очевидно, становится самостоятельной сущностью.

Домен атрибута – множество значений, которые атрибут может принимать. Доменом может быть, например, множество допустимых значений даты, диапазон целых чисел или множество текстовых строк. Также это может быть множество цветов и оттенков или список компаний - поставщиков.

При реализации модели на языке конкретной СУБД домены приводятся в соответствие с имеющимися типами данных.

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

Определение связи между сущностями. После определения сущностей следует описать связи (взаимоотношения) между ними.

Связь устанавливается между экземплярами сущностей, а не их типами. Например, для сущностей «клиент» и «заказ» связь устанавливается между кон кретным клиентом и его заказами. Для связывания экземпляров сущностей ис пользуются их уникальные идентификаторы экземпляров сущности (первичные ключи).

Виды связей:

• Один-к-одному

• Один-ко-многим

• Многие-ко-многим

Вид связи определяется количеством экземпляров сущностей, участвующих в связи с каждой из сторон.

При связи вида «один-к-одному», экземпляр каждой из сущностей может быть связан не более чем с одним экземпляром другой сущности.

Возможное применение связи «один-к-одному» – хранить отдельно некоторый набор секретных атрибутов, для доступа к которым нужны более высокие привилегии. Пример – связь между сущностями «клиент» и «кредитная карта».

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

Пример связи «один-ко-многим» – связь между клиентом и его заказами. Клиент может сделать много заказов (или ни одного), но заказ может быть связан только с одним клиентом. Другой пример: в кошельке может одновременно находиться много денежных банкнот, но каждая банкнота в определенный момент времени может находиться не более, чем в одном кошельке.

Между приведенными примерами есть отличие: заказ обязательно должен быть связан с 1 клиентом (без клиента он не существует), а банкнота может быть связана с 0 кошельков или с 1 кошельком (она способна существовать без кошелька).

«Один-ко-многим» - самый распространенный вид связи в реляционных базах данных.

При связи между сущностями вида «многие-ко-многим» каждому экземп ляру первой сущности могут быть поставлены в соответствие несколько экзем пляров второй сущности (и наоборот).

Пример – связь между журналами и подписчиками. Подписчик может вы писать несколько журналов и каждому наименованию журнала могут соответствовать много подписчиков.

Реляционная модель баз данных не позволяет реализовать связь «многие-ко-многим». Эта проблема может быть решена введением дополнительной сущности.

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

Процесс преобразования базы данных к виду, отвечающему нормальным формам, называется нормализацией. Нормализация предназначена для приведения структуры базы данных к виду, обеспечивающему минимальную избыточность, то есть нормализация не имеет целью уменьшение или увеличение производительности работы или же уменьшение или увеличение объёма БД. Конечной целью нормализации является уменьшение потенциальной противоречивости хранимой в БД информации.

Устранение избыточности производится, как правило, за счёт декомпозиции отношений таким образом, чтобы в каждом отношении хранились только первичные факты (то есть факты, не выводимые из других хранимых фактов).

Первая нормальная форма (1NF)

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

В реляционной модели отношение всегда находится в первой нормальной форме по определению понятия отношение. Что же касается таблиц в существующих реляционных СУБД (SQL-СУБД), то они могут не быть правильными отношениями и, соответственно, не находиться в 1NF.

Вторая нормальная форма (2NF)

Отношение находится во второй нормальной форме, если оно находится в первой нормальной форме, и при этом любой его атрибут, не входящий в состав потенциального ключа, функционально полно зависит от каждого возможного ключа. Функционально полная зависимость означает, что атрибут функционально зависит от всего составного потенциального ключа, но при этом не находится в функциональной зависимости от какой-либо из входящих в него частей. Или другими словами: в 2NF нет неключевых атрибутов, зависящих от части составного ключа.

Третья нормальная форма (3NF)

Согласно определению Кодда, таблица находится в 3НФ тогда и только тогда, когда выполняются следующие условия:

· Отношение R (таблица) находится во второй нормальной форме;

· Каждый непервичный атрибут R находится в нетранзитивной (то есть прямой) зависимости от каждого ключа R.

Таким образом, отношение находится в 3NF тогда и только тогда, когда оно находится во 2NF и отсутствуют транзитивные зависимости неключевых атрибутов от ключевых. Транзитивной зависимостью неключевых атрибутов от ключевых называется следующая: A → B и B → C, где A — набор ключевых атрибутов (ключ), B и С — различные множества неключевых атрибутов.

При решении практических задач в большинстве случаев третья нормальная форма является достаточной. Процесс проектирования реляционной базы данных, как правило, заканчивается приведением к 3NF.

Нормальная форма Бойса — Кодда (BCNF)

Это более строгая версия третьей нормальной формы.

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

Четвёртая нормальная форма (4NF)

Таблица находится в 4NF, если она находится в BCNF и не содержит нетривиальных многозначных зависимостей. Многозначная зависимость не является функциональной, она существует в том случае, когда из факта, что в таблице содержится некоторая строка X, следует, что в таблице обязательно существует некоторая определённая строка Y. То есть, таблица находится в 4NF, если все ее многозначные зависимости являются функциональными.

Пятая нормальная форма (5NF)

Таблица находится в 5NF, если она находится в 4NF и любая многозначная зависимость соединения в ней является тривиальной. Пятая нормальная форма в большей степени является теоретическим исследованием и практически не применяется при реальном проектировании баз данных. Это связано со сложностью определения самого наличия зависимостей «проекции — соединения», поскольку утверждение о наличии такой зависимости должно быть сделано для всех возможных состояний БД.

Доменно-ключевая нормальная форма (DKNF)

Отношение в ДКНФ не имеет аномалий модификации. Другими словами, что бы ни менялось — ничего не потеряется, если соблюдены все ограничения относительно ключей идоменов. Формулировка слишком общая, но суть ее заключается в том, что если выполнять некоторые правила, то при любых действиях с таблицей ее целостность не пострадает и вся необходимая информация сохранится. Если рассматривать на примере, то правила действуют примерно так: нельзя просто удалить категорию из таблицы категорий, если с этой категорией связаны, например, продукты из таблицы продуктов. Прежде чем удалять категорию, необходимо выполнить предварительные действия в таблице продуктов (например, поле отвечающее за id категории этого товара нужно сделать NULL).

Шестая нормальная форма (6NF)

Введена К. Дейтом в его книге, как обобщение пятой нормальной формы для темпоральной базы данных.

42. Модели данных. Реляционная модель данных

Реляционная модель данных — логическая модель данных, прикладная теория, описывающаяструктурный аспект, аспект целостности и аспект обработки данных в реляционных базах данных

· Структурный аспект (составляющая) — данные в базе данных представляют собой набор отношений.

· Аспект (составляющая) целостности — отношения (таблицы) отвечают определенным условиям целостности. РМД поддерживает декларативные ограничения целостности уровня домена (типа данных), уровня отношения и уровня базы данных.

· Аспект (составляющая) обработки (манипулирования) — РМД поддерживает операторы манипулирования отношениями (реляционная алгебра, реляционное исчисление).

Кроме того, в состав реляционной модели данных обычно включают теорию нормализации.

Реляционная модель данных является приложением к задачам обработки данных таких разделов математики как теория множеств и формальная логика.

Термин «реляционный» означает, что теория основана на математическом понятии отношение (relation). В качестве неформального синонима термину «отношение» часто встречается слово таблица. Необходимо помнить, что «таблица» есть понятие нестрогое и неформальное и часто означает не «отношение» как абстрактное понятие, а визуальное представление отношения на бумаге или экране. Некорректное и нестрогое использование термина «таблица» вместо термина «отношение» нередко приводит к недопониманию. Наиболее частая ошибка состоит в рассуждениях о том, что РМД имеет дело с «плоскими», или «двумерными» таблицами, тогда как таковыми могут быть только визуальные представления таблиц. Отношения же являются абстракциями, и не могут быть ни «плоскими», ни «неплоскими».

Для лучшего понимания РМД следует отметить три важных обстоятельства:

· модель является логической, то есть отношения являются логическими (абстрактными), а не физическими (хранимыми) структурами;

· для реляционных баз данных верен информационный принцип: всё информационное наполнение базы данных представлено одним и только одним способом, а именно — явным заданием значений атрибутов в кортежах отношений; в частности, нет никаких указателей (адресов), связывающих одно значение с другим;

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

Рассмотрим семантику идентифицирующих и не идентифицирующих отношений связи: Связь называетсяидентифицирующей, если экземпляр дочерней сущности идентифицируется только через ее связь с родительской сущностью. (При этом атрибуты первичного ключа родительской сущности мигрируют в первичный ключ дочерней сущности.)

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

Специфическое отношение связи (идентифицирующие связи, не идентифицирующие связи) изображается линией, проводимой между сущностью-родителем и сущностью-потомком с точкой на конце линии у сущности-потомка.Идентифицирующее отношение между сущностью-родителем и сущностью- потомком изображается сплошной линией, при этом сущность-потомок всегда является зависимой.Не идентифицирующее отношение между сущностью-родителем и сущностью-потомком изображается пунктирной линией, при этом сущность потомок является независимой.

-экземпляр сущности-потомка всегда должен быть связан с одним экземпляром сущности- родителя;

- экземпляр сущности-родителя может быть связан с любым числом экземпляров сущности-потомка, где это число зависит от указанной мощности ;

- в идентифицирующем отношении сущность-потомок всегда является зависимой сущностью;

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

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

Значение некоторого атрибута -дискриминатора отношения - в экземпляре общей сущности определяет с какой из возможных сущностей-категорий он связан. Сущности-категории, связанные с общей сущностью,всегда взаимоисключающие. Пример: Общая сущность

СОТРУДНИК(#Таб.номер, Год поступления на работу, Код подразделения, ФИО, Должность, Статус работника),

Сущности-категории - ШТАТНЫЙ(#Таб.номер, Оклад);

СОВМЕСТИТЕЛЬ(#Таб.номер, Основное место работы, Почасовая оплата, Количество часов). Рассмотрим синтаксис отношений категоризации:

Отношение категоризации изображается линией, ведущей от общей сущности к подчеркнутому кругу. Отдельные линии ведут из подчеркнутого круга к каждой из сущностей-категорий, для которых мощность не указывается (= 0 или1). Сущности-категории всегда зависимы, общая сущность независима, если ее идентификатор не наследуется через другое отношение.

Неспецифические отношения, то есть отношения«многиекомнЬнш»;—это связь между двумя сущностями, при которой каждый экземпляр первой сущности связан с произвольным количеством экземпляров второй сущности и наоборот.

Сущности, введенные для разрешения неспецифического отношения, называются сущностями пересечения или ассоциативными.

Рассмотрим синтаксис неспецифических отношений:

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

Неспецифическому отношению дается двойное имя. Имена отношений выражаются грамматическими оборотами глаголов (глагол, дополненный, возможно, наречиями и предлогами, размещаемыми рядом с линией отношения и разделенными косой чертой.

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

- Для полной разработки модели неспецифические отношения должны быть заменены специфическими.

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

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

Определяющие первичный ключ атрибуты размещаются наверху списка атрибутов в блоке сущности и отделяются от других атрибутов горизонтальной чертой.

Каждому альтернативному ключу присваивается уникальный целый номер. Этот ключ указывается справа от атрибута ключа, например (АК1); (АК2). Атрибут первичного ключа может служить также частью альтернативного ключа.

Сформулируем правила первичных и альтернативных ключей:

- Каждая сущность должна обладать первичным ключом.

- Каждая сущность может обладать любым числом альтернативных ключей.

- Первичный или альтернативный ключ может состоять из одного атрибута или комбинации атрибутов (составной ключ).

- Отдельный атрибут может быть частью более чем одного ключа, первичного или альтернативного.

- Атрибуты, входящие в первичные или альтернативные ключи сущности, могут быть собственными для сущности или наследоваться через отношения.

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

- Если первичный ключ состоит более чем из одного атрибута, то значение любого не ключевого атрибута должно функционально зависеть от всего первичного ключа(правило полной функциональной зависимости).

Сформулируем правила внешних ключей:

- Каждая сущность должна содержать отдельный внешний ключ для каждого специфического отношения связи или категоризации, в котором эта сущность является сущностью потомком или сущностью категорией.

- Первичный ключ общей сущности должен наследоваться в качестве первичного ключа для каждой сущности категории.

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

- Один наследуемый атрибут может быть частью более чем одного внешнего ключа, если этот атрибут всегда имеет одно и тоже значение для всех внешних ключей в любом данном экземпляре сущностей.

Завершающим этапом моделирования является документирование модели.

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

Примечание: правила 7 и 8 подробно рассматривались в п. 3.2.6. «Нормализация отношений».

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

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

Если все атрибуты первичных ключей сущности-родителя наследуются в качестве части первичного ключа сущности-потомка, то отношение, через которое эти атрибуты были унаследованы, называетсяидентифицирующим отношением.

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

43. Реляционная алгебра. Операции реляционной алгебры

Цель: Основной целью курса является формирование у студентов общей культуры современных баз данных. Понимание основных принципов реляционной модели данных позволяет лучше ориентироваться в особенностях организации коммерческих и свободно доступных систем управления базами данных. Знание абстрактных алгебраических и логических средств манипулирования данными позволяет быстрее и глубже понять специфику практических современных языков баз данных. Знакомство с теорией реляционных баз данных и проектированием баз данных на основе принципа нормализации способствует осознанию требований к структуре практически используемых баз данных. Наконец, освоение подходов к проектированию баз данных с использованием диаграммных моделей облегчит освоение средств автоматизации проектирования.

Типы данных:

• Логический

• Строковый

• Численный

Оператор

Название Описание Синтаксис
Переименование атрибутов В результате применения оператора переименования атрибутов получаем новое отношение, с измененными именами атрибутов. R RENAME Atr, … AS NewAtr ,…  
присваивание Оператор присваивания позволяет сохранить результат вычисления реляционного выражения в существующем отношении   :=

Теоретико-множественные операторы:

Название Описание Синтаксис
Объединение Отношение с тем же заголовком, что и у совместимых по типу отношений A и B, и телом, состоящим из кортежей, принадлежащих или A, или B, или обоим отношениям A UNION B
Пересечение Отношение с тем же заголовком, что и у отношений A и B, и телом, состоящим из кортежей, принадлежащих одновременно обоим отношениям A и B A INTERSECT B
Вычитание Отношение с тем же заголовком, что и у совместимых по типу отношений A и B, и телом, состоящим из кортежей, принадлежащих отношению A и не принадлежащих отношению B A MINUS B
Декартово произведение   Отношение (A1, A2, …, Am, B1, B2, …, Bm), заголовок которого является сцеплением заголовков отношений A(A1, A2, …, Am) и B(B1, B2, …, Bm), а тело состоит из кортежей, являющихся сцеплением кортежей отношений A и B: (a1, a2, …, am, b1, b2, …, bm) таких, что (a1, a2, …, am)∈ A, (b1, b2, …, bm)∈ B.   A TIMES B  

Специальные реляционные операторы:

Название Описание Синтаксис
Выборка (ограничение)   Отношение с тем же заголовком, что и у отношения A, и телом, состоящим из кортежей, значения атрибутов которых при подстановке в условие c дают значение ИСТИНА. c представляет собой логическое выражение, в которое могут входить атрибуты отношения A и/или скалярные выражения A WHERE c
Проекция Отношение с заголовком (X, Y, …, Z) и телом, содержащим множество кортежей вида (x, y, …, z), таких, для которых в отношении A найдутся кортежи со значением атрибута X равным x, значением атрибута Y равным y, …, значением атрибута Z равным z. При выполнении проекции выделяется «вертикальная» вырезка отношения-операнда с естественным уничтожением потенциально возникающих кортежей-дубликатов. Синтаксис: A[X, Y, …, Z] или PROJECT A {x, y, …, z}
Соединение   Операция соединения есть результат последовательного применения операций декартового произведения и выборки Если в отношениях и имеются атрибуты с одинаковыми наименованиями, то перед выполнением соединения такие атрибуты необходимо переименовать (A TIMES B) WHERE c
Деление   Отношение с заголовком (X1, X2, …, Xn) и телом, содержащим множество кортежей (x1, x2, …, xn), таких, что для всех кортежей (y1, y2, …, ym) ∈ B в отношении A(X1, X2, …, Xn, Y1, Y2, …, Ym) найдется кортеж (x1, x2, …, xn, y1, y2, …, ym) A DIVIDEBY B

44. Методология семантического моделирования данных IDEF1X

Наши рекомендации