
- •Реляционная модель данных.
- •Реляционное отношение.
- •Атрибут схемы реляционного отношения.
- •Семантика значений элементов атрибутов.
- •Экземпляр реляционного отношения.
- •Два взгляда на экземпляр реляционного отношения.
- •Традиционные файловые системы.
- •Системы с базами данных.
- •Метаданные простой реляционной базы данных.
- •IsLaw UsrId ExmId SchId MetaN
- •Некоторые операции с метаданными.
Экземпляр реляционного отношения.
«Слово есть образ дела» Солон, 640-559гг. до н.э.
Экземпляр реляционного отношения есть множество значений элементов, т.е полей со значениями, принадлежащих конкретным кортежу (строке) и атрибуту (столбцу)
re(RS) = { < aij | i [1: |RS|] > | j = 1, 2, …, |re| },
где аij – значение поля i–ого столбца (атрибута) в j–ой строке (кортеже); ai – набор значений i-огостолбца таблицы (атрибут экземпляра); aj – мложество значений j-ойстроки таблицы (кортеж экземпляра); |RS| – размерность схемы отношения. |re| – размерность экземпляра количество строк (кортежей); RS – идентификаторсхемы реляционного отношения. re – идентификатор экземпляра реляционного отношения.
Обратите внимание, на неравноправие понятий «атрибут» и «кортеж» по отношению к «полю таблицы». Предполагается, что для каждого поля есть возможность определить его атрибут (т.е. идентификатор). Следовательно, порядок прохождения элементов кортежа в экземпляре и элементов схемы (атрибутов) жестко связаны. Поэтому в определении экземпляра реляционного отношения для кортеж отражается как набор («<…>»). Порядок следования кортежей в экземпляре отношения не важен (т.к. это множество кортежей – «{…}» ). Следовательно, реляционное отношение представляется таблицей, у которой мы можем определить конкретный атрибут, но не можем указать кортеж. Это напоминает замену листа бумаги с таблицей на кучку, нарезанных из него по кортежам полосок.
На первый взгляд – ситуация тупиковая. Каким образом мы можем идентифицировать кортежи? И здесь надо вспомнить по условие уникальности значения кортежа в экземпляре реляционного отношения. Правило эквивалентности гласит, что у двух сравниваемых кортежей поля всех атрибутов должны содержать равные значения. Очень часто можно показать, что уникальность значения кортежа гарантирует некоторое подмножество атрибутов, называемых ключами. Именно по значению ключей идентифицируются кортежи.
Два взгляда на экземпляр реляционного отношения.
«Сильнее всего - неизбежность, ибо она влавствует всем».
Фалес, 625-ок.547гг. до н.э.
Экземпляр реляционного отношения можно представить двухмерной таблицей значений его элементов только отчасти, ради простоты понимания. В отличие от матрицы, элементы которых есть “вектор векторов” и однозначно определяются парой элементов в порождающих векторах, ассиметрия определения реляционного отношения приводит к необходимости указания, для идентификации его поля элемента, пары:
Идентификатор атрибута, определяющего столбец (это относительно просто);
Значения ключевых атрибутов, определяющих кортеж (что требует его поиска).
Такое определение экземпляра реляционного отношения приводит к двойственности раскрытия этого понятия. С одной стороны, мы имеем множество поименованных атрибутов (столбцов) экземпляра, каждый из которых имеет фиксированный тип данных. При этом элементы столбца должны поддерживать общий порядок следования (например, быть набором полей). Этого требует условие сохранения принадлежности к атрибуту и кортежу, как свойств каждого поля, содержащего значения. Такая структура очень удобна для описания эволюции схем предметных областей, для которых характерны операции добавления и удаления атрибутов (столбцов) в экземплярах. Но в реляционной модели данных сделан выбор в пользу другой трактовки экземпляра реляционного отношения, а именно – представления как множества кортежей. При этом схему реляционных отношений можно считать неизменной. Этот выбор очевиден так, как при работе с данными нам значительно чаще требуются операции добавления и удаления кортежей, чем атрибутов.
В языках программирования зарезервирована возможность построения составных типов данных (в С и С++ - структура, а в Алголе и Паскале – запись). Она прекрасно подходит для описания типа данных кортежа в целом. При этом экземпляр реляционного отношения трактуется как контейнер объектов, класс которых соответствует схеме отношения.
Напрашивается вывод о том, что кортеж и объект – одно и то же понятие в разных программных технологиях (по необходимости). Увы, все не так просто. Например, универсальное отношение схемы предметной области сетей Петри petry(RSS) будет слишком велико и избыточно, если для хранения данных в программе просто использовать его экземпляр с именем test(petry). Поэтому в реляционной модели данных схема универсального отношения предметной области заменяется покрывающим её множеством схем реляционных отношений R1, R2, ..., RN и это множество схемой реляционной базы данных. Почему это возможно мы рассмотрим далее, а пока представим метаописание реляционных баз данных в виде экземпляров универсального отношения со схемой
RDB = {RelId, AtrId, DomId, TypeId, Comment},
где RelId – идентификатор схемы реляционного отношения, Comment - комментарий, а остальные атрибуты - наследники AtrIden, DomIden, TypeIden. Пример наполнения этого метаописания для реляционной базы данных сетей Петри приводится ниже (в виде экземпляра схемы универсального отношения) как экземпляр petry(RDB).
rdb(RSS)
AtrIden DomIden TypeIden
RelId RelDm iden
AtrId AtrDm iden
DomId DomDm iden
TypId TypDm type
Comnt ComDm string
petry(RDB) RelId AtrId DomId TypId Comnt
S SN SNDm iden место-состояние
S SM SMDm unsigned кол-во ресурсов
T TN TNDm iden место-переход
T TD TDDm timedelay задержка
ST SN SNDm iden связь с состоянием
ST TN TNDm iden связь с переходом
ST TI TIDm unsigned захватываемые ресурсы
TS TN TNDm iden связь с переходом
TS SN SNDm iden связь с состоянием
TS TO TODm unsigned сбрасываемые ресурсы
SP SN SNDm iden состояние воздействия
SP TM TMDm time момент воздействия
SP NM NMDm int кол-во ресурсов
EC TN TNDm iden активный переход
EC TK TKDm time окончание активности
TP TN TNDm iden процесс перехода
TP TK TKDm time окончание процесса
Мы использовали одно универсальное отношение для метаописания реляционной базы данных. Каждому идентификатору реляционного отношения (т.е. T, S, ST, TS, SP, EC, TP) в схеме реляционной базы данных сети Петри соответствует подмножествокортежей (по количеству атрибутов) в схеме для одного экземпляра реляционного отношения (как объекта в реляционной базе данных). Ясно, что далеко не все из них будут иметь один атрибут. Поэтому считать, что каждый кортеж есть объект – не всегда правильно. Более того, далеко не всякое подмножество кортежей в реляционном отношении можно трактовать как некий объект. Но вопрос выделения объектов связан с проблемой семантики реляционных баз данных, которая интенсивно разрабатывается исследователями.