Лекции по бази данни


Проекция на мултимножества



страница7/10
Дата16.12.2016
Размер1.96 Mb.
#11293
ТипЛекции
1   2   3   4   5   6   7   8   9   10

Проекция на мултимножества
Проекцията на една релация R с екземпляр мултимножество се осъществява по аналогичен начин на проекцията при множества - всеки кортеж се проектира независимо. Разликата е, че в резултата не се елиминират дубликатите.

Ще разгледаме пример.

Нека R е следната релация:


A

B

C

1

2

5

3

4

6

1

2

7

1

2

8

Тогава релацията A,B (R) изглежда по следния начин:

A

B

1

2

3

4

1

2

1

2

Ако прилагаме проекция на множества, кортежът (1, 2) ще се среща само един път в резултата.
Селекция на мултимножества
Селекцията на една релация R с екземпляр мултимножество се осъществява по аналогичен начин на селекцията при множества - към всеки кортеж на R се прилага независимо условието за селекция.

Отново разликата е, че в резултата не се елиминират

дублиращите се кортежи. Ще разгледаме пример.

Нека R е следната релация:



A

B

C

1

2

5

3

4

6

1

2

7

1

2

7

Тогава релацията C>6 (R) има следния вид:

A

B

C

1

2

7

1

2

7


Декартово произведение на мултимножества
Нека R, S са релации с екземпляри мултимножества. Тогава декартовото произведение R x S се изчислява по естествения начин - всеки

кортеж на R независимо се съединява с всеки кортеж на S.

С други думи, ако един кортеж t се среща m пъти в R и един кортеж s се среща n пъти в S, то съединението на кортежите t и s ще се среща m.n пъти в R x S. Ще разгледаме пример.

Нека R е следната релация:



A

B

1

2

1

2

Нека S е следната релация:

B

C

2

3

4

5

4

5

Toгава R x S е следната релация:

A

R.B

S.B

C

1

2

2

3

1

2

4

5

1

2

4

5

1

2

2

3

1

2

4

5

1

2

4

5


Съединение на мултимножества
Нека R, S са релации с екземпляри мултимножества.

Тогава при съединение на R и S всеки кортеж на R независимо се изпробва да се съедини с всеки кортеж на S. В резултата не се премахват дубликатите.

Ще разгледаме примери за естествено съединение и тита-съединение с релациите R и S, които въведохме непосредствено по-горе.

Релацията R ⋈ S изглежда по следния начин:



A

B

C

1

2

3

1

2

3

Релацията R ⋈ R.B < S.B S изглежда по следния начин:

A

R.B

S.B

C

1

2

4

5

1

2

4

5

1

2

4

5

1

2

4

5


Разширени операции на релационната алгебра
Разгледаните операции върху множества и мултимножества са в основата на всеки съвременен език за заявки. Сега ще разгледаме други операции, които разширяват функционалността на класическата релационна алгебра. Тези операции са реализирани в SQL.

  1. Операция  за премахване на дублиращите се кортежи.

  2. Агрегатни операции - SUM, AVG, MIN, MAX, COUNT. Тези операции не са от релационната алгебра, т.е. те не преобразуват релации в релации. Използват се при операцията за групиране.

  3. Операция  за групиране - групира кортежите на една релация по еднакви стойности на част от атрибутите.

Върху останалите атрибути се прилагат агрегатни функции в

рамките на всяка група.



  1. Разширена проекция - чрез нея могат да се въвеждат нови атрибути, които се изчисляват на базата на съществуващите атрибути.

  2. Операция  за сортиране - превръща релацията в списък от кортежи, сортирани по един или повече атрибути.

  3. Операция за външно съединение - вариант на съединение, чрез което се избягва загубата на информация от висящите кортежи.


Операция за премахване на дубликати
Нека R е релация с екземпляр мултимножество. Операцията за премахване на дубликати се означава по следния начин:  (R).

Резултатната релация има същата схема, както R и в нейния екземпляр всеки кортеж на R се среща точно по един път. С други думи, операцията  преобразува екземпляр на релация от мултимножество в множество. Ще разгледаме пример. Нека R е следната релация:



A

B

1

2

3

4

1

2

1

2

Тогава  (R) е следната релация:



A

B

1

2

3

4


Агрегатни операции
Агрегатните операции се прилагат върху множества или мултимножества от атомарни стойности в една колона на релация.

