Основные понятия реляционной теории баз данных. Формализация отношений. Элементы теории реляционных баз данных: функциональные зависимости и декомпозиция без потерь Теория реляционных баз данных

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

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

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

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

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

  • все данные концептуально представляются как упорядоченное набор строк и столбцов, называемых отношением;
  • все данные являются скалярными;
  • строка данных называется кортежем, количество кортежей называется кардинальным числом;
  • каждый столбец в кортеже называется атрибутом, количество атрибутов называется степенью отношения;
  • отсутствие информации описывается значением NULL;
  • потенциальный ключ K для отношения R - это подмножество множества атрибутов R, всегда обладающее свойством уникальности (т.е. нет двух кортежей в отношении R с одинаковым значение K) и свойством не избыточности (т.е. никакое из подмножеств K не обладает свойством уникальности). Потенциальный ключ, состоящий из более чем одного атрибута, называется составным, а из одного - простым. Первичный ключ - это потенциальный ключ, по которому физически упорядочены кортежи в отношении.
  • внешний ключ определяется следующим образом. Пусть R2 - некоторое отношение. Тогда внешний ключ FK в отношении R2 - это такое подмножество множества атрибутов R2, что существует отношение R1 с потенциальным ключом K и значение FK в любом кортеже R2 всегда совпадает со значением K некоторого кортежа в R1. Ограничение, по которому значения внешнего ключа должны быть адекватны значениям соответствующего потенциального ключа, называют ссылочным ограничением. Соответственно, под ссылочной целостностью понимают требование того, чтобы в базе данных не было нарушений ссылочных ограничений.

Следующие операции допустимыми над данными в реляционной модели:

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

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

Так что если вы собираетесь начать свое обучение в этой области или вам просто стало интересно, прошу под кат.

Реляционная база данных

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

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

Таблица PRODUCTS

ID NAME COMPANY PRICE
123 Печеньки ООО ”Темная сторона” 190
156 Чай ООО ”Темная сторона” 60
235 Ананасы ОАО ”Фрукты” 100
623 Томаты ООО ”Овощи” 130

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

Для ясности, теперь введем строгое определение отношения.

Пусть даны N множеств D1,D2, …. Dn (домены), отношением R над этими множествами называется множество упорядоченных N-кортежей вида , где d1 принадлежит D1 и тд. Множества D1,D2,..Dn называются доменами отношения R.
Каждый элемент кортежа представляет собой значение одного из атрибутов, соответствующего одному из доменов.

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

Таблица DRIVERS

Видно, что в организации может быть несколько водителей, и чтобы однозначно идентифицировать водителя необходимо и значение из столбца “Название организации” и из “Имя водителя”. Такой ключ называется составным.

В реляционной БД таблицы взаимосвязаны и соотносятся друг с другом как главные и подчиненные. Связь главной и подчиненнной таблицы осуществляется через первичный ключ (primary key) главной таблицы и внешний ключ (foreign key) подчиненной таблицы.
Внешний ключ это атрибут или набор атрибутов, который в главной таблице является первичным ключем.

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

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

Основные восемь операций реляционной алгебры были предложены Э.Коддом .
  • Объединение
  • Пересечение
  • Вычитание
  • Декартово произведение
  • Выборка
  • Проекция
  • Соединение
  • Деление
Первая половина операций аналогична таким же операциям над множествами. Часть операций можно выразить через другие операции. Рассмотрим большую часть операций с примерами.

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

Таблица SELLERS

ID SELLER
123 OOO “Дарт”
156 ОАО ”Ведро”
235 ЗАО “Овоще База”
623 ОАО ”Фирма”

Условимся, что в этой таблице ID это внешний ключ, связанный с первичным ключом таблицы PRODUCTS.

Для начала рассмотрим самую простую операцию - имя отношения. Её результатом будет такое же отношение, то есть выполнив операцию PRODUCTS, мы получим копию отношения PRODUCTS.

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

Синтаксис операции:
π (ID, PRICE) PRODUCTS

В условии выборки мы можем использовать любое логическое выражение. Сделаем еще одну выборку с ценой больше 90 и ID товара меньше 300:

σ (PRICE>90 ^ ID<300) PRODUCTS

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

Получим декартово произведения таблиц PRODUCTS и SELLERS.
Синтаксис операции:

PRODUCTS × SELLERS
Можно заметить, что у двух этих таблиц есть одинаковый домен ID. В подобной ситуации домены с одинаковыми названиями получают префикс в виде названия соответствующего отношения, как показано ниже.
Для краткости перемножим не полные отношения, а выборки с условием ID<235

