ullman145 (2)

ullman145 (2)



296 5. JĘZYK BAZ DANYCH SOL

W wyniku tego zapytania zostają przeszukane pary krotek, pierwsza z nich pochodzi z relacji Film, a druga z relacji FilmDyr. Warunek określający, które krotki mają być dołączone do wyniku, jest formułowany w klauzuli WHERE:

1.    Wartość atrybutu tytuł w relacji Film musi mieć wartość

'Gwiezdne Wojny'.

2.    Wartość atry butu producentC# w krotce Film ma być taka sama jak wartość atrybutu cer Lr w krotce relacji FilmDyr. Obie krotki w tej parze musza się odnosić do tego samego producenta.

Jeśli rozpatrywana krotka spełnia oba przedstawione wyżej warunki, to wówczas do wyniku zapytania zostaje dołączona wartość atrybutu nazwisko z relacji FilmDyr. W tym przypadku jedyna para, która spełnia oba te warunki, zaw iera krotkę z relacji Film, opisującą film Gwiezdne Wojny, oraz krotkę dotyczącą George'a Lucasa z relacji FilmDyr. Tylko ten tytuł jest właściwy oraz tylko w tym przypadku równe są numery certyfikatu. A więc w wyniku będzie umieszczone wyłącznic nazwisko George Lucas.

5.2.2. Atrybuty niejednoznaczne

Czasami trzeba utworzyć zapytanie dotyczące jednocześnie wielu relacji, w których znajdują się atrybuty o takich samych nazwach. Wówczas staje się niezbędne określanie w zapytaniu, które atrybuty pochodzą z których relacji. W SQL stosuje się wówczas notację, która polega na tym, że przed nazwą atrybutu umieszcza się nazwę relacji, z której pochodzi atrybut, i oddzielają od nazwy atrybutu kropką. Na przykład RA oznacza atrybut zł relacji R.

PRZYKŁAD 5.11

W obu wymienionych poniżej relacjach występują atrybuty nazwisko i adres:

Gwiazda (nazwisko, adres, pięć, dataUrodzenia)

FilmDyr (nazwisko, adres, cerr.it, cenaSieci)

Zapytanie polega na wyszukaniu par producentów i gwiazd o tym samym adresie. Ma ono następującą postać:

SELECT Gwiazda.nazwisko, FilmDyr.nazwisko

FROM Gwiazda, FilmDyr

WHERE Gwiazda.adres = FilmDyr.adres

W przedstawionym wyżej zapytaniu poszukuje się par krotek, jednej z relacji Gwiazda, a drugiej / relacji FilmDyr, które mają zgodne składowe adresu.

Następnie /. krotek, które mają takie same składowe dla atrybutu adres, tworzymy pary złożone ze składowych atrybutów nazwisko. Otrzymujemy w ten sposób zbiór par nazwisk, takich jak na przykład:

Gwiazda, nazwisko    FilmDyr. naz wis ko

Jane Fonda    Ted Turner

Stosowanie konwencji zapisu atrybutu z poprzedzającą jego nazwę nazwą relacji i kropką jest dopuszczalne nawet wówczas, gdy nazwy atrybutów nie są takie same. Możemy zatem zapisać na przykład zapytanie z przykładu 5.10 w sposób następujący:

SELECT FilmDyr.nazwisko

FROM Filin, FilmDyr

WHERE Film.tytuł = 'Gwiezdne Wojny'

AND Film.producentC# = FilmDyr.cert#

Można także w jednym zapytaniu zapisywać w notacji „kropkowej” tylko niektóre, wybrane atrybuty, a inne nic.

Zmienne krotkowc i nazwy relacji

Od strony technicznej odwołania do atrybutów w klauzulach SELECT i WHERE zawsze odwołaniami do zmiennych krotkowych. Jeśli relacja występuje w klauzuli FROM tylko jeden raz, to tej nazwy używa się jako zmiennej krotkowej. To znaczy, że R w klauzuli FROM jest po prostu skrótowym zapisem wyrażenia R AS R.


5.2.3. Zmienne krotkowe

Unikanie niejednoznaczności oznaczeń atrybutów przez stosowanie notacji kropkowej jest skuteczne tylko wówczas, gdy w zapytaniu tworzy sic kombinacje krotek z różnych relacji. Jednakże czasami trzeba zapisać zapytanie, którego działanie dotyczy kombinacji krotek z tej samej relacji. W klauzuli FROM relację R można wymienić tyle razy, ile trzeba, ale potrzebny jest sposób odróżniania poszczególnych wystąpień R. W SQL polega on na definiowaniu w klauzuli FROM synonimów dla nazwy relacji, których polem używa się jako zmiennych krotkowych. Po każdym wystąpieniu nazwy relacji w klauzuli FROM umieszcza się w tym celu opcjonalne słowo AS, a następnie nazwę zmiennej krotkowej.

W klauzulach SELECT oraz WHERE różne wystąpienie tych samych atrybutów relacji R odróżnia się wówczas, poprzedzając ich nazwy właściwą


Wyszukiwarka

Podobne podstrony:
ullman147 (2) 300 5. JĘZYK BAZ DANYCH SOL krotkowych. Dla każdego przypisania jest określana wartość
ullman156 (2) J 18 5. JEŻYK BAZ DANYCH SOL Zauważmy, że w tym zapytaniu wcale nie ma klauzuli WHERE,
ullman166 (2) 338 1 5. JĘZYK BAZ DANYCH SOL Ponieważ para (tytuł, rok) jest kluczem, więc mamy
64863 ullman149 (2) 304 S JEŻYK BAZ DANYCH SOL GwiazdyW, ale filmu, który tam wymieniono, nie ma w r
ullman158 (2) 322 5. JĘZYK BAZ DANYCH SQL To nowe zapytanie zostało przedstawione na rys. 5.11. Powo
ullman165 (2) 5. JEŻYK BAZ DANYCH SOL Teraz deklarując schemat relacji Film, możemy /.definiować atr
ullman141 (2) 288 5 JĘZYK BAZ DANYCH SQI. W przykładzie 5.1 występuje porównanie: nazwaStudia = Dis

więcej podobnych podstron