- •1.1. Информация и сигналы
- •1.2. Информационные технологии и системы
- •База знаний;
- •Механизм вывода;
- •Интерфейс и пользователь.
- •1.3. Передача и оценка информации
- •1.4. Алгоритмы
- •2.1. Цели создания, назначение и структура еаис
- •2.2. Этапы развития еаис
- •2.3. Ведомственная интегрированная телекоммуникационная сеть
- •3.1. Общие принципы и органы управления
- •3.2. Правовые основы применения электронных документов и информационных технологий в таможенном деле и торговле
- •Глава 1. Общие положения.
- •Глава 2. Условия использования электронной цифровой подписи. Глава 3. Удостоверяющие центры.
- •Глава 4. Особенности использования электронной цифровой подписи. Глава 5. Заключительные и переходные положения.
- •3.3. Основные направления развития
- •4.1. Назначение и классификация вычислительных сетей
- •4.2. Физическая передающая среда для связи компьютеров
- •4.3. Эталонная модель взаимодействия вычислительных систем
- •4.4. Устройства организации взаимодействия в вычислительных сетях
- •4.5. Принципы управления и доступа в вычислительных сетях
- •4.6. Глобальная сеть Интернет
- •4.7. Параметры рабочих станций и вычислительных сетей
- •4.8. Контроль и восстановление
- •4.9. Средства вычислительных сетей таможенных органов
- •5.1. Размещение и организация
- •5.2. Понятия базы данных и системы управления базами данных
- •5.3. Файловая модель
- •5.4. Иерархическая и сетевая модели представления данных
- •5.5. Реляционная модель данных
- •5.6. Системы управления базами данных
- •5.7. Классификация и кодирование
- •5.8. Базы данных еаис
- •5.9. Информационно-поисковые системы
- •Август 14.08.2007
- •Январь 27.01.2007
5.5. Реляционная модель данных
Основные понятия
Длительное время до появления реляционных БД на практике преобладали иерархические и сетевые модели.
Считается, что впервые наиболее полное изложение реляционной модели сформулировал Е.Ф. Кодд в начале 70-х гг. [24, 38, 64]. К этому времени стало ясно, что при сложных структурах данных реализация новых запросов или введение новых логических связей в сетевых или иерархических БД требует довольно существенных доработок программного обеспечения. Указанный недостаток обусловлен тем, что в этих БД выбор необходимых записей производится с использованием указателей, через которые связаны записи. Предположим, что исходная иерархическая или сетевая БД содержит сведения о товарах, их ценах в разных поставках и информацию о производителях товаров, причем в графе исходной структуры данных нет пути между вершинами, сопоставленными производителям и их ценам товаров. Тогда при необходимости выбора из БД сведений о ценах товаров указанного производителя придется выполнить несколько
279
запросов и провести специальную обработку выбранных данных (скорей всего, для этого потребуется разработать дополнительный программный модуль). Если же было несколько производителей одного товара, то задача может оказаться невыполнимой.
Е.Ф. Кодд предложил представлять логическую модель данных в виде набора таблиц, которые получили название реляций, а сама модель - реляционной. При использовании этой модели по запросу пользователя из таблиц должна выбираться одна или несколько строк (столбцов), удовлетворяющих заданным требованиям. Кроме того, он предложил для обработки таблиц (в целях реализации запросов) применять механизм реляционной алгебры или реляционного исчисления.
В реляционной модели по запросу пользователя из таблиц должна выбираться одна или несколько строк (столбцов), удовлетворяющих заданным требованиям. Реляционная алгебра позволяет описывать процессы реализации запросов, манипулируя таблицами, а не отдельными данными. С некоторым допущением можно говорить, что пользователь реляционной БД, применяя реляционную алгебру, может при разработке процедур обработки запроса одной командой описать обработку целой таблицы или нескольких таблиц, в то время как в других БД для выполнения этого же запроса ему пришлось бы манипулировать множеством записей и, соответственно, использовать множество команд. Не менее важным свойством реляционных БД является возможность создания достаточно простых стандартных языковых средств формулирования и реализации любых запросов.
Базы данных, объектами которых являются связанные определенным образом таблицы, называют реляционными (от relation - связь, отношение). В реляционной БД таблицы (реляции) должны удовлетворять определенным требованиям.
-
Данные в ячейках таблицы должны быть структурно неделимыми. Каждая ячейка может содержать только один набор данных. Это свойство часто определяется как принцип информационной неделимости. Недопустимо, чтобы в ячейке таблицы реляционной модели содержалось более одного набора (порции) данных, что иногда называют информационным кодированием.
-
Столбцы должны размещаться в произвольном порядке, а данные каждого столбца должны быть однотипными.
-
Каждый столбец должен быть уникальным (недопустимо дублирование столбцов) и иметь уникальное наименование.
-
Строки размещаются в таблице в произвольном порядке.
Связанные отношениями таблицы взаимодействуют по принципу главная (master) - подчиненная (detail). Например, если имеются две таблицы, в одной из которых указаны наименования фирм таможенных брокеров и сведения об оформленных через них ГТД за некоторый период времени, а в другой - сведения о каждом таможенном брокере (адрес, номер и дата выдачи лицензии), то первая будет главной, а вторая - подчиненной. Часто главную таблицу называют родительской, а подчиненную - дочерней. Одна и та же таблица может быть главной по отношению к одной таблице БД и дочерней по отношению к другой.
280
В теории реляционных БД используется специфическая терминология. В таблице 5.3 приведены основные термины, используемые при работе с реляционными БД.
Таблица 5.3
Основные термины реляционной модели
Элемент модели |
Определение |
Отношение или реляция |
Таблица |
Атрибут |
Столбец таблицы |
Имя атрибута |
Заголовок столбца таблицы |
Кортеж |
Совокупность значений строки таблицы |
Домен |
Совокупность значений в столбце |
Область атрибута |
Множество, из которого берутся значения атрибута |
Пусть таблица-отношение R (рис. 5.16) содержит столбцы (атрибуты) с именами Aj, А2,..., Ап.
Рис. 5.16. Структура реляционной таблицы-отношения R
Множество значений атрибутов в j-м столбце образуют домен, а множество значений атрибутов в i-й строке образуют кортеж К..
Значение атрибута А. в клетке на пересечении i-й строки и j-ro столбца обозначим через ан.Тогда отношение R образуется множеством упорядоченных кортежей:номер кортежа^ = 1,2,..., п - номер домена.
В таблице 5.4 приведен пример реляции (таблицы), названной «Таможенный брокер», которая включает три домена и четыре кортежа. Домен 1 содержит наименование организации, домен 2 - номер лицензии, домен 3 -регион деятельности таможенного брокера. Каждый домен имеет по 4 значения, а каждый кортеж состоит из трех элементов.
281
Таблица
5.4
Отношение
«Таможеный брокер»
В реляционных БД, как и в других типах БД, для поиска нужных данных используются ключи.
Первичным ключом называют один или несколько атрибутов отношения, однозначно идентифицирующих каждый из кортежей отношения.
Если указать значение первичного ключа, то в таблице найдется только одна строка с указанным значением.
Если, например, отношение задано в виде табл. 5.2, то очевидно, что атрибут «Паспорт» будет первичным ключом: если задать любое из возможных значений этого атрибута, в таблице найдется только одна строка с заданным значением.
Как и в БД с рассматривавшимися выше моделями данных, в реляционной БД ключ называется простым, когда он состоит из одного атрибута, или составным, когда он состоит из нескольких атрибутов.
Таблица 5.4 «Таможенный брокер» является примером отношения, для которого первичный ключ состоит из двух атрибутов, т.е. является составным. При этом возможны два варианта первичного ключа: атрибуты «Наименование организации» и «Регион деятельности» либо «Номер лицензии» и «Регион деятельности». Если задать какой-нибудь из возможных номеров лицензии и название организации, то в таблице найдется не более одной строки с заданными значениями.
Вторичный ключ - это такой ключ, значения которого могут повторяться в нескольких строках-кортежах.
Он используется для того, чтобы выбирать из таблицы несколько строк, удовлетворяющих заданному значению вторичного ключа. Например, чтобы из табл. 5.2 выбрать фамилии сотрудников, занимающих определенную должность, в качестве вторичного ключа следует взять атрибут «Должность».
282
Таким образом, ключ будет вторичным, если хотя бы одному из его значений соответствуют две или более строки. Заметим, что некоторым значениям вторичного ключа может соответствовать всего одна строка.
Так, для табл. 5.4 любой отдельный атрибут будет вторичным ключом. Например, если задать значение атрибута «Номер лицензии» равным 107000/0003, в таблице будут найдены две строки с этим значением.
Нормализация таблиц-отношений
В реляционных БД существует также понятие внешнего ключа, с помощью которого устанавливаются связи между таблицами, т.е. такой ключ позволяет извлечь данные сразу из нескольких таблиц. Пусть имеется БД из трех таблиц, содержащая информацию о предприятиях-брокерах (на рис. 5.17 показаны только атрибуты этих таблиц). Составной ключ из атрибутов «Лицензия» и «ИНН» является внешним ключом для этой БД. Информация о предприятиях распределена по трем таблицам. Однако если задать значения лицензии и ИНН некоторого предприятия (т.е. задать значение внешнего ключа), то из других таблиц БД будет извлечена вся имеющаяся информация по соответствующему предприятию.
Для обеспечения целостности реляционной БД обычно требуется, чтобы внешний ключ некоторой таблицы, связь с которой устанавливается, являлся первичным для нее.
Таблицы реляционной БД должны обладать определенными свойствами: все строки должны быть уникальными (должен существовать первичный ключ для каждой таблицы); все строки одной таблицы должны иметь одинаковую структуру; имена столбцов должны быть различными, а значения их простыми (недопустимо несколько значений в одной клетке столбца) и т.п.
Рис. 5.17. Применение внешних ключей для связи отношений
Для обеспечения вышеуказанных свойств производится нормализация исходных таблиц, позволяющая устранить избыточность, обеспечить целостность и однократность ввода данных, исключить неоднозначность при их обработке [24, 64].
При разработке реляционной БД должен быть определен состав логически взаимосвязанных реляционных таблиц и состав атрибутов каждого отношения, обеспечивающий требования нормализации.
283
Выделяют следующие формы нормализованных таблиц:
-
первая нормальная форма (1НФ);
-
вторая нормальная форма (2НФ);
-
третья нормальная форма (ЗНФ);
- усиленная третья нормальная форма или нормальная форма Бойса-Кодда (БКНФ);
-
четвертая нормальная форма (4НФ);
-
пятая нормальная форма (5НФ).
Обычно при создании реляционной БД ее таблицы достаточно привести к третьей нормальной форме (ЗНФ или БКНФ).
При первой нормальной форме все атрибуты отношения должны быть простыми, т.е. иметь единственное значение в каждой строке.
Так, например, если фирма продает ЭВМ в двух вариантах исполнения и в прайс-листе, представленном в виде таблицы, столбец в строке с информацией о ЭВМ содержит обозначения сразу обоих вариантов, то таблица является ненормализованной, поскольку приводит к неоднозначности выполнения запросов. Преобразование к первой нормальной форме обычно приводит к представлению такой строки в виде нескольких строк или даже требует введения дополнительных таблиц. При нормализации стараются обеспечить неделимость значений атрибутов, которая означает, что содержащиеся в клетках таблицы значения не должны делиться на более мелкие. Например, если в строке некоторой таблицы атрибут содержит одновременно фамилию, имя и отчество сотрудника, следует разделить его на три атрибута - отдельно для фамилии, имени и отчества.
При второй нормальной форме все атрибуты отношения удовлетворяют требованиям ШФ и каждый неключевой атрибут функционально полно зависит от ключа. Атрибут А функционально зависит от атрибута В, если каждому значению А соответствует только одно значение В, т.е. во всех кортежах с одним и тем же значением атрибута А атрибут В также имеет одно и то же значение (записывается: А - > В). Если атрибут находится в функциональной зависимости от части составного ключа, то такая зависимость называется частичной. Полная функциональная зависимость означает, что ключ однозначно определяет неключевой атрибут и одному значению ключа соответствует только одно значение неключевого атрибута. Если ключ составной, то подобная зависимость должна выполняться на уровне всего ключа, а не какой-либо его части.
При третьей нормальной форме выполняются требования 1НФ и 2НФ, а каждый неключевой атрибут нетранзитивно зависит от ключа. Атрибут С зависит от атрибута А транзитивно, если для атрибутов А, В и С выполняются условия:
А->ВнВ->С.
Недостатком БД с нормализованными таблицами является то обстоятельство, что чем больше атрибутов требуется для описания предметной области, тем из большего числа таблиц будет состоять нормализованная БД, которые для больших систем могут содержать сотни объектов. Их одновременный анализ с учетом взаимосвязей человеку осуществить трудно, поскольку с увеличени-
284
ем числа нормализованных таблиц уменьшается целостное восприятие БД как системы взаимосвязанных данных. Другим недостатком нормализованной БД является необходимость при выполнении одного запроса считывать связанные данные из нескольких таблиц. Его выполнение требует просмотра нескольких таблиц, причем поиск может быть достаточно длительным, особенно когда таблицы имеют большой объем или параметры в БД и на диске фрагментированы. Замечено, что в ряде случаев ненормализованные данные, если они хранятся в одной таблице, отыскиваются быстрее, чем при поиске в нескольких связанных таблицах.
Типы полей
Поля - это основные элементы физической модели БД. Для хранения данных в каждой клетке таблицы отводится некоторое поле.
Одной из основных характеристик любого поля является его длина (выражается в символах или в знаках), т.е. количество единиц памяти ЭВМ, занимаемых полем. От длины поля зависит, сколько данных (символов) или какой величины число в нем сможет разместиться. Обычно длина поля измеряется в байтах.
Любое поле имеет имя, причем в одной таблице не может быть двух полей с одним и тем же именем. Кроме имени у поля есть еще свойство - подпись, которая представляет собой информацию, отображаемую в заголовке столбца. Ее нельзя путать с именем поля, хотя если подпись не задана, то в заголовке отображается имя поля. При этом разным полям можно задать одинаковые подписи.
База данных может содержать поля разных типов, которые имеют разное назначение и разные свойства. От типа зависит формат представления данных в поле, особенности обработки. Как правило, реляционная БД поддерживает следующие типы полей:
-
числовое поле служит для ввода числовых данных. Его длина и способ (формат) представления зависят от типа числа: целое, с плавающей запятой и др.;
-
поле для ввода дат или времени;
-
логическое поле предназначено для ввода логических данных, имеющих только два значения («Да» или «Нет»; «О» или «1» и т.п.). Длина этого поля всегда равна 1 байту, что достаточно для выражения логического значения;
-
поле для хранения значений денежных сумм (их можно хранить и в числовом поле, но в денежном формате работать удобнее). В этом случае ЭВМ при обработке различает различную валюту (рубли и копейки, фунты и пенсы, доллары и центы);
-
поле объекта OLE (Object Linking and Embedding - связывание и внедрение объектов) используется для хранения картинок, музыкальных клипов и видеоданных;
-
поле MEMO используется для хранения длинного текста (до нескольких тысяч символов). Особенность поля MEMO состоит в том, что реально в поле хранятся не данные, а только указатель места, где расположен текст;
285
7) поле Счетчик - числовое поле, но имеющее свойство автоматического наращивания. Если в базе есть такое поле, то при вводе новой записи в него автоматически записывается число, на единицу большее, чем значение того же поля в предыдущей записи. Это поле удобно для нумерации записей.
Операции с данными реляционной модели
В своей теории построения реляционных БД В.Ф. Кодд ввел понятия реляционной алгебры и реляционного исчисления. Фактически это два языка формулирования и реализации запросов пользователя [64].
Реляционная алгебра - процедурный язык обработки реляционных таблиц, предполагающий формулирование и реализацию запросов в виде последовательности шагов на основе операций этой алгебры.
Реляционное исчисление - непроцедурный язык создания запросов. Описание с помощью операторов реляционного исчисления содержит сам запрос и не определяет порядок действий при его реализации.
Операции реляционной алгебры применяются для формирования и реализации запросов пользователя. Для пополнения и корректировки данных в БД используются особые операции. Операция «включение» добавляет в таблицу новую строку (кортеж). Для выполнения такой операции требуется задать имя таблицы и указать значения атрибутов новой строки (при этом для нее должен существовать первичный ключ). Операция «удаление» позволяет удалить строку и ее выполнение требует задания имени таблицы и значения первичного ключа удаляемой строки. При удалении группы строк задается значение соответствующего вторичного ключа, а при обновлении осуществляется изменение значений атрибутов в строках. Для обновления требуется задать имя таблицы, значение первичного ключа для выбора обновляемой строки, а также указать имена атрибутов и их новые значения.
Основу реляционной алгебры составляют девять операций: объединение, пересечение, разность, произведение, выбор, создание проекций, соединение, деление и присвоение. Первые четыре, по сути, взяты из теории множеств и очень похожи на соответствующие операции над элементами множеств. Четыре следующие - особые операции. После выполнения операции в общем случае образуется новая таблица. Последняя операция (присвоение) используется для назначения имени новой таблице, полученной на основе других.
Рассмотрим основные операторы языка реляционной алгебры.
Объединение - выполняется над двумя отношениями (таблицами) и R2 с идентичной структурой. В результате операции объединения строится новое отношение R = R, U R,. Отношение R имеет тот же состав атрибутов и совокупность кортежей, как у исходных отношений. Причем в эту совокупность включается только один представитель от одинаковой пары строк исходных таблиц.
286
Пример
Пусть имеются исходные отношения R, «Данные по складу А» (табл. 5.5) и R2 «Данные но складу В» (табл. 5.6). Выполним операцию объединения R3 = R, U R2. Результат объединения (новая таблица R3) показан в табл. 5.7.
Таблица 5.5
Отношение R, «Данные по складу А»
Таблица 5.6
Отношение R2 «Данные по складу В»
Таблица 5.7
Результирующее отношение R
Хотя в исходных отношениях суммарно 8 кортежей (строк), в R3 всего 6 строк. В новом отношении R3 одинаковые кортежи К]2 и К21 представлены одним кортежем К32, а одинаковые кортежи Ки и К22 - кортежем К34.
287
Пересечение - выполняется над двумя отношениями R, и R2. Результирующее отношениесодержит одинаковые кортежи исходных таблиц (без дубликатов), и они имеет тот же состав атрибутов.
Пример
Выполним пересечение двух отношений R[ «Данные по складу А» (см. табл. 5.5) и R2 «Данные по складу В» (см. табл. 5.6). Результат пересечения приведен в табл. 5.8.
Таблица 5.8
Кортеж |
Товар |
Страна-производитель |
Получатель |
к11 |
Масло |
Китай |
ОАО «Шанс» |
к12 |
Сахар |
Куба |
ООО «Петров и К» |
Операция пересечения дала новое отношение, состоящее из двух кортежей. Это кортежи, которые содержатся в обоих пересекаемых отношениях (К( совпадает с кортежами К12 и К21, а К2 - с кортежами К14 и К22).
] Разность - выполняется над двумя совместимыми отношениями R,, R2
с идентичным набором атрибутов. В результате операции строится новое
отношение R = R, - R2 с тем же набором атрибутов, содержащее только те
кортежи первого отношения R(, которые не повторяются в отношении R2.
В рассматриваемом выше примере (см. табл. 5.5 и табл. 5.6) К12=К21 и К14=К22, поэтому в результате вычитания из R, («Данные по складу А») отношения R2 («Данные по складу В») получено отношение, представленное в табл. 5.9 и состоящее из строк, входящих в R,, но не входящих в R2.
Таблица 5.9
Результирующее отношение R = R1 - R2
Кортеж |
Товар |
Страна-производитель |
Получатель |
к11 |
Сахар |
Украина |
ООО «Петров и К» |
к13 |
Чайники |
Франция |
ООО «Престиж» |
к,3 |
Чайники |
Китай |
ООО «Корвет» |
288
Произведение выполняется над двумя отношениями R1 и R2 имеющи- ми в общем случае разный состав атрибутов: (а1, а2, ..., ап) и (р1, р2, .... рn)
соответственно. В результате операции образуется новое отношение
R = R1 х R2, которое включает все атрибуты исходных отношений (а1, а2
аn, р1, р2,..., рn). Результирующее отношение состоит из всевозможных соче- таний по два кортежа исходных отношений R, и R2. Операция аналогична
операции декартова произведения элементов двух множеств.
Пример
Пусть отношение R1 представлено в табл. 5.10, a R2 - в табл. 5.6. Таблицы отношений R1 и R2 содержат по три строки, поэтому после выполнения операции произведения R = R1 х R2 будет получено отношение из 9 строк (табл. 5.11). При этом количество столбцов будет равно суммарному числу столбцов исходных отношений - 5 (без столбца с номерами кортежей).
Возможно, что исходные R1 и R2 будут содержать одинаковые атрибуты (столбцы). Тогда оба столбца войдут в результирующее отношение, но одному из них надо будет изменить имя.
Таблица 5.10
Кортеж |
№ контракта |
Стоимость по контракту ($) |
к1 |
11 |
120 ООО |
к2 |
12 |
500 000 |
К3 |
13 |
800 000 |
Отношение R1
Кортеж |
Товар |
Страна-производитель |
Получатель |
№ контракта |
Стоимость по контракту ($) |
к1 |
Масло |
Китай |
ОАО «Шанс» |
11 |
120 000 |
К2 |
Сахар |
Куба |
ООО «Петров и К» |
12 |
500 000 |
к.3 |
Яблоки |
США |
ООО «Престиж» |
13 |
800 000 |
к4 |
Масло |
Китай |
ОАО «Шанс» |
13 |
800 000 |
К5 |
Сахар |
Куба |
ООО «Петров и К» |
11 |
120 000 |
к6 |
Яблоки |
США |
ООО «Престиж» |
12 |
500 000 |
к7 |
Масло |
Китай |
ОАО «Шанс» |
12 |
500 000 |
к8 |
Сахар |
Куба |
ООО «Петров и К» |
13 |
800 000 |
к3 |
Яблоки |
США |
ООО «Престиж» |
11 |
120 000 |
Операция произведения, как правило, используется в сочетании с другими операциями.
Выбор - выполняется над одним отношением R, из которого по заданному условию (предикату) осуществляется выборка подмножества кортежей. Результирующее отношение имеет ту же структуру, но число его кортежей
будет меньше или равно исходному.
Пример
Из таблицы 5.5 выбираются кортежи, содержащие информацию о товарах, получаемых ООО «Петров и К». В результате выполнения операции будет получено отношение R1 из двух кортежей (табл. 5.12).
Таблица 5.12
Отношение Rt"
Кортеж |
Товар |
Страна-производитель |
Получатель |
k13 |
Сахар |
Украина |
ООО «Петров и К» |
k14 |
Сахар |
Куба |
ООО «Петров и К» |
Для выполнения данной операции надо указать атрибуты и их значения, по которым будет производиться выбор. Языки СУБД для задания условий выбора допускают использование операторов сравнения: =, >, <, <, >= и их сочетаний «не=», «не >» и т.д., а также логических операторов И, ИЛИ. Их применение позволяет, например, выбирать из таблицы строки, в которых некоторый атрибут больше заданного значения.
Проекция - выполняется над одним отношением R.
Если операцию выбора можно рассматривать как операцию удаления ненужных строк, то проекцию - как удаление ненужных столбцов. Операция фор!МИ-рует новое отношение, содержащее только заданное подмножество атрибутов, являющееся частью исходного отношения R. Оно может содержать меньше кортежей, так как после отбрасывания части атрибутов и возможного исключения при этом первичного ключа могут образоваться кортежи, дублирующие друг друга, которые должны быть исключены.
Пример
Пусть исходным является отношение R3, представленное в табл. 5.7. Необходимо определить его проекцию на два атрибута - «Товар» и «Получатель». В полученном отношении R3' (табл. 5.13) будет два атрибута, но только пять строк, так как в исходных кортежах К31 и К34 заданные атрибуты имеют одинаковые значения.
290
Таблица 5.13
Результирующее отношение R3"
Товар |
Получатель |
Сахар |
ООО «Петров и К» |
Масло |
ОАО «Шанс» |
Чайники |
ООО «Престиж» |
Чайники |
ООО «Корвет» |
Яблоки |
ООО «Престиж» |
Соединение - выполняется для заданного условия соединения над двумя логически связанными отношениями. Исходные отношения R, и R2 имеют разные структуры, в которых есть одинаковые атрибуты - внешние ключи.
Операция соединения формирует новое отношение, структура которого является совокупностью всех атрибутов исходных отношений. Результирующие кортежи формируются объединением каждого кортежа из R, с кортежами R , для которых выполняется заданное условие, которым, как правило, являются одинаковые значения внешнего ключа в исходных отношениях. Возможны несколько вариантов этой операции.
Деление - выполняется над двумя отношениями R,h R2, имеющими в общем случае разные структуры и некоторые одинаковые атрибуты. В итоге завершения операции образуется новое отношение, структура которого получается исключением из множества атрибутов отношения R, и отношения R2. Результирующие строки не должны содержать дубликаты. Возможны несколько вариантов этой операции.
Рассмотренные выше операции в той или иной мере реализуются в средствах СУБД, обеспечивающих обработку реляционных таблиц. К таким средствам относятся средства запросов и другие языковые конструкции.
Развитие реляционного подхода привело к созданию реляционных языков, например, язык SQL, реализованный в большинстве СУБД. Кроме возможности выполнения операций реляционной алгебры он содержит полный набор операторов над строками: «включить», «удалить», «обновить», а также реализует арифметические операции и операции сравнения.
Реляционные модели имеют ряд достоинств, к которым относятся простота представления данных, минимальная избыточность данных при нормализации отношений. Кроме того, в них обеспечивается независимость приложений поль-
291
зователя от данных, допускающая включение или удаление отношений, изменение атрибутного состава отношений.
Недостатком реляционной модели является то обстоятельство, что нормализация ее данных приводит к значительной их фрагментации, тогда как во многих реальных задачах необходимо объединение фрагментированных данных.
К числу реляционных баз относятся Dbase фирмы dBASE Inc., FoxPro фирмы Fox Software (затем - корпорации Microsoft), Clipper корпорации Nantucket (затем - Computer Associates), Paradox фирмы Borland (затем - фирмы Corel), DB2 корпорации IBM, Rdb/VMS корпорации Digital Equipment, ORACLE корпорации Oracle, SYBASE компании Sybase Inc., Microsoft Access корпорации Microsoft и др.,
Правила Кодда
Е.Ф. Коддом были сформулированы двенадцать правил, которые определяют требования к СУБД.
-
Явное представление данных. Информация должна быть представлена в виде данных, хранящихся в ячейках.
-
Гарантированный доступ к данным. К каждому элементу данных должен быть обеспечен доступ с помощью комбинации имени таблиц, первичного ключа строки и имени столбца.
-
Полная обработка неопределенных значений. Неопределенные значения, отличающиеся от любого определенного значения, должны поддерживаться для всех типов данных при выполнении любых операций.
-
Доступ к описанию БД в терминах реляционной модели. Словарь данных активной БД должен сохраняться в форме таблицы, а СУБД поддерживать доступ к нему при помощи стандартных языковых средств доступа к таблицам.
-
Полнота подмножества языка. Язык управления данными и язык определения данных должны поддерживать все операции доступа к данным и быть единственным средством такого доступа, за исключением операций низшего уровня (см.правило 12).
-
Возможность обновления представлений. Все представления, подлежащие обновлению, должны быть для этого доступны.
-
Наличие высокоуровневых операций управления данными. Операции вставки, обновления и удаления должны применяться к таблице в целом.
-
Физическая независимость данных. Прикладные программы не должны зависеть от используемых способов хранения данных на носителях и методов обращения к ним.
-
Логическая независимость данных. Прикладные программы не должны зависеть от логических ограничений.
-
Независимость контроля целостности. Все необходимое для поддержания целостности данных должно храниться в словаре данных.
-
Дистрибутивная независимость. Реляционная БД должна быть переносимой и способной к распространению.
292
12. Согласование языковых уровней. Если реляционная СУБД допускает использование низкоуровневого языка доступа (элемент доступа - запись), последний не должен совершать операций, противоречащих требованиям правил безопасности и поддержания данных, которые соблюдаются языком более высокого уровня.
Все это Е.Ф. Кодд суммировал в обобщающем правиле: для того чтобы систему можно было квалифицировать как реляционную СУБД, она должна использовать для управления БД исключительно реляционные функции.