(цветом выделены одни и те же кортежи)

PRODUCTS.ID NAME COMPANY PRICE SELLERS.ID SELLER
123 Печеньки ООО ”Темная сторона” 190 123 OOO “Дарт”
156 Чай ООО ”Темная сторона” 60 156 ОАО ”Ведро”
123 Печеньки ООО ”Темная сторона” 190 156 ОАО ”Ведро”
156 Чай ООО ”Темная сторона” 60 123 OOO “Дарт”

Для примера использования этой операции представим себе необходимость выбрать продавцов с ценами меньше 90. Без произведения необходимо было бы сначала получить ID продуктов из первой таблицы, потом по этим ID из второй таблицы получить нужные имена SELLER, а с использованием произведения будет такой запрос:

π (SELLER) σ (RODUCTS.ID=SELLERS.ID ^ PRICE<90) PRODUCTS × SELLERS

В результате этой операции получим отношение:

SELLER
ОАО ”Ведро”
Соединение и естественное соединение
Операция соединения обратна операции проекции и создает новое отношение из двух уже существующих. Новое отношение получается конкатенацией кортежей первого и второго отношений, при этом конкатенации подвергаются отношения, в которых совпадают значения заданных атрибутов. В частности, если соединить отношения PRODUCTS и SELLERS, этими атрибутами будут атрибуты доменов ID.

Также для понятности можно представить соеднинение как результат двух операций. Сначала берется произведение исходных таблиц, а потом из полученного отношения мы делаем выборку с условием равенства атрибутов из одинаковых доменов. В данном случае условием явлется равенство PRODUCTS.ID и SELLERS.ID.

Попробуем соединить отношения PRODUCTS и SELLERS и получим отношение.

PRODUCTS.ID NAME COMPANY PRICE SELLERS.ID SELLER
123 Печеньки ООО ”Темная сторона” 190 123 OOO “Дарт”
156 Чай ООО ”Темная сторона” 60 156 ОАО ”Ведро”
235 Ананасы ОАО ”Фрукты” 100 235 ЗАО “Овоще База”
623 Томаты ООО ”Овощи” 130 623 ОАО ”Фирма”

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

Синтаксис операции:
PRODUCTS ⋈ SELLERS;

Получится такое отношение:

PRODUCTS.ID NAME COMPANY PRICE SELLER
123 Печеньки ООО ”Темная сторона” 190 OOO “Дарт”
156 Чай ООО ”Темная сторона” 60 ОАО ”Ведро”
235 Ананасы ОАО ”Фрукты” 100 ЗАО “Овоще База”
623 Томаты ООО ”Овощи” 130 ОАО ”Фирма”
Пересечение и вычитание.
Результатом операции пересечения будет отношение, состоящее из кортежей, полностью входящих в состав обоих отношений.
Результатом вычитания будет отношение, состоящее из кортежей, которые являются кортежами первого отношения и не являются кортежами второго отношения.
Данные операции аналогичны таким же операциям над множествам, так что, я думаю, нет необходимости подробно их расписывать.
Источники информации
  • Основы использования и проектирования баз данных - В. М. Илюшечкин
  • курс лекций Introduction to Databases - Jennifer Widom, Stanford University

Буду благодарен за аргументированные замечания

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

СУБД – системы управления базами данных – это специализированное ПО, призванное, ожидаемо, управлять базами данных. Достигается это взаимодействием с пользователем с одной стороны и собственно с базой данных с другой.

СУБД общего назначения должна позволять определение, создание, изменение, администрирование и произведение запросов к БД.

В качестве примеров СУБД можно назвать такие широко известные пакеты, как

  • MySQL
  • PostgreSQL
  • Microsoft SQL Server
  • Oracle
  • IBM DB2
  • Microsoft Access
  • SQLite

Базы данных обычно не являются переносимыми между различными СУБД, однако возможно взаимодействие между СУБД (и с пользовательским ПО) с использованием различных стандартов, таких, как SQL, ODBC или JDBC.

СУБД часто классифицируются по поддерживаемой ими модели данных. С 1980х годов, практически все популярные СУБД поддерживают реляционную модель данных, представленную стандартом языка запросов SQL (хотя последние годы набирает популярность NoSQL).

Итак, основные задачи, выполняемые СУБД включают

