- •Модель данных
- •2.3. Ранние модели данных
- •2.3.1. Модель данных инвертированных таблиц
- •Структуры данных
- •Манипулирование данными
- •Ограничения целостности
- •2.3.2. Иерархическая модель данных
- •Иерархические структуры данных
- •Манипулирование данными
- •Ограничения целостности
- •2.3.3. Сетевая модель данных
- •Сетевые структуры данных
- •Манипулирование данными
- •Ограничения целостности
- •Операторы
- •13.1.1. Запросы и операторы манипулирования данными
- •13.1.2. Операторы определения и манипулирования схемой бд
- •13.1.3. Определения ограничений целостности и триггеров
- •13.1.4. Представления базы данных
- •13.1.5. Определение управляющих структур
- •13.1.6. Авторизация доступа к отношениям и их полям
- •13.1.7. Точки сохранения и откаты транзакции
- •13.1.8. Встроенный sql
- •13.1.9. Динамический sql
Ограничения целостности
Имеется (необязательная) возможность потребовать для конкретного типа связи отсутствие потомков, не участвующих ни в одном экземпляре этого типа связи (как в иерархической модели).
1 Заметим, что перечисляемые ниже характеристики в полной мере относятся и к другим не реляционным подходам к организации баз данных, которые возникли до появления реляционного подхода или почти одновременно с ним. В частности, подобными свойствами обладают системы, основанные на подходах MUMPS (наиболее известной в России является реализация этого подхода в СУБД Cache компании Intersystems) и Pick (этот подход реализован во многих СУБД, в частности, в СУБД UniVerse и UniData семейства U2 компании IBM).
Реляционная модель данных.
Реляционная модель основывается на понятии отношения. Физическим представлением этого отношения является таблица, которая состоит из строк и столбцов. БД – это набор таблиц.
Домен – поименованный столбец отношения.
Кортеж – поименованная строка отношения.
Т.о. каждый атрибут определяется на некотором домене.
Для уникальной идентификации картежей вводится понятие реляционных ключей. Существуют следующие типы реляционных ключей:
Супер-ключ – единственным образом идентифицирует картеж данного отношения.
Потенциальный ключ – супер-ключ, который не содержит подмножества так же являющийся супер-ключом данного домена.
Потенциальный ключ имеет следующие свойства:
- уникальность;
- неприводимость.
Одно отношение может иметь несколько уникальных ключей. Выбор потенциальных ключей для идентификации картежей осуществляется исходя из смысла использования атрибутов в реальной задаче.
Первичный ключ – тот же потенциальный ключ, который выбран для идентификации кортежа внутри отношения.
Вторичный ключ – столбец отношения (группа столбцов), которые выбраны для организации связи между таблицами их первичным ключом. Значение вторичных ключей, как правила, повторяются. Они используются для организации связи 1:N.
Составной ключ – ключ состоящий из нескольких атрибутов.
Для всех допустимых БД задаются правила целостности. В реляционной модели существует два основных правила целостности:
Целостность сущностей;
Ссылочная целостность.
Первое правило относится к первичным ключам : в базовом отношении первичный ключ не может иметь отсутствующих значений, определенных как NULL. Определитель NULL указывает , что значение атрибута в банный момент не определено или не приемлемо для данного кортежа.
Второе правило касается внешних (вторичных) ключей: если в отношении существует внешний ключ, то его значение должно соответствовать значению потенциального ключа в базовом отношении. Допускается определить внешний ключ как NULL-значение.
Первичный ключ (сокращенно РК - primary key) - столбец, значения которого во всех строках различны. Первичные ключи могут быть логическими (естественными) и суррогатными (искусственными). Так, для нашей таблицы Пользователи первичным ключом может стать столбец e-mail (ведь теоретически не может быть двух пользователей с одинаковым e-mail). На практике лучше использовать суррогатные ключи, т.к. их применение позволяет абстрагировать ключи от реальных данных. Кроме того, первичные ключи менять нельзя, а что если у пользователя сменится e-mail?
Отношения: ключ, степень, мощность
Отношения характеризуется рядом следующих свойств:
1. Степень – количество атрибутов, которое содержит это отношение.
2. Кардинальность(мощность) отношения – количество содержащих в отношении кортежей. Может меняться.
Реляционная модель представляет из себя набор нормализованных отношений.
-
Официальный термин
Альтернативный термин
Альтернативный термин2
Отношение
Таблица
Файл
Кортеж
Строка
Запись
Атрибут
Столбец
Поле
Реляционная схема – имя отношения, за которым записывается множество пар имен столбцов и доменов.
Отношение R(А1,А2,А3,…,Аn) – n-арное отношение, которое определено на доменах D1,D2,…Dn реляционная схема будет иметь следующий вид:
R(A1 : D1, A2 : D2, … , An : Dn)
Отношение обладает следующими характеристиками:
имеет уникальное имя;
Каждая ячейка представляет из себя атомарное неделимое значение;
Каждый атрибут отношения имеет уникальное имя;
Значения атрибутов берутся из одного и того же домена;
каждый картеж отношения является уникальным;
Порядок следования отношений является неизменным.
Отношения удовлетворяющие выше указанным характеристикам называются нормализованными отношениями, т.е. отношениями отвечающие первой нормальной форме. Всякое отношение должно приводиться к этой форме для построения реляционной БД.
Обзор процесса нормализации отношений.
При проектировании базы данных центральной задачей является определение количества отношений и их атрибутного состава. Задача группировки в отношения , набор которых заранее не фиксирован, допускает множество различных вариантов решений. Рациональные варианты группировки должны учитывать следующие требования:
Множество отношений должно обеспечивать минимальную избыточность данных,
Корректировка отношений не должна приводить к двусмысленности или потере данных,
Перестройка набора отношений при добавлении в базу данных новых полей должна быть минимальной.
Процесс преобразования отношений называется нормализацией. Методику нормализации отношений разработал А.Ф.Кодд. в 1970г. Он выделил три нормальные формы. Затем Бойсом и Коддом было сформулировано более строгое определение третьей нормальной формы, получившей название нормальной формы Бойса-Кодда. Позже стали выделять 4НФ и 5НФ. Однако на практике эти нормальные формы используются крайне редко.
Процесс нормализации заключается в декомпозиции исходного отношения посредством последовательного выполнения операций проекции. Полученные отношения обеспечивают выполнение их соединения без потерь. Поэтому данную процедуру называют беспроигрышной или неаддитивной декомпозицией.
Отношение находится в 1-ой нормальной форме, если его атрибуты имеют простые неделимые значения.
Отношение находится во второй нормальной форме, если оно удовлетворяет 1НФ и неключевые поля функционально полно зависят от ключа. Полная функциональная зависимость означает, что значение каждого неключевого поля однозначно определяется значением ключа.
Отношение находится в третьей нормальной форме, если оно удовлетворяет требованиям 2-ой нормальной формы и при этом неключевое поле зависит от ключа нетранзитивно.
Нормальная форма Бойса-Кодда учитывает функциональные зависимости, в которых участвуют все потенциальные ключи отношения, а не только первичный ключ. Для отношения с единственным потенциальным ключом его 3НФ и НФБК эквивалентны. Отношение находится в НФБК тогда и только тогда, когда каждый его детерминант является потенциальным ключом. Для проверки принадлежности к отношения к НФБК необходимо найти все его детерминанты и убедиться, что они являются потенциальными ключами. Детерминантом является один атрибут или группа атрибутов, от которых функционально полно зависит другой атрибут. Нарушение требований НФБК происходит, если :
Имеются два или более составных ключа,
Эти потенциальные ключи перекрываются, т.е. ими совместно используется , по крайней мере один общий атрибут.
НФБК позволяет устранить любые аномалии, вызванные функциональными зависимостями. В ходе исследований выявлен еще один тип зависимости – многозначная зависимость.
SQL (ˈɛsˈkjuˈɛl; англ. structured query language — «язык структурированных запросов») — формальный непроцедурный язык программирования, применяемый для создания, модификации и управления данными в произвольной реляционной базе данных, управляемой соответствующей системой управления базами данных (СУБД). SQL основывается на исчислении кортежей.
