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

Автор работы: Пользователь скрыл имя, 03 Сентября 2011 в 13:52, курсовая работа

Описание работы

Основы реляционной модели данных были впервые изложены в статье Е.Кодда в 1970 г. Эта работа послужила стимулом для большого количества статей и книг, в которых реляционная модель получила дальнейшее развитие. Наиболее распространенная трактовка реляционной модели данных принадлежит К.Дейту. Согласно Дейту, реляционная модель состоит из трех частей:
1.Структурной части.
2.Целостной части.
3.Манипуляционной части.
Структурная часть описывает, какие объекты рассматриваются реляционной моделью. Постулируется, что единственной структурой данных, используемой в реляционной модели, являются нормализованные n-арные отношения.
Целостная часть описывает ограничения специального вида, которые должны выполняться для любых отношений в любых реляционных базах данных. Это целостность сущностей и целостность внешних ключей.
Манипуляционная часть описывает два эквивалентных способа манипулирования реляционными данными - реляционную алгебру и реляционное исчисление.
В классической реляционной модели используются только простые (атомарные) типы данных. Простые типы данных не обладают внутренней стру

Содержание работы

Введение…………………………………………………………………………………...3
1. Базовые понятия реляционной модели данных…………………………..……….….4
1.1. Типы данных…………………………………………………………………….....4
1.2.Домены……………………………………………………………………………...7
2. Отношения, атрибуты, кортежи отношения……………………………………….…9
2.1. Определения и примеры…………………………………………………………..9
2.2. Свойства отношений……………………………………………………………..11
2.3. Первая нормальная форма……………………………………………………….12
3. Целостность реляционных данных…………………………………………………..14
3.1. Null-значения………………………………………………………………….….14
3.2. Трехзначная логика (3VL)……………………………………………………….16
3.3. Потенциальные ключи…………………………………………………………...17
3.4. Целостность сущностей………………………………………………………….19
3.5. Внешние ключи…………………………………………………………………..19
3.6. Целостность внешних ключей……………………………………………….….24
Заключение……………………………………………………………………………....25
Глоссарий………………………………………………………………………………...27
Список использованных источников…...........................................................................29
Приложение А……………………………………………………………………………30
Приложение Б……………………………………………………………………………31
Приложение В……………………………………………………………………………32

Файлы: 1 файл

реляционные модели данных.doc

— 250.50 Кб (Скачать файл)
p align="justify">      Для того чтобы обойти проблему неполных или неизвестных данных, в базах  данных могут использоваться типы данных, пополненные так называемым null-значением. Null-значение - это, собственно, не значение, а некий маркер, показывающий, что значение неизвестно. [5]

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

      Первый  вариант состоит в том, чтобы  ограничиться использованием обычных  типов данных и не использовать null-значения, а вместо неизвестных данных вводить либо нулевые значения, либо значения специального вида - например, договориться, что строка "АДРЕС НЕИЗВЕСТЕН" и есть те данные, которые нужно вводить вместо неизвестного адреса. В любом случае на пользователя (или на разработчика) ложится ответственность на правильную трактовку таких данных. В частности, может потребоваться написание специального программного кода, который в нужных случаях "вылавливал" бы такие данные. Проблемы, возникающие при этом очевидны - не все данные становятся равноправны, требуется дополнительный программный код, "отслеживающий" эту неравноправность, в результате чего усложняется разработка и сопровождение приложений.

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

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

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

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

    1. Трехзначная логика (3VL)
 

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

      При сравнении выражений, содержащих null-значения, результат также может быть неизвестен, например, значение истинности для выражения есть null, если один или оба аргумента есть null. Таким образом, определение истинности логических выражений базируется на трехзначной логике (three-valued logic, 3VL), в которой кроме значений T - ИСТИНА и F - ЛОЖЬ, введено значение U - НЕИЗВЕСТНО. Логическое значение U - это то же самое, что и null-значение. Трехзначная логика базируется на таблицах истинности (табл. 1- 3)

Таблица 1 Таблица истинности AND

AND F T U
F F F F
T F T U
U F U U
 
 
 
 

Таблица 2 Таблица истинности OR

OR F T U
F F T U
T T T T
U U T U

Таблица 3 Таблица истинности NOT

NOT  
F T
T F
U U
 

     Имеется несколько парадоксальных следствий  применения трехзначной логики.

      Null-значение  не равно самому себе. Действительно,  выражение null = null дает значение  не ИСТИНА, а НЕИЗВЕСТНО. Значит выражение не обязательно ИСТИНА!

      Неверно также, что null-значение не равно самому себе! Действительно, выражение null null также принимает значение не ИСТИНА, а НЕИЗВЕСТНО! Значит также, что и выражение тоже не обязательно ЛОЖЬ!

       не обязательно ИСТИНА. Значит, в трехзначной логике не работает принцип исключенного третьего (любое высказывание либо истинно, либо ложно).

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

    1. Потенциальные ключи
 

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

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

  1. Свойством уникальности - в отношении не может быть двух различных кортежей, с одинаковым значением .
  2. Свойством неизбыточности - никакое подмножество в не обладает свойством уникальности.

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

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

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

      Понятие потенциального ключа является семантическим понятием и отражает некоторый смысл (трактовку) понятий из конкретной предметной области. Для того чтобы проиллюстрировать этот факт рассмотрим следующее отношение "Сотрудники": [1] 
 
 
 

      Таблица 4 Отношение "Сотрудники":

Табельный номер Фамилия Зарплата
1 Иванов 1000
2 Петров 2000
3 Сидоров 3000
 

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

      Попробуем представить это отношение в  другом виде, изменив наименования атрибутов:          

      Таблица 5

A B C
1 Иванов 1000
2 Петров 2000
3 Сидоров 3000
 

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

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

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

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

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

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

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

    1. Внешние ключи
 

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

      Рассмотрим  пример с поставщиками и поставками деталей. Предположим, что нам требуется хранить информацию о наименовании поставщиков, наименовании и количестве поставляемых ими деталей, причем каждый поставщик может поставлять несколько деталей и каждая деталь может поставляться несколькими поставщиками. Можно предложить хранить данные в следующем отношении : Приложение Б.[2]

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

      Приведенный способ хранения данных обладает рядом  недостатков.

Информация о работе Реляционные модели данных