Определение схемы данных Создание, изменение и удаление структур, которые определяют организацию всех остальных данных в БД Изменение данных Добавление, изменение и удаление самих данных Получение данных Предоставление информации в форме, пригодной к непосредственному использованию другими приложениями. Администрирование БД Регистрация и управление пользователями, обеспечение безопасности данных, поддержание целостности, восстановление информации, управление одновременным доступом, слежение за производительностью и т.п.

СУБД широко используются в банковском деле, транспортных компаниях, учебных заведениях, телекоммуникациях, для управления финансовой информацией и человеческими ресурсами. Ну и не стоит забывать, что большинство бэкэндов Web использует ту или иную СУБД.

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

Модели БД

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

  • Иерархическая, или навигационная модель
  • Сетевая модель

Иерархическая модель широко использовалась в СУБД, поставляемых компанией IBM в 1960х. Основная идея заключается в том, что запись в такой БД может иметь несколько “дочерних” и одну “родительскую”. В целом, это подозрительно похоже на иерархическую файловую систему. Чтобы получить запись в такой БД, часто необходим проход по всему дереву.

Сетевая модель – более гибкая версия того же подхода. Она позволяет иметь записи несколько “родительских”. Эта модель, появившись в начале 1970х, не получила широкого распространения, и вскоре была вытеснена реляционной моделью.

В 1970х Эдгаром Коддом (сотрудник IBM) была предложена реляционная модель, которая значительно облегчила задачу поиска информации в БД. О реляционной модели можно думать как о “таблицах”, в которых “строки” – это записи в БД. Записи в реляционной БД так же называются кортежами (tuples), а группы записей (“таблицы”) – отношениями (relations). Реляционная модель способна выразить связи иерархической и сетевой моделей, и добавляла собственные связи, соответствующие табличной модели.

На основе предложений Кодда к середине 1970х была разработана СУБД System R, а к концу в ней появилась поддержка стандартизованного языка запросов SQL.

В 1980х, с появлением объектно-ориентированного программирования, все чаще возникали сложности в трансляции объектов на реляционную модель. В конце концов это привело к появлению подходов NoSQL и NewSQL, которые на текущий момент только развиваются. Примерами реализации NoSQL подхода могут быть т.н. документо-ориентированные БД, построенные на основе XML. Основное преимущество NoSQL – высокая горизонтальная масштабируемость, т.е. возможность увеличивать производительность за счет добавления серверов. С появлением облачных технологий, NoSQL стал особенно востребован.

Тем не менее, реляционная модель пока остается самой распространенной, поэтому более подробно остановимся именно на ней.

Реляционная модель

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

Реляционная модель требует строгого определения структуры данных, хранимых в БД, то есть отношения и атрибуты для данной БД фиксированы.

Введем некоторые определения.

Домен Множество, содержащее полный набор всех возможных значений некоторой переменной. Домены часто так же называют типом данных . Атрибут Упорядоченная пара названия атрибута и домена \(D_j\) . Кортеж Конечное упорядоченное множество \((d_1, d_2, \ldots, d_n)\) Заголовок (схема) отношения Кортеж \((A_1, A_2, \ldots, A_n)\) , где \(A_j\) – атрибуты. Значение атрибута Конкретное значение, принадлежащее домену атрибута. Тело отношения Множество кортежей , где \(d^i_j \in D_j\) , \(D_j\) – домены. Запись Кортеж \((d^i_1, d^i_2, \ldots, d^i_n)\) при фиксированном \(i\) . Отношение Совокупность заголовка отношения и тела отношения. Схема базы данных Множество схем всех отношений, входящих в БД.

Можно представить отношение в виде таблицы. Тогда тело отношения – это тело таблицы, заголовок отношения – заголовок таблицы, атрибуты – названия столбцов, записи – строки, а значения атрибутов находятся в ячейках:

\(A_1\) \(A_2\) \(\ldots\) \(A_n\) ← Заголовок
\(d^1_1\) \(d^1_2\) \(\ldots\) \(d^1_n\) ← Запись
\(d^2_1\) \(d^2_2\) \(\ldots\) \(d^2_n\) ← Запись
\(\ldots\) \(\ldots\) \(\ldots\) \(\ldots\) ← Запись
\(d^m_1\) \(d^m_2\) \(\ldots\) \(d^m_n\) ← Запись

Реляционная модель налагает следующие дополнительные требования на отношения:

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

