Классика баз данных - статьи

       

в конечном счете, оказывается, что


Но, в конечном счете, оказывается, что INSERT, DELETE и UPDATE являются всего лишь сокращенными формами некоторых видов реляционного присваивания. Например, предположим, что имеется обычная база данных поставщиков и деталей (примерный набор значений см. на рис. 1). Тогда оператор INSERT языка Tutorial D

INSERT SP RELATION

{ TUPLE { S# S#('S3'), P# P#('P1'), QTY QTY(150) },

  TUPLE { S# S#('S5'), P# P#('P1'), QTY QTY(500) } } ;

является сокращенной формой оператора присваивания

SP := ( SP ) UNION ( RELATION

{ TUPLE { S# S#('S3'), P# P#('P1'), QTY QTY(150) },

  TUPLE { S# S#('S5'), P# P#('P1'), QTY QTY(500) } } ) ;

Аналогично, оператор DELETE языка Tutorial D

DELETE S WHERE CITY = 'Athens' ;

является сокращенной формой оператора присваивания

S := S WHERE NOT ( CITY = 'Athens' ) ;



Рис. 1. База данных поставщиков и деталей – примерные значения

И оператор UPDATE языка Tutorial D

UPDATE P WHERE CITY = 'London'

( WEIGHT := 2 * WEIGHT, CITY := 'Oslo' ) ;

(немного более хитрым образом) является сокращенной формой оператора присваивания

P := WITH ( P WHERE CITY = 'London' ) AS T1,

( EXTEND T1

  ADD ( 2 * WEIGHT AS NW, 'Oslo' AS NC ) ) AS T2,

( T2 { ALL BUT WEIGHT, CITY } ) AS T3,

( T3 RENAME ( NW AS WEIGHT, NC AS CITY ) ) AS T4,

( P MINUS T1 ) AS T5 :

T5 UNION T4 ;

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


Содержание  Назад  Вперед