Стандартно се поддържат следните агрегатни операции:



  1. SUM - намира сумата от стойностите в колона с числа.

  2. AVG - намира средното аритметично на стойностите в колона с числа.

  3. MIN - намира най-малката стойност в колона с числа (относно стандартната наредба на числата) или с низове (относно лексикографската наредба на низовете).

  4. MAX - намира най-голямата стойност в колона с числа (относно стандартната наредба на числата) или с низове (относно лексикографската наредба на низовете).

  5. COUNT - намира броят на стойностите в произволна колона.

Ще разгледаме примери с горната релация R.

SUM (B) = 2+4+2+2 = 10

AVG (B) = (2+4+2+2)/4 = 2.5

MIN (A) = 1

MAX (B) = 4

COUNT (A) = COUNT (B) = 4


Операция за групиране
Много често се налага агрегатна функция да не се прилага върху цяла колона на една релация, а кортежите да се разбият на групи и агрегацията да се извършва независимо в рамките на всяка група.

Нека R е релация. Операцията за групиране означаваме

по следния начин: L (R). L е списък от елементи от следните два вида:


  1. Атрибут на R, по който се прилага групирането. Такъв елемент се нарича групиращ атрибут.

  2. Агрегатна функция, приложена към атрибут на R, последвана от стрелка и име на атрибута в резултата. Такъв елемент се нарича агрегиран атрибут.

Схемата на резултатната релация се получава от имената на

атрибутите в L.

Екземплярът на резултатната релация се получава по следния начин:


  1. Разбиваме кортежите на R на групи. Всяка група се състои от всички кортежи, които покомпонентно се съгласуват по стойностите на групиращите атрибути. Ако няма групиращи атрибути, то всички кортежи в R образуват една група.

  2. За всяка група в резултатната релация се генерира точно един кортеж, който се състои от стойностите на групиращите атрибути за тази група и агрегациите на кортежите в групата върху агрегираните атрибути.

Ще разгледаме два примера.

Разглеждаме релацията Movie (title, year, length, type, studioName).

Да предположим, че трябва да изпълним следната заявка:

“Да се намери общата дължина на филмите на всяко студио.”

Тогава съответният израз, който трябва да използваме е следния:

studioName, SUM (length)totalLength (Movie).

Разглеждаме релацията StarsIn (title, year, starName).

Да предположим, че трябва да изпълним следната заявка:

“Да се намерят годините на най-ранните участия на тези звезди, които са играли в поне три филма.”

Едно възможно решение е да групираме по starName, като агрегираме title чрез COUNT и year чрез MIN, след което да извършим подходяща селекция и проекция. Съответният израз е следния:

starName, minYear (ctTitle>=3 ( starName, MIN (year)minYear, COUNT (title)ctTitle (StarsIn))).
Да отбележим, че операторът за премахване на дубликати е частен случай на оператора за групиране. Действително, ако A1, A2, …, An са атрибутите на релация R, то изразът  (R) е еквивалентен на израза

(R). Действително, при изчисляване на последния израз се групират еднаквите кортежи и в резултата се включва по един кортеж от всяка група.
Разширена проекция
Нека R е релация. При класическата проекция L (R), L е списък от атрибути на релацията R. При разширената проекция, която се означава по същия начин, L е списък от елементи от следните видове:


  1. Атрибут на R.

  2. Израз от вида Expr  R, където Expr е израз, включващ атрибути на R, константи, аритметични операции или операции за стрингове, а R е новото име на атрибута, който се получава като резултат от изчисляването на израза Expr.

Схемата на резултатната релация се получава от имената на

атрибутите в L. В екземпляра на резултатната релация има по един кортеж за всеки кортеж от екземпляра на R. Този кортеж получаваме, като заместим в L стойностите на съответните атрибути и извършим съответните операции. При това, в резултата могат да се съдържат повтарящи се кортежи, дори в първоначалната релация да няма дубликати. Ще разгледаме примери.

Нека R е следната релация:


A

B

C

0

1

2

0

1

2

3

4

5

Тогава релацията A, B+CX (R) има следния вид:



A

X

0

3

0

3

3

9

Релацията B - AX, C - BY (R) има следния вид:

X

Y

1

1

1

1

1

1


Операция за сортиране
В много случаи при извеждане на кортежите на една релация е удобно те да бъдат сортирани. Нека R е релация. Операцията за сортиране бележим по следния начин: L (R). L е списък от атрибути на R, спрямо който се осъществява сортирането. Резултатната релация има същата схема като R и същите кортежи като R, но сортирани по атрибутите в L, т.е. първо по най-левия атрибут в L, при равенство по следващия атрибут в L и т.н. Операцията  е единствената разглеждана операция, която като резултат дава списък. Затова има смисъл  да се прилага в края на серия от операции, тъй като операциите в релационната алгебра се прилагат върху множества и мултимножества, а не върху списъци.

