Достоинства и недостатки РМД

Схема отношения

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

  1. В отношении не должно быть одинаковых кортежей, т.к. это множество.
  2. Порядок кортежей в отношении несущественен.

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

Отношение удобно представлять как таблицу, где строка является кортежем, а столбец соответствует домену (рис. 2.7, отношение СТУДЕНТЫ). Количество строк в таблице (кортежей в отношении) называется мощностью отношения, количество столбцов (атрибутов) – арностью.

Группа ФИО студента Номер зачетной книжки Год рождения Размер стипендии
C-72 Волкова Елена Павловна С-12298   1550.00
C-91 Белов Сергей Юрьевич С-12299   1400.00
.....
C-72 Фролов Юрий Вадимович С-14407    

Рис.2.7. Пример табличной формы представления отношения

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

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

Атрибут может быть обязательным и необязательным. Значение обяза-тельного атрибута должно быть определено в момент внесения данных в БД. Если атрибут необязательный, то для таких случаев предусмотрено специальное значение – NULL, которое можно интерпретировать как "неизвестное значение". Значение NULL не привязано к определённому типу данных, т.е. может назначаться данным любых типов.

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

Ключ отношения – это атрибут (группа атрибутов), значения которого классифицируют или идентифицируют кортеж. Например, значение атрибута Группа отношения СТУДЕНТЫ позволяет выделить среди всех студентов института студентов конкретной группы. Если ключ состоит из нескольких атрибутов, он называется составным. Если значения ключа уникальны в рамках столбца отношения, то такой ключ называется потенциальным. Потенциальных ключей может быть несколько (или не быть ни одного), но для отношения выделяется один основной ключ – первичный. Первичный ключ идентифицирует экземпляр сущности, его значение должно быть уникальным (unique) и обязательным (not null). (На рис. 2.7 первичный ключ выделен полужирным шрифтом). Неуникальные ключи ещё называют вторичными.

РМД не поддерживает групповые отношения (по версии CODASYL). Для связей между отношениями используются внешние ключи. Внешний ключ (foreign key) – это атрибут подчинённого (дочернего) отношения, который является копией первичного (primary key) или уникального (unique) ключа родительского отношения. (Пример – отношение ОЦЕНКИ, связанное с отношением СТУДЕНТЫ внешним ключом Номер зачётной книжки, рис. 2.8).

Номер зачетной книжки Дисциплина Оценка
C-12298 Программирование  
C-1229891 Дискретная математика  
C-14407 Программирование  
.....

Рис.2.8. Связь отношений "Оценки" и "Студенты" по внешнему ключу

Если связь необязательная, то значение внешнего ключа может быть неопределённым (null).

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

Подмножество декартова произведения доменов называется отношением.

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

Ограничение целостности по внешнему ключу проверяется в двух случаях:

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

Примечание: внешний ключ может ссылаться на первичный ключ этой же таблицы. Это позволяет описывать унарную связь – иерархию однотипных сущностей. Например, если в таблицу СОТРУДНИКИ добавить поле Руководитель и описать его как внешний ключ на эту же таблицу, то в этом поле будет храниться идентификатор руководителя данного сотрудника (рис. 2.9). Атрибут Руководитель является необязательным.

Табельный номер Номер отдела ФИО Должность Руководитель
    Сухов К.А. директор -
    Петрова К.В. секретарь  
    Рюмин В.П. нач. отдела  
    Серова Т.В. вед. программист  

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

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

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

Структуризация данных в РМД существенно отличается от структуризации данных по версии CODASYL (см. табл. 2.1).

Таблица 2.1. Сравнение структуризации данных в РМД и по версии CODASYL

Термины версии CODASYL Термины (и синонимы) РМД
Элемент данных Атрибут (поле)
Агрегат --
Запись (группа) Кортеж (запись, строка)
Совокупность записей одного типа Отношение (таблица)
Набор (групповое отношение) --
База данных База данных

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

Широкое распространение реляционной модели объясняется в первую очередь простотой представления и формирования базы данных, универсальностью и удобством обработки данных, которая осуществляется с помощью декларативного языка запросов SQL (Structured Query Language, [3]).

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

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

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

Итак, реляционная модель данных – это модель данных, основанная на представлении данных в виде набора отношений, каждое из которых является подмножеством декартова произведения определённых множеств. Манипулирование данными в РМД осуществляется с помощью операций реляционной алгебры (РА) или реляционного исчисления [1]. Реляционная алгебра основана на теории множеств, а реляционное исчисление базируется на математической логике (вернее, на исчислении предикатов первого порядка). Изучение реляционного исчисления выходит за рамки данного пособия. Мы рассмотрим только операции реляционной алгебры.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: