Добавлен: 30.11.2023
Просмотров: 76
Скачиваний: 3
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
строка соответствует логической записи, а заголовки столбцов являются названиями полей (атрибутов) в записях. Каждая запись в реляционной модели имеет уникальное имя (первичный ключ), которое в общем случае состоит из значений нескольких атрибутов. Ключ позволяет однозначно идентифицировать запись среди множества других записей. Если ключ записи состоит из значений нескольких атрибутов, то он называется составным, а если из одного атрибута, то простым. Например, любая запись таблицы ПОСТАВКИ идентифицируется составным ключом: Код поставки, Код поставщика и Код товара. Имена всех записей хранятся в самих записях (что не имело места для иерархической и сетевой моделей). Чтобы связать две таблицы, необходимо ключ первой таблицы ввести в состав ключа второй таблицы (возможно совпадение ключей), в противном случае нужно в структуру первой таблицы ввести внешний ключ – ключ второй таблицы. Например, для связи таблиц ТОВАРЫ и ПОСТАВЩИКИ в таблицу ТОВАРЫ введен внешний ключ Код поставщика. Тип данных и размер первичного и внешнего ключей должен совпадать. Таким образом, реляционная база данных с логической точки зрения может быть представлена множеством двумерных таблиц самого различного предметного наполнения. Основными достоинствами реляционной модели данных являются:
– простота и доступность;
– независимость данных;
– гибкость;
– возможность непроцедурных запросов.
При описании реляционных БД часто используется своя терминология. Например, множество допустимых значений (область определения) атрибута называют доменом, запись – кортежем, а множество однотипных записей – отношением. Список имен атрибутов одного отношения называется схемой отношения; каждое отношение, как правило, имеет своё название (имя). От термина “отношение” (от англ. relation) происходит название реляционная модель данных. Одним из требований, предъявляемым к отношениям, является требование нормализации. Согласно условиям нормализации, в каждом кортеже содержатся данные, отражающие либо свойства “реального мира”, либо связи между двумя или несколькими объектами. Об отношении говорят, что оно имеет нормальную форму или нормализовано, если оно удовлетворяет определенным ограничивающим условиям. В рамках описания реляционной модели
, данного Коддом, выделялось три нормальные формы, но затем были определены еще две. Ограничивающее условие, обычное для всех нормальных форм, состоит в том, что отношения не должны носить характер вложений, т.е. никакое отношение не может быть определено как член другого отношения. Целью введения любой нормальной формы является предотвращение разного рода нарушений нормального функционирования (аномалий обновления) в результате корректировок. Порядок записей в отношении произволен. Недопустимо наличие в отношении двух записей с одинаковыми ключами. Часто вместо термина отношение используется термин таблица или реляционная таблица, в которой кортеж есть строка, каждый столбец соответствует домену. В математическом понимании отношение представляет собой подмножество декартова произведения доменов. Декартовым произведением k-доменов (D1,D2,D3,…,Dk), которое обозначается (D1*D2*D3*…*Dk), называется множество всех кортежей вида (V1,V2,V3,…,Vk) длины k, таких, что V1 принадлежит D1, V2 D2, V3 D3, …, Vk Dk. Фундаментальные свойства отношений 1. Отсутствие кортежей-дубликатов. В классической теории множеств, по определению, каждое множество состоит из различных элементов. Так как отношение определяется как множество кортежей, следовательно оно не может содержать кортежей-дубликатов. Из этого свойства вытекает наличие у каждого отношения так называемого первичного ключа – набора атрибутов, значения которых однозначно определяют кортеж отношения. Для каждого отношения, по крайней мере, полный набор его атрибутов обладает этим свойством. Однако при формальном определении первичного ключа требуется обеспечение его “минимальности”, т.е. в набор атрибутов первичного ключа не должны входить такие атрибуты, которые можно отбросить без ущерба для основного свойства, – однозначно определять кортеж. Понятие первичного ключа является исключительно важным в связи с понятием целостности баз данных. 2. Отсутствие упорядоченности кортежей. Отсутствие требования к поддержанию порядка на множестве кортежей отношения дает дополнительную гибкость СУБД при хранении баз данных во внешней памяти и при выполнении запросов к базе данных. Это не противоречит тому, что при формулировании запроса к БД можно потребовать сортировки результирующей таблицы в соответствии со значениями некоторых столбцов. Такой результат, это, вообще говоря, не отношение, а некоторый упорядоченный список кортежей. 3. Отсутствие упорядоченности атрибутов. Атрибуты отношений не упорядочены, поскольку по определению схема
отношения есть множество пар имя атрибута, имя домена. Для ссылки на значение атрибута в кортеже отношения всегда используется имя атрибута. Это свойство теоретически позволяет, например, модифицировать схемы существующих отношений не только путем добавления новых атрибутов, но и путем удаления существующих атрибутов. Однако в большинстве существующих систем такая возможность не допускается, и хотя упорядоченность набора атрибутов отношения явно не требуется, часто в качестве неявного порядка атрибутов используется их порядок в линейной форме определения схемы отношения. 4. Атомарность значений атрибутов. Значения всех атрибутов являются атомарными. Это следует из определения домена как потенциального множества значений простого типа данных, т.е. среди значений домена не могут содержаться множества значений (отношения). Принято говорить, что в реляционных базах данных допускаются только нормализованные отношения или отношения, представленные в первой нормальной форме. Так как наиболее распространенной трактовкой реляционной модели данных является то, что реляционная модель состоит из трех частей, описывающих разные аспекты реляционного подхода: структурной части, манипуляционной части и целостной части вкратце, остановимся на каждой из них. В структурной части модели фиксируется, что единственной структурой данных, используемой в реляционных БД, является нормализованное n-арное отношение. В теории реляционных баз данных обычно выделяется следующая последовательность нормальных форм: первая нормальная форма (1NF); вторая нормальная форма (2NF); третья нормальная форма (3NF); нормальная форма Бойса-Кодда (BCNF) (правильнее было бы считать эту нормальную форму третьей, однако по историческим причинам третья ступень оказалась занятой к моменту изобретения BCNF, из-за чего она и получила нестандартное название); четвертая нормальная форма (4NF); пятая нормальная форма, или нормальная форма проекции-соединения (5NF или PJ/NF). Каждой нормальной форме соответствует некоторый определенный набор ограничений, и отношение находится в некоторой нормальной форме, если удовлетворяет свойственному ей набору ограничений. Примером является ограничение первой нормальной формы: значения всех атрибутов отношения должны быть атомарными. Основные свойства нормальных форм: каждая следующая нормальная форма в некотором смысле улучшает свойства предыдущей; при переходе к следующей нормальной форме свойства предыдущих нормальных форм сохраняются. Поскольку требование первой нормальной формы (1NF) является базовым требованием классической реляционной модели данных, мы будем считать, что исходный набор отношений уже соответствует этому требованию. Отношение R находится во второй нормальной форме (2NF) в том и только в том случае, когда находится в 1NF и каждый неключевой атрибут полностью зависит от первичного ключа. Неключевым атрибутом называется любой атрибут отношения, не входящий в состав первичного ключа. Отношение R находится в третьей нормальной форме (3NF) в том и только в том случае, если все неключевые атрибуты R взаимно независимы и полностью зависят от первичного ключа. В наших примерах, описывающих реляционные модели фирмы-поставщика и склада, все отношения находятся в 1NF, 2NF и 3NF. Отношение R находится в нормальной форме Бойса-Кодда (BCNF) в том и только в том случае, если каждый детерминант является ключом. Детерминантом называется любой атрибут, от которого полностью функционально зависит некоторый другой атрибут. Например, отношения ПОСТАВКИ и ТОВАР в модели склада, СОТРУДНИКИ, ПОСТАВКИ и ДОГОВОРА в модели фирмы-поставщика. Замечание: Легко заметить, что если в отношении имеется только один возможный ключ (являющийся первичным ключом), то это определение становится эквивалентным определению третьей нормальной формы. На практике третья нормальная форма схем отношений является достаточной в большинстве случаев и приведением к третьей нормальной форме процесс проектирования реляционной базы данных обычно заканчивается. Однако иногда процесс нормализации может быть продолжен. Манипуляционная часть реляционной модели состоит из операций запоминания и поиска данных. Эти операции делятся на две группы: операции на множествах (объединение, пересечение, разность, произведение) и реляционные операции (выбрать, спроецировать, соединить, разделить). Любой язык манипулирования данными, обеспечивающий все эти операции, является реляционно полным. В зависимости от способа формирования выражений языка его называют либо реляционной алгеброй, либо реляционным исчислением. Языки манипулирования данными, которые могут использоваться конечными пользователями в диалоговом режиме (т.е. не являются вложенными в язык программирования главной системы) часто называют языками запросов. В целостной части реляционной модели данных
фиксируются два базовых требования целостности, которые должны поддерживаться в любой реляционной СУБД. Первое требование называется требованием целостности сущностей. Объекту или сущности реального мира в реляционных БД соответствуют кортежи отношений. Для соблюдения целостности сущности достаточно гарантировать отсутствие в любом отношении кортежей с одним и тем же значением первичного ключа. Второе требование называется требованием целостности по ссылкам и является несколько более сложным. Очевидно, что при соблюдении нормализованности отношений сложные сущности реального мира представляются в реляционной БД в виде нескольких кортежей нескольких отношений. Атрибут, значения которого однозначно характеризуют сущности, представленные кортежами некоторого другого отношения (т.е. задают значения их первичного ключа) называется внешним ключом. Говорят, что отношение, в котором определен внешний ключ, ссылается на соответствующее отношение, в котором такой же атрибут является первичным ключом. Требование целостности по ссылкам, или требование внешнего ключа, состоит в том, что для каждого значения внешнего ключа должен найтись кортеж с таким же значением первичного ключа в отношении на которое ведется ссылка, либо значение внешнего ключа должно быть полностью неопределенным (т.е. ни на что не указывать). Для нашего примера на рис.5…… это означает, что если для товара указан код поставщика, то этот поставщик должен существовать. При обновлении ссылающегося отношения (вставке новых кортежей или модификации значения внешнего ключа в существующих кортежах) достаточно следить за тем, чтобы не появлялись некорректные значения внешнего ключа. При удалении кортежа из отношения, на которое ведет ссылка существуют три подхода, поддерживающих целостность по ссылкам. Первый подход заключается в том, что запрещается производить удаление кортежа, на который существуют ссылки (т.е. сначала нужно либо удалить ссылающиеся кортежи, либо соответствующим образом изменить значения их внешнего ключа). При втором подходе при удалении кортежа, на который имеются ссылки, во всех ссылающихся кортежах значение внешнего ключа автоматически становится неопределенным. Наконец, третий подход (каскадное удаление) состоит в том, что при удалении кортежа из отношения, на которое ведет ссылка, из ссылающегося отношения автоматически удаляются все ссылающиеся кортежи. В развитых реляционных СУБД обычно можно выбрать способ поддержания целостности по ссылкам для каждой отдельной ситуации определения внешнего ключа. Конечно, для принятия такого решения необходимо анализировать требования конкретной прикладной области.
– простота и доступность;
– независимость данных;
– гибкость;
– возможность непроцедурных запросов.
При описании реляционных БД часто используется своя терминология. Например, множество допустимых значений (область определения) атрибута называют доменом, запись – кортежем, а множество однотипных записей – отношением. Список имен атрибутов одного отношения называется схемой отношения; каждое отношение, как правило, имеет своё название (имя). От термина “отношение” (от англ. relation) происходит название реляционная модель данных. Одним из требований, предъявляемым к отношениям, является требование нормализации. Согласно условиям нормализации, в каждом кортеже содержатся данные, отражающие либо свойства “реального мира”, либо связи между двумя или несколькими объектами. Об отношении говорят, что оно имеет нормальную форму или нормализовано, если оно удовлетворяет определенным ограничивающим условиям. В рамках описания реляционной модели
, данного Коддом, выделялось три нормальные формы, но затем были определены еще две. Ограничивающее условие, обычное для всех нормальных форм, состоит в том, что отношения не должны носить характер вложений, т.е. никакое отношение не может быть определено как член другого отношения. Целью введения любой нормальной формы является предотвращение разного рода нарушений нормального функционирования (аномалий обновления) в результате корректировок. Порядок записей в отношении произволен. Недопустимо наличие в отношении двух записей с одинаковыми ключами. Часто вместо термина отношение используется термин таблица или реляционная таблица, в которой кортеж есть строка, каждый столбец соответствует домену. В математическом понимании отношение представляет собой подмножество декартова произведения доменов. Декартовым произведением k-доменов (D1,D2,D3,…,Dk), которое обозначается (D1*D2*D3*…*Dk), называется множество всех кортежей вида (V1,V2,V3,…,Vk) длины k, таких, что V1 принадлежит D1, V2 D2, V3 D3, …, Vk Dk. Фундаментальные свойства отношений 1. Отсутствие кортежей-дубликатов. В классической теории множеств, по определению, каждое множество состоит из различных элементов. Так как отношение определяется как множество кортежей, следовательно оно не может содержать кортежей-дубликатов. Из этого свойства вытекает наличие у каждого отношения так называемого первичного ключа – набора атрибутов, значения которых однозначно определяют кортеж отношения. Для каждого отношения, по крайней мере, полный набор его атрибутов обладает этим свойством. Однако при формальном определении первичного ключа требуется обеспечение его “минимальности”, т.е. в набор атрибутов первичного ключа не должны входить такие атрибуты, которые можно отбросить без ущерба для основного свойства, – однозначно определять кортеж. Понятие первичного ключа является исключительно важным в связи с понятием целостности баз данных. 2. Отсутствие упорядоченности кортежей. Отсутствие требования к поддержанию порядка на множестве кортежей отношения дает дополнительную гибкость СУБД при хранении баз данных во внешней памяти и при выполнении запросов к базе данных. Это не противоречит тому, что при формулировании запроса к БД можно потребовать сортировки результирующей таблицы в соответствии со значениями некоторых столбцов. Такой результат, это, вообще говоря, не отношение, а некоторый упорядоченный список кортежей. 3. Отсутствие упорядоченности атрибутов. Атрибуты отношений не упорядочены, поскольку по определению схема
отношения есть множество пар имя атрибута, имя домена. Для ссылки на значение атрибута в кортеже отношения всегда используется имя атрибута. Это свойство теоретически позволяет, например, модифицировать схемы существующих отношений не только путем добавления новых атрибутов, но и путем удаления существующих атрибутов. Однако в большинстве существующих систем такая возможность не допускается, и хотя упорядоченность набора атрибутов отношения явно не требуется, часто в качестве неявного порядка атрибутов используется их порядок в линейной форме определения схемы отношения. 4. Атомарность значений атрибутов. Значения всех атрибутов являются атомарными. Это следует из определения домена как потенциального множества значений простого типа данных, т.е. среди значений домена не могут содержаться множества значений (отношения). Принято говорить, что в реляционных базах данных допускаются только нормализованные отношения или отношения, представленные в первой нормальной форме. Так как наиболее распространенной трактовкой реляционной модели данных является то, что реляционная модель состоит из трех частей, описывающих разные аспекты реляционного подхода: структурной части, манипуляционной части и целостной части вкратце, остановимся на каждой из них. В структурной части модели фиксируется, что единственной структурой данных, используемой в реляционных БД, является нормализованное n-арное отношение. В теории реляционных баз данных обычно выделяется следующая последовательность нормальных форм: первая нормальная форма (1NF); вторая нормальная форма (2NF); третья нормальная форма (3NF); нормальная форма Бойса-Кодда (BCNF) (правильнее было бы считать эту нормальную форму третьей, однако по историческим причинам третья ступень оказалась занятой к моменту изобретения BCNF, из-за чего она и получила нестандартное название); четвертая нормальная форма (4NF); пятая нормальная форма, или нормальная форма проекции-соединения (5NF или PJ/NF). Каждой нормальной форме соответствует некоторый определенный набор ограничений, и отношение находится в некоторой нормальной форме, если удовлетворяет свойственному ей набору ограничений. Примером является ограничение первой нормальной формы: значения всех атрибутов отношения должны быть атомарными. Основные свойства нормальных форм: каждая следующая нормальная форма в некотором смысле улучшает свойства предыдущей; при переходе к следующей нормальной форме свойства предыдущих нормальных форм сохраняются. Поскольку требование первой нормальной формы (1NF) является базовым требованием классической реляционной модели данных, мы будем считать, что исходный набор отношений уже соответствует этому требованию. Отношение R находится во второй нормальной форме (2NF) в том и только в том случае, когда находится в 1NF и каждый неключевой атрибут полностью зависит от первичного ключа. Неключевым атрибутом называется любой атрибут отношения, не входящий в состав первичного ключа. Отношение R находится в третьей нормальной форме (3NF) в том и только в том случае, если все неключевые атрибуты R взаимно независимы и полностью зависят от первичного ключа. В наших примерах, описывающих реляционные модели фирмы-поставщика и склада, все отношения находятся в 1NF, 2NF и 3NF. Отношение R находится в нормальной форме Бойса-Кодда (BCNF) в том и только в том случае, если каждый детерминант является ключом. Детерминантом называется любой атрибут, от которого полностью функционально зависит некоторый другой атрибут. Например, отношения ПОСТАВКИ и ТОВАР в модели склада, СОТРУДНИКИ, ПОСТАВКИ и ДОГОВОРА в модели фирмы-поставщика. Замечание: Легко заметить, что если в отношении имеется только один возможный ключ (являющийся первичным ключом), то это определение становится эквивалентным определению третьей нормальной формы. На практике третья нормальная форма схем отношений является достаточной в большинстве случаев и приведением к третьей нормальной форме процесс проектирования реляционной базы данных обычно заканчивается. Однако иногда процесс нормализации может быть продолжен. Манипуляционная часть реляционной модели состоит из операций запоминания и поиска данных. Эти операции делятся на две группы: операции на множествах (объединение, пересечение, разность, произведение) и реляционные операции (выбрать, спроецировать, соединить, разделить). Любой язык манипулирования данными, обеспечивающий все эти операции, является реляционно полным. В зависимости от способа формирования выражений языка его называют либо реляционной алгеброй, либо реляционным исчислением. Языки манипулирования данными, которые могут использоваться конечными пользователями в диалоговом режиме (т.е. не являются вложенными в язык программирования главной системы) часто называют языками запросов. В целостной части реляционной модели данных
фиксируются два базовых требования целостности, которые должны поддерживаться в любой реляционной СУБД. Первое требование называется требованием целостности сущностей. Объекту или сущности реального мира в реляционных БД соответствуют кортежи отношений. Для соблюдения целостности сущности достаточно гарантировать отсутствие в любом отношении кортежей с одним и тем же значением первичного ключа. Второе требование называется требованием целостности по ссылкам и является несколько более сложным. Очевидно, что при соблюдении нормализованности отношений сложные сущности реального мира представляются в реляционной БД в виде нескольких кортежей нескольких отношений. Атрибут, значения которого однозначно характеризуют сущности, представленные кортежами некоторого другого отношения (т.е. задают значения их первичного ключа) называется внешним ключом. Говорят, что отношение, в котором определен внешний ключ, ссылается на соответствующее отношение, в котором такой же атрибут является первичным ключом. Требование целостности по ссылкам, или требование внешнего ключа, состоит в том, что для каждого значения внешнего ключа должен найтись кортеж с таким же значением первичного ключа в отношении на которое ведется ссылка, либо значение внешнего ключа должно быть полностью неопределенным (т.е. ни на что не указывать). Для нашего примера на рис.5…… это означает, что если для товара указан код поставщика, то этот поставщик должен существовать. При обновлении ссылающегося отношения (вставке новых кортежей или модификации значения внешнего ключа в существующих кортежах) достаточно следить за тем, чтобы не появлялись некорректные значения внешнего ключа. При удалении кортежа из отношения, на которое ведет ссылка существуют три подхода, поддерживающих целостность по ссылкам. Первый подход заключается в том, что запрещается производить удаление кортежа, на который существуют ссылки (т.е. сначала нужно либо удалить ссылающиеся кортежи, либо соответствующим образом изменить значения их внешнего ключа). При втором подходе при удалении кортежа, на который имеются ссылки, во всех ссылающихся кортежах значение внешнего ключа автоматически становится неопределенным. Наконец, третий подход (каскадное удаление) состоит в том, что при удалении кортежа из отношения, на которое ведет ссылка, из ссылающегося отношения автоматически удаляются все ссылающиеся кортежи. В развитых реляционных СУБД обычно можно выбрать способ поддержания целостности по ссылкам для каждой отдельной ситуации определения внешнего ключа. Конечно, для принятия такого решения необходимо анализировать требования конкретной прикладной области.