Функциональная зависимость множество атрибутов \(B\) функционально зависит от множества атрибутов \(A\) (записывается \(A\rightarrow B\) ), если для любых двух записей, имеющих одинаковые значения \(A\) , их значения \(B\) совпадают. Иначе, каждому значению \(A\) соответствует единственное значение \(B\) (не обязательно уникальное, именно единственное).

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

В качестве более привычного примера функциональной зависимости, можно привести математическое определение функции. Для функции, каждому значению аргументов соответсвтует единственное значение функции. Обратное в общем случае неверно, например, для функции \(y = sin(x)\) любому значению \(y\) из области определения \(1\geq y \geq -1\) соответствует бесконечное множество значений \(x\) , но для каждого значения \(x\) есть ровно одно значение \(y\) , т.о. \(x \to y\) . Заметим, что понятие функциональной зависимости так же применимо и к функциям многих переменных. Для них, значение функции функционально зависит от всех аргументов одновременно . Скажем, для функции \(z = f(x,y)\) выполняется ФЗ \((x,y)\to z\) , или сокращенно, \(xy\to z\) .

Отношения в данном контексте можно рассматривать как некие табличные или дискретные функции.

Работа с ФЗ

Существуют определенные формальные правила работы с ФЗ отношения.

Формальные правила тесно связаны с понятиями замыкания и неприводимой ФЗ .

Аксиомы Армстронга

Существуют правила вывода новых ФЗ из существующих, называемые аксиомами Армстронга .

Аксиомы Армстронга

  1. Правило рефлексивности: если \(B \subset A\) , то \(A\rightarrow B\)
  2. Правило дополнения: если \(A\rightarrow B\) , то \(AC\rightarrow BC\)
  3. Правило транзитивности: если \(A\rightarrow B\) и \(B\rightarrow C\) , то \(A\rightarrow C\)

Из этих аксиом так же могут быть выведены следующие дополнительные правила:

  1. Правило самоопределения: \(A\rightarrow A\)
  2. Правило декомпозиции: Если \(A\rightarrow BC\) , то \(A\rightarrow B\) и \(A\rightarrow C\)
  3. Правило объединения: Если \(A\rightarrow B\) и \(A\rightarrow C\) , то \(A\rightarrow BC\)
  4. Правило композиции: Если \(A\rightarrow B\) и \(C\rightarrow D\) , то \(AC\rightarrow BD\)

Можно заметить, что, вследствие правила рефлексивности, любое множество атрибутов \(A\) подразумевает ФЗ вида \(A\to A\) . Такие ФЗ, а так же следующие из них, не представляют интереса, и называются тривиальными.

Тривиальная функиональная зависимость ФЗ \(A \to B\) , такая, что \(B \subset A\) .

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

Замыкание множества ФЗ Замыканием множества ФЗ называется такое множество ФЗ, которое включает все ФЗ исходного множества, а так же все подразумеваемые ими. Другими словами, для отношения \(R\) , обладающего функциональными зависимостями \(S\) , замыканием \(S^+\) называется множество всех ФЗ, возможных для \(R\) , исходя из \(S\) .

Как правило, требуется установить, будет ли некая ФЗ \(X\rightarrow Y\) следовать из данного множества ФЗ \(S\) . Оказывается, это возможно тогда и только тогда, когда множество атрибутов \(Y\) является подмножеством замыкания атрибутов \(X^+\) в \(S\) .

Замыкание атрибутов Замыканием \(X^+\) атрибутов \(X\) по множеству ФЗ \(S\) называется множество всех атрибутов, которые функционально зависят от какого-либо подмножества \(X\) .

Для вычисления замыкания множества атрибутов \(X^+\) по множеству ФЗ \(S\) существует следующее правило: для каждой ФЗ \(A\rightarrow B\) в \(S\) , если \(A \subset X^+\) , то и \(B \subset X^+\) , причем достаточно начать с предположения, что \(X^+ = X\) .

Следует заметить, что для любого замыкания \(X^+\) , существуют ФЗ вида \(X \to B\) , где \(B \subset X^+\) , таким образом, замыкания всех атрибутов отношения по его ФЗ описывают замыкание ФЗ этого отношения.

Это правило используется для вычисления неприводимого множества ФЗ, эквивалентного данному (в смысле эквивалентности их замыканий). Уменьшение количества ФЗ при сохранении замыкания (и, следовательно, внутренней логики, описываемой ФЗ) является важным шагом в проектировании БД.

Множество ФЗ называется неприводимым, если:

  1. Правая часть каждой ФЗ содержит только один элемент
  2. Ни один атрибут ни одной левой части ФЗ множества не может быть удален без изменения замыкания
  3. Ни одна ФЗ множества не может быть удалена без изменения замыкания.