Ако след  се изпълни друга операция на релационната алгебра, то резултатът от  се третира като множество (мултимножество).

В някои случаи, обаче, е по-ефективно да се изпълни дадена операция върху сортирана релация, така че понякога с цел ефективност е смислено да използваме  като междинна операция.
Външно съединение
Едно свойство на операцията съединение е, че е възможно някои от кортежите на една релация да са висящи, т.е. да не успеят да се съединят с никой кортеж от другата релация. Информацията за висящите кортежи се губи в резултата, което в някои случаи не е желателно. Поради тази причина се въвежда външно съединение.

Нека R, S са релации.



Външно естествено съединение на R и S се означава така: R ⋈ S. Резултатната релация се получава по следния начин: изчисляваме R ⋈ S и добавяме висящите кортежи на R и на S, като запълваме с

NULL-стойности () всички атрибути, които не са техни, но присъстват в резултата от съединението.



Ляво външно естествено съединение на R и S се означава по следния начин: R L⋈ S. То е аналогично на обикновеното външно съединение, но в резултатната релация се добавят само висящите кортежи на R (допълнени с NULL-стойности).

Дясно външно естествено съединение на R и S се означава по следния начин: R R⋈ S. То е аналогично на обикновеното външно съединение, но в резултатната релация се добавят само висящите кортежи на S (допълнени с NULL-стойности).

Външно тита-съединение на R и S се означава така: R ⋈C S.

Тук C е условен израз, в който могат да участват атрибути на R и на S. Резултатната релация се получаваме по следния начин:

изчисляваме R ⋈C S и добавяме висящите кортежи на R и на S, като запълваме с NULL-стойности всички атрибути, които не са техни, но присъстват в резултата от съединението.

Ляво външно тита-съединение на R и S се означава

по следния начин: R LC S. То е аналогично на обикновеното външно тита-съединение, но в резултатната релация се добавят само висящите кортежи на R (допълнени с NULL-стойности).



Дясно външно тита-съединение на R и S се означава по следния начин: R RC S. То е аналогично на обикновеното външно

тита-съединение, но в резултатната релация се добавят само висящите кортежи на S (допълнени с NULL-стойности).

Ще разгледаме примери.

Нека U е следната релация:



A

B

C

1

2

3

4

5

6

7

8

9

Нека V е следната релация:

B

C

D

2

3

10

2

3

11

6

7

12

Тогава U ⋈ V, U L⋈ V, U R⋈ V имат съответно следния вид:

A

B

C

D







A

B

C

D







A

B

C

D













1

2

3

10







1

2

3

10







1

2

3

10













1

2

3

11







1

2

3

11







1

2

3

11













4

5

6









4

5

6











6

7

12













7

8

9









7

8

9



































6

7

12

















































Релацията U ⋈А>V.C V изглежда така:

A

U.B

U.C

V.B

V.C

D

4

5

6

2

3

10

4

5

6

2

3

11

7

8

9

2

3

10

7

8

9

2

3

11

1

2

3













6

7

12

Естествено, U L А>V.C V се получава като премахнем последния ред на тази релация, а U R А>V.C V се получава като премахнем нейният предпоследен ред.
Каталог: materials
materials -> Исторически преглед на възникването и развитието на ес
materials -> Съюз на математиците в българия-секция русе коледно математическо състезание – 12. 2006 г. 4 клас
materials -> Великденско математическо състезание 12. 04. 2008 г. 2 клас Времето за решаване е 120 минути
materials -> Съюз на математиците в българия-секция русе коледно математическо състезание – 09. 12. 2006г
materials -> Съюз на математиците в българия-секция русе коледно математическо състезание – 12. 2006 г. 8 клас
materials -> Великденско математическо състезание 12. 04. 2008г. 3 клас
materials -> К а т е д р а " информатика"
materials -> Зад. 2 Отг.: 5- 3т Зад. 3 Отг.: (=,-);(+,=);(+,=) по 1т., общо 3т. За
materials -> Іv клас От 1 до 5 зад по 3 точки, от 6 до 10 – по 5 и от 11 до 15 – по 7


Сподели с приятели:
1   2   3   4   5   6   7   8   9   10




©obuch.info 2024
отнасят до администрацията

    Начална страница