Операции в релационния модел на данни
Релационна алгебра, т.е. алгебрично представяне, в което заявките се изразяват с помощта на специални релационни оператори.
Релационно смятане, т.е. логическо изображение, в което заявките се изразяват чрез формулиране на някои логически ограничения, на които трябва да отговарят кортежите.
Релационната алгебра е въведена от E. F. Codd през 1972 г. Състои се от много операции върху отношенията:
SELECT (σ): извлича кортежи от релация, които отговарят на дадени условия. Нека R е таблица, съдържаща атрибут A . σ A=a (R) = t обозначава кортежа R и t(A) обозначава стойността на атрибут A на кортежа t.
ПРОЕКТ (π): извлича дадените атрибути (колони) от релацията. Нека R е релация, съдържаща атрибут X . π X (R) = R >, където t (X) означава стойността на атрибута X на кортежа t.
ПРОИЗВЕДЕНИЕ (×): конструирайте декартовото произведение на две съотношения. Нека R е таблица със степен k 1 и S е таблица със степен k 2 . R × S е множеството от всички k 1 + k 2 -кортежи, където първите са k 1 елемента от кортежа R и където последните са k 2 елемента от кортежа S .
UNION (∪): конструирайте теоретико-множествено обединение на две таблици. При дадени таблици R и S (и двете трябва да имат една и съща степен), обединението R ∪ S е набор от кортежи, които принадлежат на R или S или и на двете.
INTERSECT (∩): конструиране на теоретично пресичане на две таблици. Дадени таблици R и S, R ∪ S е множеството от кортежи, принадлежащи на R и S. Отново е необходимо R и S да имат еднаква степен.
РАЗЛИКА (− или ∖): начертайте набора от разлики от две таблици. Нека R и S са отново две таблици с еднаква степен. R - S е множеството от R кортежи, които не принадлежат къмС.
JOIN (∏): Свържете две таблици по общите им атрибути. Нека R е таблица с атрибути A, B и C и S е таблица с атрибути C, D и E. Има един атрибут, общ за двете връзки, атрибутът C. R ∏ S = π R.A,R.B,R.C,S.D,S.E (σ R.C=S.C (R × S)). какво става тук Първо се изчислява декартовото произведение R × S. След това се избират тези кортежи, чиито стойности на общия атрибут C са еквивалентни (σ R.C = S.C). Вече имаме таблица, която съдържа два пъти атрибута C и ще поправим това, като премахнем дублиращата се колона.
Пример 2-2. Вътрешно присъединяване
Нека да разгледаме таблиците, които са резултат от стъпките, необходими за сливане. Нека са дадени следните две таблици:
R A B C S C D E ---+---+--- ---+---+--- 1 2 3 3 a b 4 5 6 6 c d 7 8 9
Първо, изчисляваме декартовия продукт R × S и получаваме:
R x S A B R.C S.C D E ---+---+-----+-----+---+--- 1 2 3 3 a b 1 2 3 6 c d 4 5 6 3 a b 4 5 6 6 c d 7 8 9 3 a b 7 8 9 6 c d
След вземане на проби σ R.C=S.C (R × S) получаваме:
A B R.C S.C D E ---+---+-----+-----+---+--- 1 2 3 3 a b 4 5 6 6 c d
Премахнете дублиращата се колона S. C може да се направи с помощта на проекцията със следната операция: π R.A,R.B,R.C,S.D,S.E (σ R.C=S.C (R × S)) и получаваме:
A B C D E ---+---+---+---+--- 1 2 3 a b 4 5 6 c d
DIVISION(DIV >R е таблица с атрибути A, B, C и D и нека S е таблица с атрибути C и D. Можем да дефинираме разделянето като: R ÷ S = където t r (x,y) означава кортеж от таблица R, който се състои само от елементи x и y. Обърнете внимание, че кортежът t се състои само от елементи A и B на релацията R.
Дефинирайте следните таблици
R A B C D S C D---+---+---+--- ---+--- a b c d c d a b e f e f b c e f e d c d e d e f a b d e
Получава се R ÷ S
A B ---+--- a b e d
За по-подробно описание и дефиниция на релационната алгебра вижте [Ullman, 1988] или [Data, 1994].
Пример 2-3. Запитване с помощта на релационна алгебра
Спомнете си, че ние формулираме всички тези релационни оператори, за да получим данни от базата данни. Нека се върнем към нашия пример от предишния раздел (Операции на релационния модел на данни), където някой искаше да знае имената на всички доставчици, продаващи частта Screw. На този въпрос може да се отговори с помощта на следните операции на релационната алгебра:
π SUPPLIER.SNAME (σ PART.PNAME='Винт' (ДОСТАВЧИК ∏ ПРОДАВА ∏ ЧАСТ))
Такава операция ще наричаме заявка. Ако приложим горната заявка към нашите примерни таблици (база данни за доставчици и части), получаваме следния резултат:
ИМЕ-------Смит Адамс
Релационното смятане се основава на логика от първи ред. Ако два варианта на релационно смятане:
Домейн изчисление (DRC), където променливите са елементи (атрибути) на кортеж.
Кортежното смятане (TRC), където променливите са кортежи.
Искаме да обсъдим кортежното смятане, защото то е в основата на повечето релационни езици. За подробно обсъждане на DRC (и също TRC), вижте [Data 1994] или [Ullman 1988].
Заявките, използващи TRC, са представени по следния начин: x(A) &m >x е променлива от кортеж, A е набор от атрибути и F е формула. Получената релация се състои от всички кортежи t(A), които отговарят на F(t) .
Релационната алгебра и релационното смятане имат същотоизразяване на сила; тези. всички заявки, които могат да бъдат формулирани с помощта на релационна алгебра, също могат да бъдат формулирани с помощта на релационно смятане и обратно. E. F. Codd е първият, който доказва това през 1972 г. Това доказателство се основава на алгоритъм („алгоритъм за редукция на Код“), чрез който произволен израз на релационно смятане може да бъде редуциран до семантично еквивалентен израз на релационна алгебра. Вижте [Дата 1994] и [Ullman 1988] за по-подробна дискусия.
Понякога се казва, че езиците, базирани на релационно смятане, са от "по-високо ниво" или "по-описателни" от езиците, базирани на релационна алгебра, тъй като алгебрата (частично) определя реда на операциите, докато смятането оставя на компилатора или интерпретатора да определи най-ефективния ред на оценка.