Реляционные базы данных
🕛 22.05.2009, 11:47
Для РБД базовыми понятиями являются: тип данных, домен, кортеж, атрибут, ключ, отношения.Вернемся к примеру «Сотрудники» - «Отделы»
СОТР_N
СОТР_ИМЯ
СОТР_ЗАРПЛ СОТР_ОТД
2934
Иванов 112 310
2935 Петров 215 310
2938 Сидоров 418 320
…
Тип СОТР_N - целые четырёхзначные; СОТР_НОМЕР - символьный, имеет смысл фамилий. Тип данных
В реляционных моделях тип данных полностью аналогичен понятию типа данного в языках программирования, т.е. определяет форму хранения и дополнительные операции (поддерживает корректное соотношение операций с данными). Существующие типы:
1) числовые (простые, денежные, временные);
2) символьные (представляются обычно в виде строк, здесь вводят битовые последовательности, использующиеся в качестве масок). Домен
Домен - допустимое потенциальное множество значений данного. Домен всегда имеет смысловую нагрузку, из-за чего с данными из разных доменов недопустимы некоторые операции. Домен - множество значений без типа, удовлетворяющих логическому отношению. Отношения - быть зарплатой или номером отдела.
Схема отношения (схема БД)
Схема отношения - это множество пар, включающих имя атрибута и имя домена. Количество пар определяет мощность (арность) множества.
<имя_атр, имя_домена>
Отношение - поименованное множество пар.
<СОТР_N, домен номеров>
<СОТР_ИМЯ, домен фамилий>
<СОТР_ЗАРПЛ, домен зарплат>
<СОТР_ОТД, домен номеров отделов>
Схема БД - набор поименованных схем отношений. Кортеж
Кортеж - множество поименованных пар <атрибут, значение атрибута>, причём имя атрибута должно быть такое, чтобы соответствовать схеме отношения, а значения атрибута - чтобы принадлежали соответствующим доменам. Т.е. отношения - это множество кортежей.
<СОТР_N, 2935>
<СОТР_ИМЯ, Петров>
<СОТР_ЗАРПЛ, 215>
<СОТР_ОТД, 310>
Фундаментальные свойства отношений
1. отсутствие кортежей - дубликатов. Следует из определения отношений как множества кортежей. Характеристика, выделяющая уникальность кортежа - первичный ключ.
Первичный ключ: - (значение из домена) простой; - составной. Ключ должен удовлетворять требованию минимальности.
Иванов Иван 1980
Иванов Павел 195
Иванов Николай 1985
Петров Пётр 1990
Петров Николай 1981
2. отсутствие упорядоченности кортежей. Тоже следует из определения отношений как множества кортежей. Отсутствие порядка кортежей обеспечивает большую гибкость СУБД. Для упорядоченности пользуются индексами.
3. отсутствие упорядоченности атрибутов. С точки зрения организации хранения данных имеет большое значение для СУБД. Для нас: обращение к значению только через имя атрибута.
4. атомарность значений атрибутов. Атрибуты принимают значения из доменов, а домен представляет собой множество, содержащее по определению простые элементы. Свойство атомарности препятствует появлению следующего типа таблиц:
ОТД_N ОТДЕЛ СОТР_N Сотрудник
310 2934 Иванов 112
2935 Петров 215
320 2938 Сидоров 418
Отношения, соответствующие примеру, ненормализованы. Над ними невозможно корректно выполнить операции по преобразованию данных (добавление, удаление, модификация). Отсутствие корректности называется аномалией. БД работают только с нормализованными отношениями. Преобразование ненормализованных отношений в нормализованные - процесс нормализации.
Реляционная модель данных
РМД имеет три составные части:
- структурную;
- манипуляционную;
- целостную.
Структурная часть касается описаний схем отношений и качества отношений. Она была рассмотрена выше при обсуждении основных свойств отношений.
Манипуляционная часть включает описание основных операций, которые можно выполнить для корректного преобразования данных. Существует два подхода для описания допустимых операций над данными:
1) процедурный: основывается на описании соответствующих процедур (шаг1, шаг2, …).он представлен в РМД с помощью реляционной алгебры (РА).
2) Декларативный: основан на том, что в нём содержится формулировка условий, которым должен удовлетворять результат преобразований данных. Этот подход реализуется с помощью реляционного исчисления (РИ). Фактически формулируются запросы к СУБД, которые могут быть ошибочными.
Любой набор из РА может быть переведён в РИ, и наоборот.
В ограничение целостной части заложено два базовых требования:
1. целостность по сущностям;
2. целостность по ссылкам.
Связь между сущностями выражается в том, что первичный ключ одного отношения выступает в качестве внешнего ключа в другом отношении. Например,
Отношение Сотрудник (сотр_имя, сотр_отд_№, сотр_№)
Отношение Отдел (отд_№, отд_начальник, отд_число_№)
сотр_отд_№ должен принимать такие значения, которые принимает отд_№ в отношении Отделы, т.е. это одинаковое свойство. Итак, сотр_отд_№ является внешним ключом.
Целостность по ссылкам состоит в том, что все внешние ключи должны принимать значения, для которых существуют первичные ключи.
Задача СУБД по обеспечению ограничения целостности по ссылкам состоит в проверке соответствующих значений. Добавление и корректировку записей можно контролировать. Но удаление записей иногда составляет проблему: при удалении кортежа с внешним ключом проблемы не возникает, а удаление/корректировка первичного ключа, являющегося внешним для другого отношения - это проблема. Существует три механизма решения этой проблемы:
- запретить такие операции;
- каскадное обновление (корректировка) состоит в том, что если удаляется запись, соответствующая, например, первому отделу, то в Сотрудниках автоматически удаляется первый отдел;
- допустимость существования неопределённых ссылок, т.е. существование внешнего ключа, для которого первичный ключ не определён. Здесь необходимо наличие неопределённого значения.
Манипуляционная часть РМД
Манипуляционная часть может быть реализована на основе двух подходов:
1. основан на РА - процедурный подход;
2. основан на РИ - декларативный подход.
Доказано, что 1 и 2 являются эквивалентными, т. е. Любой набор операций РА может быть представлен в виде высказываний РИ и обратно. Важно, что и 1, и 2 обладают свойством замкнутости. Это - замкнутость по отношению к тем объектам, над которыми происходит манипуляция. Т.е. в результате любых корректных операций из отношений получаются новые реляционные отношения. Т.е. в результате этого из отношений должны получаться только отношения.
Реализация манипуляционной части происходит в любых СУБД на языке данных, а именно на DML. DML должен отображать либо 1, либо 2. на практике трудно выдержать это и реальные реализации содержат часть 1 и часть 2. Примером DML является SQL.
РА основана на наборе операций теории множеств. РИ основано на теории предикатов.
Реляционная алгебра
Все операции в РА могут быть разделены на:
1. теоретико-множественные;
2. специальные реляционные.
К 1 относятся операции: объединение, пересечение, разность, прямое произведение. К 2 относятся операции: ограничение, проекция, соединение, деление. Кроме этих двух групп операций для обеспечения замкнутости необходимо ещё две операции: присваивание, переименование.
Теоретико-множественные операции РА
Объединение двух отношений - отношение, включающее все кортежи, входящие хотя бы в одно из объединяемых отношений.
Пересечение двух отношений - отношение, включающее все кортежи, входящие в оба отношения.
Разность двух отношений - отношение, включающее все кортежи, входящие в первое отношение и не входящие во второе.
Прямое произведение двух отношений - отношение, кортежи которых являются сцеплением (конкатенацией) кортежей первого и второго отношений.
Пусть
Следовательно, операция выполняется не всегда. Необходимо, чтобы объединяемые отношения были совместимы по объединению, т. е. Объединяемые отношения должны иметь одинаковые схемы. Когда совпадают домены и не совпадают атрибуты - это частичная совместимость. Она может быть доведена до полной, если выполнить операцию переименования. Переименование - операция, в результате которой получают отношение, тело которого совпадает с телом исходного, а атрибуты, т. е. их имена изменены. Т.е. .
В операции прямого произведения:
Совместимость по прямому произведению состоит в том, что множество имён атрибутов не должны пересекаться. Любые два отношения могут быть сделаны совместимыми по прямому произведению, если применить операцию переименования.
Специальные реляционные операции
Операция ограничения по условию требует наличия двух операндов: отношения, которое подвергается ограничению, и условия ограничения. Условие ограничения имеет вид: , где - операция сравнения (<, >, =, , ), а и - атрибуты ограничиваемого отношения или константы. Результатом этой операции является отношение, в которое включаются только такие кортежи из исходного, в которых значения атрибутов удовлетворяют условию ограничения.
Операция проекции требует наличия двух операндов: исходного проецируемого отношения и списка имён атрибутов, входящих в заголовок исходного отношения. Проекция на заданный набор атрибутов - отношение, в котором из исходных кортежей выбираются те атрибуты, которые входят в проектируемый список.
Т.к. получающиеся отношения не удовлетворяют фундаментальным свойствам отношений, то кортежи-дубликаты удаляются.
Соединение двух отношений по условию требует наличия трёх операндов: два отношения, соединяемых между собой, и условия выполнения соединения.
Результатом соединения будет отношение, в котором кортежи являются сцеплением кортежей первого и второго отношений именно таких, которые удовлетворяют условию.
Важным частным случаем этой операции является эквисоединение, когда в качестве условия выступает равенство . В результате этой операции:
Здесь два столбца дублируют друг друга. Тогда столбец-дублёр вычёркивается. Смысл эквисоединения состоит в восстановлении какой-то сложной сущности.
Операция деления отношений была введена для обеспечения свойства замкнутости. В делении участвуют два операнда: бинарное отношение и унарное отношение. Результатом этой операции является отношение из одно-атрибутных кортежей, включающих значение первого атрибута кортежей первого операнда таких, что значения второго атрибута совпадают со множеством значений второго операнда.
операция присваивания - операция, которая сохраняет результат вычисления реляционного выражения в виде нового отношения. Т.е. можно увеличивать количество отношений в БД.
Реляционное исчисление
Рассмотрим конкретный пример. Есть БД, состоящая из двух отношений: Сотрудники (Сотр_№, Сотр_имя, Сотр_зарпл, Сотр_отд);
Отделы(Отд_№, Отд_ кол, Отд_нач).
Задача: узнать имена и номера сотрудников, являющихся начальниками отделов, в которых работает более 50 человек.
Подход, основанный на РА, состоит в написании серии операций, результатами которых будут отношения. Результатом выполнения серии операций будет отношение Начальники(Сотр_имя, Сотр_№). Операции:
1. соединение Сотрудники и Отделы по условию Сотр_№ = Отд_нач ;
2. ограничение ;
3. проекция .
Непроцедурный подход состоит в том, чтобы написать требование, которому должен удовлетворять результат. Это требование можно записать так: выдать Сотр_имя, Сотр_№ для сотрудников таких, что существует отдел с таким же значением Отд_нач, как и Сотр_№ и значением Отд_кол 50. Те. Здесь указана характеристика результата. В этом случае СУБД должна сама решить, какую последовательность операций надо выполнить, чтобы получить желаемый результат. Если это высказывание построено по определённым правилам, то существуют простые правила перевода высказывания в последовательность реляционных операций.
Непроцедурный подход основан на РИ. Здесь выделяют 2 базовых понятия:
- переменная, у которой должна быть установлена область определения;
- правильно построенная формула (WFF - Well Formed Formula), в которой учитываются переменные, кванторы и предикаты. Квантор - логический эквивалент слов ВСЕ, ДЛЯ ЛЮБОГО, СУЩЕСТВУЕТ и т.д. Предикат - оператор, который формализует логическое значение квантора, т.е. ставит этому квантору в соответствие значение ДА или НЕТ. Т.о. предикат - это свойство.
Область определения может задаваться как множество кортежей, и тогда говорят об исчислении кортежей, или как домен, и тогда говорят об исчислении доменов.
Исчисление кортежей
Определение кортежной переменной - это указание, из какого отношения она принимает значение.
Ссылки типа СОТРУДНИК -> Сотр_зарпл или СОТРУДНИК.Сотр_имя говорят о том, что имея кортежную переменную, можно получить доступ к атрибутам.
WFF - правильно построенная формула. Она может быть преобразована в набор реляционных операций. WFF служит для выражения условий, накладывающихся на кортежные переменные. Основой WFF являются простые сравнения - операции сравнения скалярных значений. Такими скалярными значениями могут быть атрибуты кортежных переменных или константы:
Другим вариантом WFF являются формулы из простых сравнений, объединённых логическими связями:
WFF может быть построена с помощью кванторов:
Все переменные, которые входят в WFF, не использующие кванторов, не являются свободными. «Свобода» фактически означает, что если при вычислении WFF получено .t., то это значение кортежной переменной будет входить в результирующее отношение. Т.е. свободная переменная определяет какое-то результирующее отношение. Переменная, которая входит в WFF, построенную с помощью кванторов - связанная переменная. Связанность означает, что данная переменная не видна за пределами WFF. Т.е. при вычислении формулы используется не одно значение этой переменной, а вся область определения, но в результирующем отношении эта область не видна.
Целевые списки (target list)
WFF обеспечивают средства, с помощью которых можно выбрать кортежи из отношений. Для того, чтобы можно было реально работать с БД нужно ещё одно средство. С помощью него будет определяться набор атрибутов и имена атрибутов результирующего отношения. Такой набор называется целевым списком. Целевой список состоит из элементов, каждый из которых может иметь 3 различные формы:
1. var.attr (свободная переменная, соответствующая WFF . имя атрибута отношения, на котором определена var);
2. var (имя свободной переменной)- эквивалентно наличию списка, включающего все атрибуты;
3. new_name= var.attr; new_name - новое имя соответствующего атрибута результирующего отношения.
Этот вариант требуется в том случае, когда имеется несколько свободных переменных с одинаковой областью определения.
Значением этого выражения является отношение. В нём тело определяет WFF, а схема отношения определяется целевым списком.
Логике РИ следует грамматика языка SQL.
В РИ доменов тоже есть переменные, но областью их определения являются не отношения, а домены. Поэтому в исчислении доменов роль WFF выполняют выражения, которые выражают условия членства.
Проектирование реляционных БД
При проектировании РБД сталкиваются с двумя проблемами:
1. как отобразить объекты реального мира в абстрактной модели данных - проблема логического проектирования;
2. обеспечение эффективности выполнения запросов в такой БД (каким образом должны быть расположены данные во внешней памяти, например) - проблема физического проектирования.
При проектировании РБД дать общие рекомендации по физическому проектированию довольно сложно. Смысл рекомендаций по логическому проектированию в том, чтобы определить, из каких отношений должна состоять БД и какие атрибуты должны входить в то или иное отношение.
Средством проектирования РБД является процедура нормализации отношений, образующих БД. В результате применения этой процедуры выполняется преобразование отношений, когда они принимают последовательность … нормальных форм. В теории БД рассматривают 6 нормальных форм: .
Процедура нормализации состоит в том, что в отношении анализируются связи между атрибутами и, если таковые находятся, то такое отношение подвергается декомпозиции. Отношение делится на составляющие части.
Во многих случаях на практике отношениям достаточно пройти только 3 нормальные формы. При работе с данными, когда отношения не формализованы, возможно некорректное выполнение (аномалия) основных операций с БД. Основные операции:
- пополнение БД;
- удаление информации из БД;
- корректировка БД.
Соответственно аномалии бывают трёх видов:
- добавления;
- замещения;
- удаления.
Функциональная зависимость
Для этих нормальных форм справедливо отношение: отношение в более высокой НФ является отношением и в предыдущей НФ, но дополнительно удовлетворяет нескольким критериям. За основу принимается отношение в 1НФ. Отношение в 1НФ - отношение. Удовлетворяющее фундаментальным свойствам отношений (все атрибуты атомарные, все кортежи уникальны).
В отношении R атрибут X функционально зависит от атрибута Y, если каждому значению Y соответствует в точности одно значение X (R.X (r) R.Y).
Полная функциональная зависимость
Функциональная зависимость X и Y называется полной, если атрибут X не зависит функционально от любого подмножества Y:
Транзитивная функциональная зависимость
Функциональная зависимость называется транзитивной, если существует такой атрибут Z, что имеются функциональные зависимости R.X (r) R.Z и R.Z (r) R.Y и отсутствует функциональная зависимость R.X (r) R.Y.
2НФ
Пример:
Пусть отношение называется СОТРУДНИКИ-ОТДЕЛЫ-ПРОЕКТЫ (СОТР_№, СОТР_ЗАРПЛ, ОТД_№, ПРОЕКТ_№, СОТР_ЗАДАН).
Можно выделить составной первичный ключ: СОТР_№, ПРОЕКТ_№.
Здесь может возникнуть проблема: аномалия, которая не позволяет корректно выполнять операции над данными, а именно:
- добавление сотрудника, который не выполнил ещё ни одного проекта - аномалия включения;
- если удалить какой-то кортеж, связанный с завершением проекта, то параллельно теряется информация, что сотрудник работает в каком-то отделе - аномалия исключения;
- аномалия замещения выражается в том, что если переводить сотрудника в другой отдел, то необходимо модифицировать все кортежи, описывающие этого сотрудника.
Наличие аномалий связано с тем, что неключевые атрибуты функционально зависят от первичного ключа.
Функциональные зависимости:
Чтобы от аномалий избавиться надо перейти в 2НФ. Отношение находится в 2НФ, если оно находится в 1НФ, и каждый неключевой атрибут полностью зависит от первичного ключа. Чтобы получить полностью функциональные зависимости, разделим отношение СОТРУДНИКИ-ОТДЕЛЫ-ПРОЕКТЫ на 2 части:
СОТРУДНИКИ-ОТДЕЛЫ (СОТР_№, СОТР_ЗАРПЛ, ОТД_№)
первичный ключ СОТР_№
функциональные зависимости:
СОТРУДНИКИ-ПРОЕКТЫ (СОТР_№, ПРОЕКТ_№, СОТР_ЗАДАН)
первичный ключ: СОТР_№, ПРОЕКТ_№
функциональные зависимости:
2НФ не является совершенной, поэтому строится 3НФ. Рассмотрим отношение в 2НФ. Видно, что функциональная зависимость является транзитивной: она является следствием двух функциональных зависимостей и , т.е. зарплата связана с отделом. Наличие (*) приводит к тому, что в БД нельзя внести информацию о зарплате в отделе до тех пор, пока в этом отделе не появится хотя бы один сотрудник. Т.е. транзитивная зависимость между неключевыми атрибутами сохраняет аномалии включения и исключения. Следовательно, процедуру нормализации нужно продолжать.
3НФ - это отношение в 2НФ, в котором каждый неключевой атрибут нетранзитивно зависит от первичного ключа. Подвергнем декомпозиции отношение СОТРУДНИКИ-ОТДЕЛЫ:
СОТРУДНИКИ (СОТР_№, ОТДЕЛ_№)
Ключ СОТР_№
функциональные зависимости: ;
ОТДЕЛЫ (ОТД_№, СОТР_ЗАРПЛ)
Ключ ОТД_№
функциональные зависимости: .
ПРИМЕЧАНИЕ: отношение, находящееся в 1НФ может быть подвергнуто декомпозиции, если имеются функциональные зависимости между неключевыми атрибутами и элементами составного ключа. Выделение таких функционально зависимых атрибутов в отдельное отношение и есть основа декомпозиции. Дальнейшая нормализация должна выделять отношения, описывающие именно такие транзитивные зависимости. В выделенных отношениях в качестве ключевого может быть выбран любой атрибут.
На практике декомпозиция до 3НФ в большинстве случаев является достаточной. Такой уровень выявляет основные связи в модели и на этом проектирование отношений БД заканчивается.
НФ Бойса-Кодда
Рассмотрим отношение СОТРУДНИКИ-ПРОЕКТЫ (СОТР_№, СОТР_ИМЯ, ПРОЕКТ_№, СОТР_ЗАРПЛ). Возможные первичные ключи: СОТР_№, ПРОЕКТ_№ и СОТР_ИМЯ, ПРОЕКТ_№. Функциональные зависимости:
Такое отношение находится в 3НФ, но здесь есть функциональные зависимости атрибутов отношения от атрибутов, являющихся частью первичного ключа. И аномалия замещения будет состоять в том, что, чтобы изменить имя сотрудника с данным номером согласованным образом придётся изменить все кортежи, включающие номер сотрудника. Поэтому НФ Бойса-Кодда преследует выделение полных функциональных зависимостей. Для этого вводится понятие детерминант - это любой атрибут, который полностью функционально зависит от другого атрибута. И отношение находится в НФ Бойса-Кодда в том случае, если каждый детерминант является ключом. Для приведения СОТРУДНИКИ-ПРОЕКТЫ в НФ Бойса-Кодда можно произвести декомпозицию к двум отношениям: СОТРУДНИКИ и СОТРУДНИКИ-ПРОЕКТЫ. Т.к. детерминантом может быть либо СОТР_ИМЯ, либо СОТР_№, то 4НФ: Дополним модель условиями:
1. отдельные проекты: задание1, задание2, …;
2. если сотрудник работает над проектом, то он принимает участие во всех заданиях проекта (дополнительное условие).
Описать эту ситуацию можно отношением ПРОЕКТЫ (ПРОЕКТ_№, ПРОЕКТ_СОТР, ПРОЕКТ_ЗАДАН). Уникальный ключ - комбинация всех атрибутов. Многозначные зависимости - отношение R со схемой R(A B C) содержит многозначную зависимость R.A -> ->R.B (атрибут А многозначно зависит от атрибута В). если множество значений В, которое соответствует паре (А, С): В~( А, С), зависит только от А, и на зависит от С.
Т.е. многозначная зависимость между ПРОЕКТ_№ -> -> ПРОЕКТ_СОТР
СОТР~(ПРОЕКТ, ЗАДАН) зависит от ПРОЕКТ и не зависит от ЗАДАН.
Недостатки многозначной зависимости: если необходимо присоединить сотрудника к проекту, то нужно добавить столько кортежей, сколько существует заданий в данном проекте.
ПРОЕКТ_№ -> -> ПРОЕКТ_СОТР
ПРОЕКТ_№ -> -> ПРОЕКТ_ЗАДАНИЕ
Нормализация: исходное отношение спроектировать без потерь таким образом, чтобы исходное отношение могло быть полностью восстановлено путём естественного соединения новых отношений.
Если R (A, B, C) и существует многозначная зависимость R.A -> -> R.B, то R1 (A, B) и R2 (A, С). Причём по R1 и R2 исходное R может быть восстановлено полностью путём естественного соединения.
- ПРОЕКТЫ - СОТРУДНИКИ (ПРОЕКТ_№, ПРОЕКТ_СОТР);
- ПРОЕКТЫ - ЗАДАНИЯ (ПРОЕКТ_№, ПРОЕКТ_ЗААДАН).
Уловие естественного соединения: ПРОЕКТ_№ из ПРОЕКТЫ - СОТРУДНИКИ = ПРОЕКТ_№ из ПРОЕКТЫ - ЗАДАНИЯ.
Семантическое моделирование данных
- построить такую модель, которая, отражала бы семантику предметной области (смысл данных).
Может выступать первой стадией проектирования базы данных.
Описание смысла модели соответствует концептуальной схеме данных.
CASE-технологии (САПР); объектно-ориентированные СУБД.
Моделирование по схеме сущности - связи
Entry - Relationship (ER)
- базируется на использовании графических диаграмм с небольшим числом компонентов.
3 базовых элемента:
- сущность - реальный или представляемый объект, информация о котором должна быть сохранена в базе и быть доступной. Обозначение «имя сущности». Имя сущности - имя типа, а не экземпляра. Главное требование: сущности должны быть такими, чтобы каждый экземпляр отличался от другого экземпляра сущности.
- Связь - графически изображаемая ассоциация, устанавливаемая между двумя сущностями (всегда бинарная). У связи выделяются характеристики: имя, степень, обязательность; они относятся каждому концу связи. Имя: слово, подчёркивающее смысл связи. Степень: соответствие количеству экземпляров сущностей, участвующих в данном конце связей. Обязательность: характеристика, показывающая каждый ли экземпляр сущности должен участвовать в этой связи. Например:
Рекурсивные связи:
- Атрибут - любая деталь, которая служит для уточнения, идентификации, классификации состояния сущности. Обозначение: «имя сущности. атрибут».
Уникальный идентификатор сущности: характеристика, которая отличает один экземпляр сущности от других экземпляров того же члена.
- атрибут;
- комбинация атрибутов;
- комбинация связей и атрибутов;
- комбинация связей.
Нормализация ER-диаграмм
проводится через нормальные формы.
1 НФ: выделяются повторяющиеся атрибуты или их группы и удаляются (устранение неявных сущностей, которые маскируются под атрибут).
2 НФ: удаляются атрибуты, зависящие только от частей уникального ключа. Благодаря этому обнаруживаются отдельные сущности, зависящие от уникального ключа.
3 НФ: исключает атрибуты, зависящие от атрибутов, не входящих в уникальный ключ. Они также являются основой для новых отдельных сущностей.
Получение реляционной схемы из ER-модели:
1. каждая сущность превращается в таблицу, и имя сущности становится именем отношения (прямоугольник -> отношение);
2. каждый атрибут становится столбцом с тем же именем (может быть выбран другой формат). Необязательные атрибуты в столбцах могут содержать неопределённые значения.
3. уникальный идентификатор сущности -> первичный ключ. Если их несколько, то выбирается наиболее используемый. Если в состав уникального ключа входят связи, то к числу столбцов первичного ключа добавляется копия уникального ключа сущности, которая находится на данном конце связи;
4. связи «многие к одному», «один к одному» становятся внешним ключом. Делается копия уникального ключа с конца связи «один» и соответствующие столбцы составляют внешний ключ;
5. создаются индексы для первичного ключа, внешних ключей и тех атрибутов, на которых будет базироваться запрос.
Пример: «учебный процесс»
Перевод:
«студент»
№3 ФАМ Адр
«преподаватель»
Шифр ФП
«экзамен»
№3 Шифр Дата Предмет оценка
«экзамен»
Предмет Дата оценка
Получили отношение сразу в третьей НФ.