Для любого множества ФЗ существует хотя бы одно эквивалентное неприводимое множество. Такое множество называется минимальным покрытием .

РМД была придумана и разработана Э.Кодд в 1970г. Его последователь Дейт.

В основе РМД лежит понятие теоретико-множественного отношения .

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

Сущность - это объект любой природы, данные о котором хранятся в БД.

Атрибут – это свойство характеризующее сущность.

Пусть дано D 1 ,D 2 ,…,D n –n-множеств,

Тогда отношение R-это множество упорядоченных кортежей d i єD i , гдеd i -атрибут,D i –домен.

Пример:

Сотрудник

Арностью отношений (степенью) является общее количество атрибутов в отношении.

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

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

Пр: имеется множество

D 1* D 2* D 3 ={(A,B,3),(A,B,4),(A,B,5),(A,C,3),(A,C,4),(A,C,5),(2,B,3),(2,B,4),(2,B,5),(2,C,3),(2,C,4),

Схемой отношений называется конечное множество имен атрибутов отношения.

Домен – множество всех возможных значений какого-либо атрибута отношения.

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

Подмножество атрибутов Р отношения R называется потенциальным ключом (возможным ключом), если выполняются следующие два условия:

    в отношении R не может быть двух различных кортежей с одинаковым значениям (это называется свойством уникальности).

    никакое подмножество Р не обладает свойством уникальности.

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

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

Ключи обычно используются для следующих целей:

    исключение дублирования значений ключевых атрибутов.

    упорядочивание кортежей.

    ускорение работы с кортежами отношений.

    организация связывания таблиц.

Пусть в отношении R1 имеется неключевой атрибутA, значение которого является значением ключевого атрибутаBдругого отношенияR2, тогда говорят что атрибутAотношенияR1 являетсявнешним ключом .

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

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

    каждая запись в таблице должна быть уникальна.

    значение элементов одного столбца должны принадлежать одному и тому же домену.

    имена столбцов должны быть уникальными.

ADD – данная операция сообщает об ошибках в следующих случаях:

    Добавляемый кортеж не соответствует схеме отношения.

    Некоторое значение кортежа не принадлежит соответствующему домену.

    Кортеж совпадает по ключу с кортежем, уже имеющемся в отношении.

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

CH дляданной операции все ошибки добавления и удаления имеют место.

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

ФГБОУ ВПО КУРГАНСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ

Кафедра алгебры, геометрии и методики преподавания математики

КУРСОВАЯ РАБОТА

Дисциплина Программное обеспечение на ЭВМ

Теория реляционных баз данных

Студент группы 5940 С

Специальность Математика

Фёдорова Е. А.

Руководитель

Ст. преподаватель: Тетюшева С.Г.

Курган 2013

Введение

Глава 1. Теория реляционных баз данных

1 Реляционные базы данных

2 Понятие таблицы (отношения), поля, записи, домена, ключа (первичного, составного первичного и внешнего)

3 Имена и типы полей

4 Свойства полей в зависимости от типа данных полей

5 Основные требования к реляционной таблице

6 Метаданные

Глава 2. Таблицы. Индексы

1 Понятие главной и дочерней таблиц

2 Виды отношений между таблицами

3 Понятие ссылочной целостности

5 Сортировка записей

Заключение

Введение

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

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

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

Данная тема направлена на формирование представления о базах данных (БД), возможностях систем управления базами данных (СУБД) и их использовании.

Глава 1. Теория реляционных баз данных

.1 Реляционные базы данных

Информация в базах данных может быть организована по разному. Чаще всего используется табличный способ.

Базы данных с табличной формой организации называются реляционными БД.

В чем же их преимущество?

Главное достоинство таблиц - в их понятности. С табличной информацией мы имеем дело практически каждый день. Загляните, например в свой дневник: расписание занятий там представлено в виде таблицы, ведомость с оценками за четверти имеет табличный вид. Когда мы приходим на вокзал, смотрим расписание электричек. Какой вид оно имеет? Это таблица! А еще есть таблица футбольного чемпионата. И журнал учителя, куда он ставит вам оценки - тоже таблица.

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

В реляционных БД строка таблицы называется записью, а столбец - полем. В общем виде это выглядит так:

Например, одна запись о каком либо объекте - это информация об одной игрушке. В реляционных БД строка таблицы называется записью, а столбец - полем. В общем виде это выглядит так:

Каждое поле таблицы имеет имя. Например, в таблице «Игрушки» имена полей такие: НАЗВАНИЕ, МАТЕРИАЛ, ЦВЕТ, КОЛИЧЕСТВО.

Одна запись содержит информацию об одном объекте той реальной системы, модель которой представлена в таблице.

Например, одна запись о каком либо объекте - это информация об одной игрушке.

1.2 Понятие таблицы (отношения), поля, записи, домена, ключа (первичного, составного первичного и внешнего)

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

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

Домен имеет уникальное имя (в пределах базы данных).

Домен определен на некотором простом типе данных или на другом домене.

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

Домен несет определенную смысловую нагрузку.

Например, домен , имеющий смысл "возраст сотрудника" можно описать как следующее подмножество множества натуральных чисел:

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

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

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

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

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

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

Внешний ключ (foreign key) - ключевой элемент подчиненной (внешней, дочерней) таблицы, значение которого совпадает со значением первичного ключа главной (родительской) таблиц.

.3 Имена и типы полей

Каждое поле в таблице должно иметь уникальное имя, удовлетворяющее соглашениям об именах объектов в Access. Оно является комбинацией из букв, цифр, пробелов и специальных символов, за исключением точки (.), восклицательного знака ("), надстрочного знака (") и квадратных скобок (). Имя не может начинаться с пробела и содержать управляющие символы с кодами ASCII от 00 до 31. Максимальная длина имени - 64 символа.

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

Текстовый - тип данных по умолчанию. Текст или цифры, не участвующие в расчетах. Число символов в поле не должно превышать 255. Максимальное число символов, которое можно ввести в поле, задается в свойстве Размер поля . Пустые символы в неиспользуемой части поля не сохраняются.

Поле MEMO Длительный текст, например, некоторое описание или примечание. Максимальная длина - 65 535 символов.

Числовой . Числовые данные, используемые в математических вычислениях. Конкретные варианты числового типа и их длина задаются в свойстве Размер поля . Поле может иметь размер 1, 2, 4 или 8 байт (16 байт- только если для свойства Размер поля задано значение Код репликации ). Для проведения денежных расчетов определен другой тип данных - Денежный

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

Дата/время . Значения даты или времени, относящиеся к годам с 100 по 9999 включительно Длина поля 8 байт

Логический . Логические данные, которые могут иметь одно из двух возможных значений: Да/Нет, Истина/Ложь, Вкл./Выкл. Длина поля 1 бит.

Поле объекта OLE . Объект (например, электронная таблица Microsoft Excel, документ Microsoft Word, рисунок, звукозаписи или другие данные и двоичном формате), связанный или внедренный и таблицу Access. Длина поля - не более 1 Гбайт (ограничивается объемом диска).

Гиперссылка . Адрес гиперссылки, включающий путь к файлу на жестком диске в локальной сети (в формате UNC) или адрес страницы в Internet или intranet (URL). Кроме того, адрес может включать текст, выводимый в поле или в элементе управления, дополнительный адрес - расположение внутри файла или страницы, подсказку - текст, отображаемый в виде всплывающей подсказки. Если щелкнуть мышью на поле гиперссылки, Access выполнит переход на соответствующий объект, документ, Web-страницу или другое место назначения. Длина каждой из частей гиперссылки - не более 2048 знаков. Для полей типа OLE, MEMO и Гиперссылка не допускается сортировка и индексирование.

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

1.4 Свойства полей в зависимости от типа данных полей

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

Тип поля - определяет тип данных, которые могут содержаться в данном поле.

Размер поля - определяет предельную длину (в символах) данных, которые могут размещаться в данном поле.

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

Маска ввода - определяет форму, в которой вводятся данные а поле (средство автоматизации ввода данных).

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

Значение по умолчанию - то значение, которое вводится в ячейки поля автоматически (средство автоматизации ввода данных).

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

Сообщение об ошибке - текстовое сообщение, которое выдается автоматически при попытке ввода в поле ошибочных данных.

Обязательное поле - свойство, определяющее обязательность заполнения данного поля при наполнении базы.

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

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

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

Таблицы баз данных, как правило, допускают работу с гораздо большим количеством разных типов данных. Так, например, базы данных Microsoft Access работают со следующими типами данных.

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

· Числовой - тип данных для хранения действительных чисел.

· Поле Мемо - специальный тип данных для хранения больших объемов текста (до 65 535 символов). Физически текст не хранится в поле. Он храниться в другом месте базы данных, а в поле храниться указатель на него, но для пользователя такое разделение заметно не всегда.

· Дата/время - тип данных для хранения календарных дат и текущего времени.

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

· Счетчик - специальный тип данных для уникальных (не повторяющихся в поле) натуральных чисел с автоматическим наращиванием. Естественное использование - для порядковой нумерации записей.

· Логический - тип для хранения логических данных (могут принимать только два значения, например Да или Нет).

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

.5 Основные требования к реляционной таблице

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

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

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

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

· При выполнении операций над данными не должно возникать трудностей.

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

· Отношение представляется в виде полоски, содержащей имена всех атрибутов. Имя отношения пишется над ней.

· Первичный ключ отношения должен быть выделен жирной рамкой.

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

1.6 Метаданные

Классификация и структура метаданных

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

Метаданные описания контента. Контентные метаданные охватывают описание всех аспектов данного информационного объекта, как отдельной сущности. Иногда их дополнительно подразделяют на структурные и описательные.

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

Метаданные состоят из элементов, объединенных в наборы. Широко известным примером набора элементов метаданных является т.н. Дублинское ядро (Dublin Core, DC). Такие наборы разрабатываются с различными целями (например, для описания различных информационных объектов) различными организациями, которые предпринимают в случае целесообразности усилия по распространению и стандартизации своих разработок. В том случае, если набор элементов метаданных рассматривается и принимается соответствующей уполномоченной организацией (например, International Standart Organisation, ISO), он становится официальным стандартом метаданных.

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

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

предоставлении возможностей более быстрого, точного и полного обнаружения необходимых ресурсов;

обеспечении гибких и разнообразных механизмов отбора в соответствии с требованиями пользователя (поисковым запросом);

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

управлении жизненным циклом информационных ресурсов (создания, использования и хранения цифровых документов).

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

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

Глава 2. Таблицы. Индексы

.1 Понятие главной и дочерней таблиц

При связывании таблиц используются понятия главной таблицы и подчиненной таблицы.

Главная таблица {родительская таблица или master ) - это таблица, в которой содержатся основные данные.

Подчиненная таблица {дочерняя таблица или detail ) - таблица, значения в полях которой зависят от значений главной таблицы.

Главная таблица может иметь несколько подчиненных таблиц.

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

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

Само название связи между таблицами реляционной базы данных формируют по типу таблиц:

· главный -подчиненный,

· родительский -дочерний или master-detail.

2.2 Виды отношений между таблицами

Существует три типа связей между таблицами.

Связь "один-ко-многим"

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

Чтобы создать связь "один-ко-многим" в структуре базы данных, добавьте первичный ключ на стороне "один" в таблицу на стороне "многие" в виде дополнительного поля. В данном примере необходимо добавить новое поле - поле "Код" из таблицы "Клиенты" - в таблицу "Заказы" и назвать его "Код клиента". После этого Access сможет использовать номер "Код клиента" из таблицы "Заказы" для поиска клиента, оформившего тот или иной заказ.

Связь "многие-ко-многим"

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

Связь "один-к-одному"

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

.3 Понятие ссылочной целостности

реляционная база таблица индекс

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

«Ссылочная целостность в реляционной базе данных - это согласованность между связанными таблицами. Ссылочная целостность обычно поддерживается путем комбинирования первичного ключа и внешнего ключа. Для соблюдения ссылочной целостности требуется, чтобы любое поле в таблице, объявленное внешним ключом, могло содержать только значения из поля первичного ключа родительской таблицы …»

«[Ссылочная целостность - это] свойство, обеспечиваемое реляционными системами управления базами данных (РСУБД), которое предотвращает ввод несогласованных данных пользователями или приложениями. В большинстве РСУБД имеются различные правила ссылочной целостности, которые можно применить при создании связи между двумя таблицами.»

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

Поддержка ссылочной целостности в базе данных обеспечивает много преимуществ.

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

Убыстрение разработки. Ссылочная целостность объявляется. Это гораздо продуктивнее (на один или два порядка), чем написание специального программного кода.

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

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

Заметим, что определения, взятые из Web, выражаются в терминах реляционных баз данных. Однако принципы ссылочной целостности применяются в более широком контексте. Ссылочная целостность применима как к реляционным, так и к объектно-ориентированным (ОО) базам данных, а также к языкам программирования и моделированию.

Индекс - структура данных, которая помогает СУБД быстрее обнаружить отдельные записи в файле и сократить время выполнения запросов пользователей.

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

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

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

Для ускорения доступа к данным применяется несколько типов индексов.

Основные из них перечислены ниже.

Первичный индекс.

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

Индекс кластеризации.

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

Вторичный индекс.

Индекс, который определен на поле файла данных, отличном от поля, по которому выполняется упорядочение.

Файл может иметь не больше одного первичного индекса или одного индекса кластеризации, но дополнительно к ним может иметь несколько вторичных индексов. Индекс может быть разреженным (sparse) или плотным (dense). Разреженный индекс содержит индексные записи только для некоторых значений ключа поиска в данном файле, а плотный индекс имеет индексные записи для всех значений ключа поиска в данном файле. Ключ поиска для индекса может состоять из нескольких полей.

Индексно-последовательные файлы

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

первичная область хранения;

отдельный индекс или несколько индексов;

область переполнения.

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

Вторичные индексы

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

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

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

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

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

Многоуровневые индексы

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

2.5 Сортировка записей

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

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

При сортировке по возрастанию данные различных типов выстраиваются в следующем порядке:

числа - от наименьшего отрицательного до наибольшего положительного числа;

текст - в алфавитном порядке (числа, знаки, латинский алфавит, русский алфавит);

дата и время - в хронологическом порядке.

При сортировке по убыванию данные выстраиваются в порядке, обратном вышеуказанному.

Сортировка базы данных - это упорядочение записей по значениям одного из полей.

Например, после сортировки по возрастанию по текстовому полю "Фамилия" база данных "Записная книжка" примет вид, показанный в табл. 1.

Таблица 1. Результат сортировки базы данных "Записная книжка"


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

В качестве примера осуществим вложенную сортировку базы данных "Компьютеры" по возрастанию по трем полям Тип компьютера, Процессор и Память (рис. 1).

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

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

Заключение

В заключении необходимо сделать основные выводы по работе.

Реляционная модель данных состоит из трех частей:

Структурной части.

Целостной части.

Манипуляционной части.

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

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

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

Отношение обладает следующими свойствами:

В отношении нет одинаковых кортежей.

Кортежи не упорядочены (сверху вниз).

Атрибуты не упорядочены (слева направо).

Все значения атрибутов атомарны.

Реляционной базой данных называется набор отношений.

Схемой реляционной базы данных называется набор заголовков отношений, входящих в базу данных.

Отношение находится в Первой Нормальной Форме (1НФ),если оно содержит только скалярные (атомарные) значения.

Современные СУБД допускают использование null-значений, т.к. данные часто бывают неполными или неизвестными.

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

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

Традиционно один из потенциальных ключей объявляется первичным ключом, остальные - альтернативными ключами.

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

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

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

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

В любой реляционной базе данных должны выполняться два ограничения:

Целостность сущностей

Целостность внешних ключей

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

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

Для поддержания ссылочной целостности обычно используются две основные стратегии:(ОГРАНИЧИТЬ) - не разрешать выполнение операции, приводящей к нарушению ссылочной целостности.(КАСКАДИРОВАТЬ) - разрешить выполнение требуемой операции, но внести каскадные изменения в другие отношения так, чтобы не допустить нарушения ссылочной целостности.

Дополнительными стратегиями поддержания ссылочной целостности являются:NULL (УСТАНОВИТЬ В NULL) - все некорректные значения внешних ключей изменять на null-значения.DEFAULT (УСТАНОВИТЬ ПО УМОЛЧАНИЮ) - все некорректные значения внешних ключей изменять на некоторое значение, принятое по умолчанию.

В реальных СУБД можно также отказаться от использования какой-либо стратегии поддержания ссылочной целостности:(ИГНОРИРОВАТЬ) - выполнять операции, не обращая внимания на нарушения ссылочной целостности.

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

Список использованной литературы

1. «Экономическая информатика» / Под. ред. П.В. Конюховского и Д.Н. Колесова, СПб: Питер, 2000, 560 с.

Каймин В.А., «Информатика», учеб.4-е изд. М.:, 2003 - 285 с.

. «Информатика», базовый курс, 2-е издание / Под. ред. С.В. Симоновича, СПб.: 2003, 640 с.

. «Информатика» учеб. 3-е перераб. изд. / Под. ред. проф. Н.В. Макаровой, М.: 2000, 768 с.

Http://www.jetinfo.ru/.

Информатика. Базовый курс /Симонович С.В. и др. - СПб: Издательство «Питер», 2000

Статьи по теме