Строительные исследования
страница - 1
(71,р)-(/2,р)= (IQ),p) для Q=(R1-R2)[K], где R1 и R2 - значения родительских таблиц в объектах (I1,p) и (I2,p) соответственно и K - их первичный ключ. Кроме того, на объект o можно действовать, замещая значение любой его ячейки t[q,a] новым значением d из домена Da атрибута а. Эта операция называется присвоением на o и записывается как t[q,a] := d. Конечная последовательность присвоений на объекте называется оператором присвоения на нем.
Вводятся также следующие четыре операции манипулирования с объектами: select - чтение, insert - запись, delete - стирание и update - обновление. Каждая такая операция является функцией от двух аргументов и записывается в форме name(o,P), где name - имя операции, o - объект и а -способ адресации данных. Адресация данных может быть прямой или косвенной. При прямой адресации данное указывается явно и операция называется безусловной, а при косвенной -посредством логического выражения и операция называется условной. Результатом операции является объект. Все объекты, участвующие в операции, однотипные.
Пусть o=(I,p) и d суть однотипные объект и данное с родительскими таблицами (t,S) и (t,s) соответственно и с первичным ключом K. Тогда
к если s[K ]eS[K ]; .(o d) = J o, если s[K ] £ S [K ];
insert (o d) - Ьесли s[K ]eS[K]; • delete (o d)=joесли s[K ] £ S[K ];
v k>d, в противном случа) [ o - d в противном случае
d t ((t S) ) = J (t,S), если s[K]gS[K]; update ((t, S s) - j (t,(S-{s1})u{s» в противном случае ,
где o1 - данное в o со значением первичного ключа s[K].
Пусть, кроме того, P есть некоторое логическое выражение, принадлежащее объекту o, и
объект o(P) является объединением всех данных объекта o, удовлетворяющих условию P, т.е. таких
объектов o1e8(o), для которых P(o1)=h. Пусть также S(P)={r: reS&P(t,r)}=h. Тогда
. m ,m , , , „Jo, если s[K] e (S - S(P))[K];
select (o,P)=o(P); delete (o,P)=o-o(P); update (o,dP) -\ ( )" m J.
[(t, (S - S (P)) u {j) в противном случае
В частном случае, когда объект o является информационной таблицей (t,S), эти операции можно переписать так:
insert ((t,S), s) -j (t.S )•е(слиstKP] eW;; delete((t, S), s)-J ( S>-{eJ)I s[K] £;
vv [(t,S u {s}) в противном случаеvv [ (t, S - {s}), в противном случае
update ((t, S), s) - j (t ec™s[K{ )S[K;, где s1 eS и s1[K]=s[K];
vv 1 (t,(S - {s) u {s}) в противном случае
select ((t,S),P)=(t,S(P));delete ((t,S),P)=(t,S-S(P));
dt ((tS) P) Jo, если s[K] e (S - S(P))[K]; update ((t,S),sP) -j (t({j.
[ (t, (S - S (P)) u {)) в противном случае
Наконец, для любого множества данных D={d1, dm}, однотипных объекту o, и для каждой операции namee {insert, delete, update} определяется
name(o,D) = name((name(name(o,d1), d2), ..., dm).
Заметим, что, по определению, все операции с данными некоторого объекта могут изменить лишь значения таблиц в объекте, но не изменяют ни самих таблиц, ни отношения ссылочности между таблицами объекта.
Отношение подчиненности Для любых двух объектов o1=(I1,p) и o2=(I2,p) говорят, что o2 ссылается на o1, или o2 подчинен объекту o1, и пишут o2po1, если в I2 есть таблица с внешним ключом, ссылающимся на первичный ключ объекта o1, т.е. если в графе (I1uI2,p) есть дуга, соединяющая некоторую вершину в I2 со стоком графа o1. Отношение подчиненности между объектами, как видим, не зависит от значений
таблиц в объектах. Ввиду последнего замечания это значит, что отношение подчиненности, заданное на некотором множестве объектов O, сохраняется в любом множестве объектов O*, полученном преобразованием O с помощью операций с данными объектов в O. В дальнейшем мы пользуемся этим фактом без дополнительных оговорок.
База данных
Пусть O есть некоторое множество попарно непересекающихся объектов, pczO2 - отношение подчиненности на O и %: p2{0,1,2} - функция, которая каждой паре объектов (о2,о1) в p ставит в соответствие число %(o2,oi)e {0,1,2}, называемое характеристикой подчиненности о2 объекту о1, так, что если o2po1 и для некоторой таблицы в о2, внешний ключ K12 которой ссылается на первичный ключ K1 объекта о1, имеет место K12n K10, то х(о2,о1)2. Тогда тройка (O,p,x) называется базой данных, если выполнены следующие два условия:
1)условие определенности первичного ключа - для первичного ключа K любой информационной таблицы (t,S)eIT(O) справедливо Л<£S[K];
2)условие ссылочной целостности объектов - для любых двух таблиц из разных объектов в O если внешний ключ одной из них ссылается на первичный ключ другой, то эта другая таблица должна быть непременно родительской в своем объекте, т. е. в неродительские таблицы одних объектов нет ссылок из таблиц других объектов.
Вместе с условием ссылочной целостности таблиц эти условия называются условиями целостности базы данных.
По определению, все объекты в базе данных разнотипные. Заметим также, что характеристика подчиненности объектов не зависит от значений таблиц в последних и, таким образом, сохраняется операциями преобразования объектов.
Данные и таблицы объектов базы данных называются ее данными и таблицами соответственно. Каждое данное в любой базе данных однозначно идентифицируется по имени объекта, которому оно принадлежит, и значению в нем первичного ключа этого объекта, т.е. своим идентификатором.
База данных называется формальной, если формальным является каждый объект в ней. Две базы данных называются однотипными, если каждый объект любой из них однотипен с некоторым объектом другой. По определению, однотипные базы данных имеют одно и то же число объектов, одно и то же отношение подчиненности и одну и ту же характеристику подчиненности.
Права доступа
Любое подмножество множества {ins, sel, del, upd} называется правом доступа. Элементы в нем называются правами записи, чтения, стирания и обновления данных соответственно. Права sel, del, upd называются правами модификации данных. Прямоугольная матрица M, в которой столбцы поставлены во взаимно однозначное соответствие данным некоторой базы данных B, представленным их идентификаторами, а элементами являются права доступа, называется матрицей прав доступа к этой базе. В ней строки называются субъектами базы, а элемент M[u,(o,q)] в строке u и столбце, соответствующем (o,q), - правом доступа субъекта u к данному (o,q). Если это право пустое, то говорят, что субъект u не имеет прав доступа к данному (o,q); если же какая-то из операций ins, sel, del или upd принадлежит к M[u,(o,q)], то говорят, что субъект u имеет по отношению к данному (o,q) право записи, чтения, стирания или обновления соответственно. Все столбцы, соответствующие данным (o,q) с фиксированным о, называются столбцами для объекта о.
Команды изменения прав Допускаются следующие операции преобразования матрицы прав доступа M:
1)расширение права доступа какого-либо субъекта к какому-либо данному - в некоторый элемент матрицы вписываются дополнительные права;
2)сужение права доступа какого-либо субъекта к какому-либо данному - из некоторого элемента матрицы удаляются некоторые права;
3)создание объекта - введение в матрицу столбцов для нового объекта с пустым правом доступа в них всех субъектов;
4)уничтожение объекта - удаление из матрицы соответствующих столбцов;
5)создание субъекта - введение в матрицу новой строки с пустым правом доступа во всех столбцах;
6)уничтожение субъекта - удаление из матрицы соответствующей строки. Если ф - любая из этих операций, то пусть ф(М) - это матрица, которая получается как
результат применения ф к матрице M. Если ф=ф1 ф2 ... ф„ - произвольная последовательность указанных операций, то пусть ф(М)= ф„((ф2(ф1(М))) ).
Если ф - произвольный набор из операций преобразования матрицы M и \/(M) - формула алгебры высказываний, построенная из элементарных высказываний вида reM[u, (o,q)], где r -любое из прав записи, чтения, стирания или обновления и M[u, (o,q)] - произвольный элемент матрицы M, то пара к=(\/(М),ф) называется командой изменения прав доступа, заданных матрицей М. В ней \/ называется условием для выполнения команды. Результатом применения команды к к M является матрица k(M) такая, что k(M)=M, если \/(M)=i, и к(M)=ф(M) в противном случае. Если к=к1к2 к„ - произвольная последовательность команд изменения прав доступа в M, то результат ее применения к M определяется как матрица k(M) = k„( (k2(k1(M))) ). Множество результатов применения к матрице M всевозможных конечных последовательностей команд из некоторого множества К команд изменения прав доступа обозначается K*(M). Если M - это матрица прав доступа к базе B, то M и матрицы в K*(M) называются состояниями доступа базы B.
Ограниченные операции с объектами В случае, когда информационные объекты принадлежат некоторой базе данных и доступ к данным в них ограничивается состоянием доступа этой базы, соответствующим образом ограничиваются и операции манипулирования с объектами: insert, select, delete, update. Обозначенные соответственно как ins, sel, del, upd, эти ограничения операций определяются следующим образом. Пусть u - произвольный субъект базы данных, ц - ее состояние доступа, o - ее объект, d - произвольное данное, однотипное с o, s - значение первичного ключа в d и P -логическое выражение, принадлежащее объекту o. Тогда для name {ins, del, upd}
nam (u,u, o, d) - j ° еслИ Г*
v [ nam(o, d) в противномслучае
и, кроме того,
sel(u,u,o,P) = select(o-{(o,q): sel£u[u, (o,q)]}, P); del(u,u,o,P) = delete(o-{(o,q): del£u[u, (o,q)]}, P); upd(u,u,o,dP) = update(o-{(o,q): upd£u[u, (o,q)]}, dP).
Операции с базами данных Распространим предыдущие операции на базы данных, введя следующие четыре операции: Sel - чтение, Ins - запись, Del - стирание и Upd - обновление. Каждая из них является функцией от пяти аргументов и записывается в форме Nam(u,j,,P,o,a), где Nam - имя операции, Name {Sel, Ins, Del, Upd}, P=(0,p,x) - база данных, u - субъект базы в, ц - ее состояние доступа, o - объект в в и а -способ адресации данных. Операция действует лишь на данные в базе, изменяя значения таблиц в O и сохраняя параметры p, х. Результатом операции является база данных, однотипная с в.
содержание:
[стр.Введение] [стр.1] [стр.2] [стр.3]
