[ Pobierz całość w formacie PDF ]
.Należą tam:1.Konstruktor - funkcja, która tworzy nowy obiekt danego typu.Wszystkie atrybuty tego obiektu mają na początku wartości NULL.Jeśli T jest nazwą typu ADT, to T() oznacza konstruktor tego typu.2.Obserwator - funkcja, która dla każdego atrybutu zwraca jego wartość.Jeśli A jest nazwą atrybutu, a X jest zmienną, której wartością jest pewien obiekt typu ADT, to A(X) oznacza wartość atrybutu A obiektu X.W tym samym celu można także stosować bardziej konwencjonalną notację XA.3.Modyfikator - funkcja, która poszczególnym atrybutom przypisuje nowe wartości.Można z nich korzystać po lewej stronie instrukcji przypisania w sposób opisany w p.8.6.2.Aby zapewnić hermetyzację, trzeba zablokować dostęp do tych funkcji.W SQL3 przyjęto, że do wykonania tych funkcji trzeba mieć określone prawo ExECUTE.To prawo może być nadawane lub odbierane na takich samych zasadach jak sześć praw w języku SQL2, co omówiono w p.7.4.1.` W miarę ewolucji standardu SQL3 prawdopodobnie te funkcje nie będątraktowane specjalnie, ale będą definiowane i używane tak samo jak inne funkcje typów.S 12 8.ZORIENTOWANE OBIEKTOWO JĘZYKI 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.30W 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 hermetyzacji, nie będzie bowiem dostępu do składowych miasto i ulica, chyba że do funkcji obserwatora i modyfikatora zostanie nadane prawo wykonania.1) CREATEyTYPE AdresADT 2) ulica CHAR (50), 3) miasto CHAR(20), 4) EQUALS adrR,5) LESS THAN adrMNtutaj deklaruje się inne funkcjeRYSUNEK 8.17 Definiowanie adresu ADTNa 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 odpowiednio SO oraz 20.W wierszach 4) i S) ustalono nazwę operatora równości obiektów typu AdresADT jako adrR, a operator c 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 pewną ich wersję.Następnie adresy zostaną uporządkowane leksykograficznie, najpierw według nazwy miast, a potem według ulicy.0Następny przykład stanowi doskonałą ilustrację siły tkwiącej w typach ADT, które umożliwiają programowanie takich działań w języku SQL, 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 SQL takich jak: porównywania, drukowanie, agregowanie8.6.ABSTRAKCYJNE TYPY DANYCH W JĘZYKU SQL3513itd.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.31Zdefiniujemy teraz typ ADT o nazwie Mpeg, potrzebny do zapisywania filmów kodowanych w standardzie MPEG (jest to standardowy sposób kompresowania Elmu, szczegóły tego formatu opisano w ramce).Od strony technicznej MPEG jest ciągiem znaków, a więc można by tutaj 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 BLOB (binary large Object - binarne wielkie obiekty), czyli specjalny rodzaj ciągów bitowych, które mogą być bardzo długie, dopuszcza się nawet ich wielkość mierzoną w gigabajtach.1) CREATE TYPE Mpeg2) wideo BLOB, 3) długość INTEGER,4) copyright VARCHAR(255), 5) EQUALS DEFAULT,6) LESS THAN NONEtu umieścić definicje funkcji );RYSUNEK 8.18Definiowanie typu ADT MPEGW 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 BLOK 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
[ Pobierz całość w formacie PDF ]