2.1. Реляционные объекты данных

Существует специальная терминология, принятая в теории реляционных БД (рис. 3)


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

Отношение характеризуется следующими понятиями:

Атрибут соответствует столбцу этой таблицы, а именно – свойствам объектов, сведения о которых хранятся в ней. В конкретных СУБД атрибуты часто называют полями.

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

Кортеж соответствует заполненной строке таблицы. В конкретных СУБД кортежи называют записями.

Степень отношения – количество его атрибутов.

Кардинальное число – количество кортежей в отношении в текущий момент времени.

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

2.1.1. Домены

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

Например, если имеется атрибут (свойство объекта) «ФИО», он предусматривает скаляры, содержащие фамилию, имя и отчество. Конечно, эти скаляры можно еще разбить на буквы, но тогда будет утрачен нужный смысл. То есть для данной модели наименьшими семантическими единицами данных будут именно фамилия, имя и отчество.

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

Основное назначение доменов — ограничение сравнения различных по смыслу атрибутов.

Например: Если для атрибутов №ЗачетнойКнижки отношения Студенты и №Кабинета для отношения Кабинеты домены заданы следующим образом:

№ зачетной книжки = {100000, 100001, 100002, … 999999}

№ кабинета = {1, 2, 3, … 999},

то система выдаст ошибку на запрос типа: «Вывести всех студентов, № зачетной книжки которых совпадает с № кабинета». Если же домены не определены, а определен только целый тип данных для атрибутов №ЗачетнойКнижки и №Кабинета, то подобный запрос выполнится, хотя не будет иметь смысла.

Еще одно возможное применение доменов – использование их в специальных запросах. Например, «Какие отношения в БД включают атрибуты, определенные на домене «№ зачетной книжки»?». В системе, поддерживающей домены, такой запрос будет иметь смысл и результатом его будет список отношений, где используется № зачетной книжки (это могут быть отношения Студенты,Занятия,Успеваемость, …). А в системе, где домены не определены, реализовать такого рода запрос гораздо сложнее – если через имена атрибутов, то они могут не совпадать (имена атрибутов, содержащих № зачетной книжки могут варьироваться: № зачетки, № зачетной книжки и т.п.), а если через тип – то получится много лишних отношений, т.к. немало атрибутов может иметь целый тип данных.

2.1.2. Отношения

С отношением связаны понятия переменной отношения и значения отношения.

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

Значение отношения — значение переменной отношения в конкретный момент времени (по сути - это сохраненные кортежи отношения).

Дадим более точное, формальное, определение отношения.

Отношение R1, определенное на множестве доменов D1, D2, …, Dn (необязательно различных), состоит из двух частей: заголовка и тела.

Заголовок содержит фиксированное множество пар {Ai:Di}, где Ai – имя атрибута, Di – имя домена.

Тело содержит множество пар {Ai:Zij}, где Ai – имя атрибута, Zij – значение i-ого атрибута в j-ом кортеже.

i = 1,2,…n, где n – степень отношения,

j = 1,2,…m, где m – кардинальное число.

Например, рассмотрим отношение Студенты БД Факультет:

Заголовок: {№ЗачетнойКнижки : Целый; Фамилия : Текстовый; Имя : Текстовый; ДатаРождения : Дата; Адрес : Текстовый; Группа : Текстовый}

Тело: {№ЗачетнойКнижки : 111111; Фамилия : Петров; Имя : Петр; Отчество : Петрович; ДатаРождения : 12.03.83; Адрес : Свободы, 12-45; Группа : ИНФ-21}

{№ЗачетнойКнижки : 222222; Фамилия : Иванов; Имя : Иван; Отчество : Иванович; ДатаРождения : 25.11.83; Адрес : Ленина, 65-9; Группа : ИНФ-21}

и т.д.

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

ИмяОтношения (ИмяАтрибута1, ИмяАтрибута2, …, ИмяАтрибутаN),

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

Свойства отношений

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

Следствие этого свойства: в отношении всегда существует первичный ключ.

2. Кортежи неупорядочены. Это следует также из того, что тело отношения определено как математическое множество кортежей. А математическое множество по определению не упорядочено. Именно поэтому в отношении не существует таких понятий, как «следующий», «предыдущий», «второй кортеж» и т.п.

3. Атрибуты не упорядочены. Это следует из того, что заголовок отношения определен как математическое множество атрибутов. А множество не упорядочено по определению. Т.е. опять нет понятий «первый атрибут», «следующий атрибут» и т.п.

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

Проектирование реляционных баз данных


*****

© 2009-2017 Банк лекций siblec.ru
Лекции для преподавателей и студентов. Формальные, технические, естественные, общественные, гуманитарные, и другие науки.