Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
36
Добавлен:
16.04.2013
Размер:
1.06 Mб
Скачать

IsLaw UsrId ExmId SchId MetaN

rwed SADM petry SC 1

rwed SADM petry EC 1

rwed SADM petry LC 1

rwed SADM petry UC 1

rwed SADM test S 0

rwed SADM test T 0

rwed SADM test TS 0

rwed SADM test ST 0

rwed SADM test SP 0

rwed SADM test EC 0

rwed SADM test TP 0

rwed USER1 test S 0

rwed USER1 test T 0

rwed USER1 test TS 0

rwed USER1 test ST 0

r USER1 test SP 0

r USER1 test EC 0

r USER1 test TP 0

r USER2 test S 0

r USER2 test T 0

r USER2 test TS 0

r USER2 test ST 0

rwed USER2 test SP 0

rwed USER2 test EC 0

rwed USER2 test TP 0

Маска прав пользователя «rwed» позволяет ему читать (read), записывать (write), редактировать (edit) и удалять (delete) экземпляр реляционного отношения. Все эти возможности в руках системного администратора. Два пользователя распределили между собой объязанности по формированию схемы сети Петри (первый) и множества расчетов её функционирования (второй). Эту технологическую договоренность они закрепили в базе данных с помощью системного администратора. При этом оба имеют возможность ознакомиться как с постановкой задачи и вариантами расчетов при различных внешних воздействиях.

Структуру и наполнение словаря данных РБД мы описали. Возможеный вариант наполнения базы данных имитационного моделирования сетей Петри задачей «test» был приведен ранее. Можно считать законченным описание реляционной базы данных для задачи моделирования сетей Петри.

Непредсказуемость жизни программного продукта хорошо известна и может потребовать развития нашей модели данных. Например, нам потребуется явная поддержки системного соглашения о базовых типах данных для доменов (каталог типов TC), выделения каталога атрибутов (АС) и более подробное описание доменов с указанием диапазонов допустимых значений. Очевидно, что словарь данных будет повергнут редакции. Конкретно, довольно громоздкое системное отношение каталога схем подвергнется декомпозиции (с учетом смысла метаданных). Интересно рассмотреть, что из этого может получиться.

      1. Некоторые операции с метаданными.

«Все существует согласно необходимости… »

ПАРМЕНИД из Элеи, 540-470гг. до н.э.

Метаданные необходимы для регламентации работы множества пользователей с общим хранилищем данных. В нашей простой реляционной БД администратор добавляет или удаляет:

  • схемы и экземпляры реляционных отношений;

  • пользователей реляционной базы данных;

  • права пользователей по отношению к данными.

Рассмотрим некоторые операции добавления кортежа в каталоги системным администратором:

  1. Регистрируется новый пользователь в UC.

  2. Устанавливаются права пользователя на экземпляр отношения в LC.

  3. Регистрируется новая или модифицируется схема в SC .

  4. Регистрируется новый экземпляр схемы в EC.

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

  1. Исключаются права пользователя на экземпляр отношения в LC.

  2. Исключается пользователь в UC.

  3. Исключается экземпляр схемы в EC.

  4. Исключается схема в SC.

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

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

  • newSC – модифицированный каталог схем;

  • newAC – каталог атрибутов;

  • newDC – каталог доменов;

  • newTC – каталог типов данных.

petry(newSC) petry(newAC)

MetaN SchId AtrId isKey MetaN AtrId DomId

1 newSC MetaN 1 1 MetaN MetDm

1 newSC SсhId 1 1 SchId SсhDm

1 newSC AtrId 1 1 AtrId AtrDm

1 newSC isKey 0 1 isKey KeyDm

1 newAC MetaN 1

1 newAC AtrId 1

1 newAC DomId 0 1 DomId DomDm

1 newDC DomId 1

1 newDC Min 0 1 Min MinDm

1 newDC Max 0 1 Max MaxDm

1 newDC TypId 0 1 TypId TypDm

1 newTC TypId 1

1 newTC Size 0 1 Size SizDm

1 newTC ... 0 1 ... ...

1 EC Pool 0 1 Pool PntDm

1 EC ExmId 1 1 ExmId ExmDm

1 EC SсhId 1

1 EC MetaN 1

1 LC isLaw 0 1 isLaw LawDm

1 LC UsrId 1 1 UsrId UsrDm

1 LC ExmId 1

1 LC MetaN 1

1 LC SсhId 1

1 UC Parol 0 1 Parol PrlDm

1 UC UsrId 1

0 S SN 1 0 SN SNDm

0 S SM 0 0 SM SMDm

0 T TN 1 0 TN TNDm

0 T TD 0 0 TD TDDm

0 ST SN 1

0 ST TN 1

0 ST TI 0 0 TI TIDm

0 TS TN 1

0 TS SN 1

0 TS TO 0 0 TO TODm

0 SP SN 1

0 SP TM 1 0 TM TMDm

0 SP NM 0 0 NM NMDm

0 EC TN 1

0 EC TK 1 0 NK TKDm

0 TP TN 1

0 TP TK 1

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

<имя экз.резул.>(A) = ПА(<имя экз.>(<имя схемы >)),

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

petry(newSC) = П{MetaN, SchId, AtrId, isKey}(petry(SC)),

petry(newAC) = П{MetaN, AtrId, DomId}(petry(SC)),

petry(DC) = П{DomId, TypId}(petry(SC)).

где в последнем случае newDC = DC  {Min, Max}.

petry(newDC) petry(newTC)

DomId Min Max TypId TypId Size ...

MetDm 0 1 int bool 1 ...

SсhDm * * iden char 8 ...

AtrDm * * iden short 16 ...

KeyDm 0 1 bool int 32 ...

DomDm * * iden long 64 ...

MinDm * * value float 32 ...

MaxDm * * value double 64 ...

TypDm * * iden value * ...

SizDm 0 * int rwed 4 ...

... ... ... ... ...

PntDm 0 232 pntr pntr 32 ...

ExmDm * * iden time 32 ...

LawDm 1 15 rwed delay 32 ...

UsrDm * * iden string * ...

PrlDm * * iden iden * ...

SNDm * * iden

SMDm 0 * int

TNDm * * iden

TDDm 1 232 tmdelay

TIDm 0 232 int

TODm 0 232 int

TMDm 0 232 time

NMDm -231 +231 int

TKDm 0 232 time

Каталог petry(newTC) имеет несколько иной контест, чем введеные до него новые каталоги. Это не результат проекции экземпляра petry(SC), а системное соглашение о допустимых (т.е. поддерживаемых средой хранения и манипулирования данными) базовых типах данных. Подразумевается, что каждый базовый тип данных поддерживается программно. Поэтому данный каталог играет роль интерфейса, т.е. должен соблюдаться безусловно. Просто так добавить кортеж в него – нельзя. Объязательно надо сделать программную поддержку для нового базового типа данных.

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

30

Соседние файлы в папке УП_ОПТ2