База данных

Автор работы: Пользователь скрыл имя, 13 Февраля 2013 в 21:31, курсовая работа

Описание

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

Работа состоит из  1 файл

КУРСОВАЯ БД.doc

— 279.50 Кб (Скачать документ)

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

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

Атрибуты внешнего ключа  не обязательно должны иметь те же имена, что и атрибуты ключа, которым они соответствуют. Например, в нашем примере можно было дать атрибуту «№ студенческого_билета» таблицы УСПЕВАЕМОСТЬ другое имя, например "Студенческий_билет».

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

 

1.5  Условия целостности данных

 

В реляционных моделях  вопросу целостности данных отводится особое место.

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

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

Важнейшими ограничениями  целостности данных являются:  

  • категорийная целостность; 
  • ссылочная целостность.

Ограничение категорийной целостности заключается в следующем. Кортежи отношения представляют в базе данных элементы определенных объектов реального мира или, в соответствии с терминологией реляционных СУБД, категорий. Например, строка таблицы СТУДЕНТЫ представляет конкретного студента. Первичный ключ таблицы однозначно определяет каждый кортеж и, следовательно, каждый элемент категории. Таким образом, для извлечения данных, содержащихся в строке таблицы, или для манипулирования этими данными необходимо знать значение ключа для этой строки. Поэтому строка не может быть занесена в базу данных до тех пор, пока не будут определены все атрибуты ее первичного ключа. Это правило называется правилом категорийной целостности и кратко формулируется следующим образом:

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


 

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

Говоря о внешних ключах, нужно иметь в виду, что если отношение С связывает отношения А и В, то оно должно включать внешние ключи, соответствующие первичным ключам отношений А и В (рисунок 13.3).

Рисунок 13.3 - Внешние ключи

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

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

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

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

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

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

Если две таблицы  связаны между собой, то внешний  ключ таблицы должен содержать только те значения, которые уже имеются среди значений ключа, по которому осуществляется связь. Если корректность значений внешних ключей не контролируется СУБД, то может нарушиться ссылочная целостность данных. Поясним это на рассматриваемом примере. Если удалить из таблицы СТУДЕНТЫ строку (например, при отчислении студента), имеющую хотя бы одну связанную с ней строку в таблице УСПЕВАЕМОСТЬ, то это приведет к тому, что в таблице УСПЕВАЕМОСТЬ останутся записи об успеваемости студента, который уже отчислен. Такой же будет ситуация в случае, если внешнему ключу таблицы УСПЕВАЕМОСТЬ ошибочно будет присвоено значение, отсутствующее в значениях ключа связанной таблицы.

 

1.6 Типы связей между таблицами

 

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

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

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

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

Различие между типами связей «один ко многим» и «многие  к одному» зависит от того, какая из таблиц выбирается в качестве главной, а какая — в качестве подчиненной. Например, если из связанных таблиц СТУДЕНТЫ и УСПЕВАЕМОСТЬ в качестве главной выбрать таблицу СТУДЕНТЫ, то получим тип связи «один ко многим». Если же выбрать в качестве главной таблицу УСПЕВАЕМОСТЬ, получится тип связи «многие к одному».

Связь "один к одному" предполагает, что в каждый момент времени каждому кортежу А  соответствует 0 или 1 кортежей В (рисунок 13.4). Например, работник в данной организации получает зарплату, и только одну.

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

Связь "один ко многим" состоит в том, что в каждый момент времени каждому кортежу  А соответствует несколько кортежей В (рисунок 13.5). Например, в доме проживает много жильцов.

Рисунок 13.5 - Связь "один ко многим"

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

Рисунок 13.6 - Связь "многие к одному"

Наконец, связь "многие ко многим" состоит в том, что  в каждый момент времени множеству элементов А соответствует множество элементов В (рисунок 13.7). Этот тип связи в реляционных БД непосредственно не поддерживается. Примером такой связи может служить тот факт, что у студентов учебные занятия по дисциплинам ведут множество преподавателей.

Рисунок 13.7 - Связь "многие ко многим"

Кроме того, могут еще  существовать множественные связи между одними и теми же элементами, тернарные связи (рисунок 13.8), которые, впрочем, могут быть выражены через уже рассмотренные.

Рисунок 13.8 - Множественные  и тернарные связи

2.Реляционная алгебра

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

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

  • объединения отношений;
  • пересечения отношений;
  • взятия разности отношений;
  • прямого произведения отношений.

Специальные реляционные  операции включают:

  • ограничение отношения;
  • проекцию отношения;
  • соединение отношений;
  • деление отношений.

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

2.1. Общая интерпретация реляционных операций

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

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

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

2.2. Замкнутость реляционной алгебры и операция переименования

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