44501 ullman253 (2)

44501 ullman253 (2)



512 8 ZORIENTOWANE OBIEKTOWO JĘZYK! ZAPYTAŃ

Pozostałe funkcje można definiować albo wewnątrz, albo poza instrukcją CREATE TYPE. Jednak, gdy występują one poza tą instrukcją, to można w nich i tak korzystać tylko z funkcji definiowanych wewnątrz, włącznie z wymienionymi powyżej funkcjami wbudowanymi.

PRZYKŁAD 8.30

W przykładzie 8.22 zdefiniowano adres jako typ wiersza, złożony ze składowych ulica i miasto. Taka sama struktura może stanowić definicję typu ADT. Jednak w tym przypadku uzyskamy efekt hcrmetyzacji, nic będzie bowiem dostępu do składowych miasto i ulica, chyba ż,c do funkcji obserwatora i modyfikatora zostanie nadane prawo wykonania.

1)    CREATE TYPE AdresADT (

2)    ulica CHAR (50),

3)    miasto CHAR{20)/

4)    EQUALS adrR,

5)    LESS THAN adrMN

tutaj deklaruje się inne funkcje

);

RYSUNEK 8.17 Definiowanie adresu ADT

Na rysunku 8.17 przedstawiono definicję typu AdresADT, ale bez definicji funkcji i metod związanych z tym typem ADT. W wierszu 1) określono nazwę typu.

W wierszach 2) i 3) zdefiniowano składowe krotek, o nazwach ulica i miasto. Typy składowych są takie same jak w przykładzie 8.22: teksty o długościach odpow iednio 50 oraz 20.

W wierszach 4) i 5) ustalono nazwę operatora równości obiektów typu AdresADT jako adrR, a operator < w tym przypadku nazwano adrMN. Nie wiemy jednak, jaka jest treść tych funkcji, ponieważ nie podano ich definicji. W przykładzie 8.32 podaliśmy pewrną ich wersję. Następnie adresy zostaną uporządkowane leksykograficznie, najpierw według nazwy miast, a potem wrcdług ulicy.

Następny przykład stanowi doskonałą ilustrację siły tkwiącej w typach ADT, które umożliwiają programowanie takich działań w języku $QL, jakich nie można było przewidzieć w' założeniach dotyczących klasycznych systemów zarządzania bazami danych. W bazach danych można teraz przechowywać bardzo duże jednostki danych, takie jak obrazy, ścieżki dźwiękowe lub filmy. Ale działania na tych obiektach znacznie odbiegają od klasycznych funkcji $QL takich jak: porównywania, drukowanie, agregowanie itd. Teraz trzeba umieć wyświetlić te obiekty na ekranie, często stosując złożone algorytmy dekodowania, a w przyszłości zapewne będzie można także wykonywać skomplikowane porównania obrazów lub identyfikować ich właściwości.

PRZYKŁAD 8.31

Zdefiniujemy teraz typ ADT o nazwie Mpeę, potrzebny do zapisywania filmów kodowanych w standardzie MPEG (jest to standardowy sposób kompresowania filmu, szczegóły lego formatu opisano w ramce). Od strony technicznej MPEG jest ciągiem znaków, a więc można by lulaj stosować podstawowy typ VARCHAR. Jednakże filmy zakodowane w postaci MPEG są często bardzo długie (gigabajty) i trudno jest działać na tak długich tekstach.

Aby umożliwić dostęp do bardzo dużych jednostek danych, takich jak wideo, we współczesnych bazach danych wprowadza się specjalny typ danych, nazwany BI.OB (binary large Object - binarne wielkie obiekty•), czyli specjalny rodzaj ciągów bitowych, które mogą być bardzo długie, dopuszcza się nawet ich w ielkość mierzoną w gigabajtach.

1) CREATE TYPE Mpeg (

Z)    wideo    3LOB,

3)    długość    INTEGER,

4)    copyright    VARCHAR(255)    ,

5)    EOUALS DEFAULT,

6)    LESS THAN NONĘ

cu umieścić definicje funkcji

RYSUNEK 8.18 Definiowanie typu ADT MPEG

W naszym przykładzie zakładamy, że do systemu baz danych tryb BLOB został wbudowany. Stosowną definicję typu ADT dla formatu MPEG przedstawiono na rys. 8.18.

W wierszu 2) został określony typ 3L0B atrybutu wideo. Jego wartościami są bardzo duże filmy zakodowane w formacie MPEG. W wierszach 3) oraz 4) zadeklarowano dwa „zwykłe” atrybuty: długość (czyli czas trwania filmu) oraz copyright. W wierszu 5) określono, że operatorem równości w tym przypadku jest standardowa, przyjmowana przez domniemanie, identyczność. Oznacza to, że dwa obiekty typu MPEG uważa się za równe, jeśli bitowe reprezentacje ich wszystkich atrybutów są identyczne. Można by się zastanawiać nad bardziej złożoną definicją równości, w której dwa filmy


Wyszukiwarka

Podobne podstrony:
ullman237 (2) S. ZORIENTOWANE OBIEKTOWO JĘZYK! ZAPYTAŃ Jeśli ma to sens, to można tworzyć wyrażenia
42460 ullman241 (2) 488 8. ZORIENTOWANE OBIEKTOWO JĘZYKI ZAPYTAŃ Korzystamy tutaj z podzapytania po
43611 ullman239 (2) 484 S. ZORIENTOWANE OBIEKTOWO JE2YK! ZAPYTAŃ SELECT m FROM Filmy :r. WHERE m.nal
24504 ullman238 (2) 482 S ZORIENTOWANE OBIEKTOWO JĘZYKI ZAPYTAŃ T cych klauzulę WHERE. Te nazwiska s
70029 ullman243 (2) 492 8. ZORIENTOWANE OBIEKTOWO JĘZYKI ZAPYTAŃ lect-from-whcre; przedstawiono ją n
73187 ullman254 (2) 514 s zorientowani: obiektowo języki zapytań traktowano by jako równe, jeśli wyg
ullman245 (2) "ty u S ZORIENTOWANE OBIEKTOWO JfjZYKI ZAPYTAŃ Gdy mamy już listę, uporządkowaną

więcej podobnych podstron