ullman146 (2)

ullman146 (2)



5. JĘZYK BAZ DANYCH SQL

zmienną krotkową i kropką. A więc zmienna krotkowa jest inną nazwą relacji R i można w razie potrzeby korzystać z niej tak samo jak z nazwy relacji.

PRZYKŁAD 5.12

W przykładzie 5.11 utworzyliśmy zapytanie o pary producent i aktor, którzy mają ten sam adres. Teraz chcemy uzyskać informacje o tych aktorach mających len sam adres. Struktura zapytania jest w tym przypadku taka sama jak poprzednio, różnica polega jedynie na tym, że teraz obie krotki tworzące parę będą dobierane z tej samej relacji Gwiazda, a nie jak poprzednio jedna z relacji Gwiazda, a druga z relacji Film. Do odróżniania odwołań do relacji Gwiazda skorzystamy ze zmiennych kratkowych jako synonimów nazwy gwiazda i wówczas zapytanie przybiera następująca postać:

SELECT Gwiazda1.nazwisko, Gwiazda2.nazwisko

FROK Gwiazda AS Gwiazdal, Gwiazda AS Gwiazda2

WHERE Gwiazdal.adres=Gwiazda2.adres

AND Gwiazdal.nazwisko < Gwiazda?..nazwisko

W klauzuli EROM występują dwie zmienne kratkowe Gwiazdal i Gwiazda2, które są synonimami relacji Gwiazda. Zmienne kratkowe występują w klauzuli select, poprzedzając składowe atrybutu nazwisko dwóch krotek. Te same synonimy występują także w klauzuli WHERE, po to by można było stwierdzić, że składowe adresu w dwóch rożnych krotkach relacji Gwiazda są takie same.

To, że są rozpatrywane tylko dwie różne kratki, jest zapewnione dzięki drugiemu warunkowi w klauzuli WHERE, tj. Gwiazdal .nazwisko < Gwiazda? .nazwisko, który oznacza, że nazwisko pierwszej gwiazdy poprzedza alfabetycznie nazwisko drugiej gwiazdy. Gdyby nie ten warunek, mogłoby się zdarzyć, ze zmienne kratkowe z relacji Gwiazdal i Gwiazda? wskazywałyby tę samą krotkę. Warunek WHERE byłby wówczas spełniony, bo adresy byłyby oczywiście równe, a do wyniku zostałaby dołączona para złożona z dwukrotnego wystąpienia nazwiska tej samej gwiazdy*. Drugi warunek narzuca także ograniczenie, aby para mająca wspólny adres w wyniku zapytania występowała tylko jeden raz. w porządku alfabetycznym. Gdybyśmy w tym warunku użyli znaku nierówności < > zamiast operatora porównania, to jedna i ta sama para zostałaby zaliczona do wyniku dw ukrotnie, na przykład:

Gwiazdal. nazwisko

Gwiazda2. nazwisko

Alec Baldwin Kim Basinger

Kim Basinger Alec Baldwin

* Ten sam problem pojawia się w sytuacjach takich, jak opisana w przykładzie 5.11, gdy gwiazda jest jednocześnie producentem. Podobnie również unika się takiej sytuacji, stawiając warunek, aby nazwiska w tworzonej krotce były różne.

5.2.4. Wykonywanie zapytań obejmujących wiele relacji

Istnieje wiele sposobów interpretowania wyrażeń zapisywanych w formie select-from-where. Wszystkie tc sposoby interpretacji są sobie równoważne w tym sensie, że zawsze na te same zapytania, bez względu na sposób interpretacji, otrzymuje się ten sam wynik, przy założeniu, że zapytania operują na tych samych danych. Poniżej opiszemy różne sposoby interpretowania zapytań.

Pętle zagnieżdżone

Dotychczas przy omawianiu sposobu wykonywania zapytań korzystaliśmy z semantyki zmiennych krotkowych. Przypomnijmy, że taką zmienną stanowi synonim nazwy relacji, a zakres tej zmiennej stanowią krotki relacji. Sama nazwa relacji także może być traktowana jako zmienna krotkowa, a jej zakresem jest właśnie dana relacja. Jeśli w zapytaniu występuje wiele zmiennych krotkowych, to można sobie wyobrazić pętle zagnieżdżone, po jednej dla poszczególnych zmiennych krotkowych. Dla każdego przypisania krotek do zmiennych krotkowych jest rozstrzygany warunek zawarty w klauzuli WHERE. Jeśli jest on spełniony, to z wartości atrybutów wymienionych w klauzuli SELECT jest tworzona krotka, którą dołącza się do wyniku. Wartości atrybutów' są określone dzięki bieżącemu przypisaniu krotek do zmiennych krotkowych. Na rysunku 5.2 przedstawiono algorytm tak rozumianego wykonania zapytania.

LET zmienne krotkowe z klauzuli przebiegają relacje Rl/ R2, .../ Rn;

FOR każda krotka tl z relacji Ri DO

FOR każda krotka t2 z relacji R2 DO

FOR każda krotka tn z relacji Rn CO

TF po zastąpieniu referoncjr atrybutów wartościami tl, t2, ..., tn klauzula where jest spełniona THEN

należy policzyć wartości atrybutów z klauzuli z odpowiednimi wartościami tl, t2, ..., tn i dopisać tak utworzona krotkę do wyniku.

RYSUNEK 5.2

Przetwarzanie prostego zapytania SQL

Przypisania równoległe

Definicja równoważna nie uwzględnia równoległego wykonywania pętli iterowanych po zmiennych krotkowy ch. Zamiast tego są rozważane równoległe przypisania wartości krotek z relacji do poszczególnych zmiennych


Wyszukiwarka

Podobne podstrony:
70987 ullman154 (2) .5 l*ł 5. JĘZYK BAZ DANYCH SQL MĆwiczenie 5.3.6. Można już było uprzednio dostrz
ullman138 (2) 5_Język baz danych SQL Język SQL stanowi najbardziej popularny mechanizm definiowania
ullman154 (2) .5 l*ł 5. JĘZYK BAZ DANYCH SQL MĆwiczenie 5.3.6. Można już było uprzednio dostrzec, że
ullman138 (2) 5_Język baz danych SQL Język SQL stanowi najbardziej popularny mechanizm definiowania
ullman176 (2) 5. jęZYK. BAZ DANYCH SQL Złączenie naturalne w języku $QL2 ma dokładnie takie same wła
ullman142 (2) 290 5. JEŻYK BAZ DANYCH SQL drugiego tekstu. Podobnie jak to występowało w przypadku t
ullman158 (2) 322 5. JĘZYK BAZ DANYCH SQL To nowe zapytanie zostało przedstawione na rys. 5.11. Powo
ullman161 (2) dZ5 5. JĘZYK BAZ DANYCH SQL jednocześnie zostanie usunięte kilka krotek, które spełnia
53669 ullman151 (2) 308 5. JEŻYK BAZ DANYCH SQL T5.3.2. Warunki obejmujące relacje W języku SQL
73749 ullman167 (2) 5. JĘZYK MA7. DANYCH SQL d) Schemat relacji Rezultat. c) Stosowną definicję dzie

więcej podobnych podstron