W końcu zażyczymy sobie kilku podklas klasy Konta. Na przykład konto depozytów terminowych może mieć dodatkowe pole termin, w którym zapisze się datę, po upływie której właściciel będzie mógł dokonywać wypłat. Dla tej podklasy, nazwanej na przykład DcpozytTerminowy, można /.definiować metodę:
kara(a: DepozytTerminowy)
która dla konta a wylicza obciążenie karne wynikłe z tytułu zbyt wczesnej wypłaty, a które jest możliwe do wyliczenia na podstaw ie daty bieżącej oraz wartości pola termin obiektu a. Datę bieżącą otrzymuje się z systemu operacyjnego komputera.
□
Zorientowane obiektowo aspekty baz danych będziemy omawiać bardzo obszernie w niniejszej książce. W podrozdziale 2.1 wprowadzimy zorientowany obiektowo język projektowania baz danych ODL {Object-Oriented data-base-design language). Z kolei rozdział 8 poświęciliśmy zorientowanym obiektowo językom zapytań, zarówno językowi OQL, który staje się standardem dla baz. danych zorientowanych obiektowo, jak i obiektowym właściwościom języka SQL - standardu zapytań w relacyjnych bazach danych.
Obecnie w bazach danych daje się zaobserwować szerokie zastosowanie elementów aktywnych w systemach komercyjnych. Przez „aktywność” elementu rozumiemy, że dana składowa bazy danych jest cały czas dostępna i jest gotowa do wykonania zawsze wtedy, kiedy staje się to właściwe. W bazach danych można wyróżnić dwa rodzaje elementów aktywnych:
1. Wiązy (consrraints). Są to funkcje logiczne, które zawsze powinny mieć wartość prawda. W bankowej bazie danych moglibyśmy na przykład umieścić wymaganie, określające, że wartość bilansu na koncie nie może być mniejsza niż 0. Wówczas aktualizacja polegająca na wypłacie z konta kwoty większej niż wartość zapisana w bilansie zostałaby zabroniona przez DBMS, jako naruszająca wymaganie określone przez więzy.
2. Wyzwał uczę (triggers). Wyzwalacz stanowi kawałek kodu, który czeka na zajście zdarzenia; zdarzenia mogą polegać na wprowadzeniu lub usunięciu pewnego rodzaju danych. Po zajściu zdarzenia zostaje wykonany, lub inaczej mówiąc wyzwolony, ciąg akcji. Na przykład w systemie rezerwacji lotów może wystąpić reguła, wyzwalająca pewne akcje wówczas, gdy zostaje odwołany jakiś rejs Część wykonywalna reguły może polegać na przetworzeniu zapytania o numery' telefoniczne pasażerów odwoływanego rejsu po to, by można ich było powiadomić. Bardziej skomplikowane przetwarzanie może polegać na automatycznej rezerwacji w połączeniach alternatywnych.
Elementy aktywne nic są nowym pomysłem. Występowały już w języku PL/I pod nazwą „ON-conditions”. Pojawiały się również przez wiele lat w systemach sztucznej inteligencji, a także mają wiele wspólnego z „demonami” występującymi w systemach operacyjnych. Jednak efektywna implementacja elementów aktywnych staje się poważnym problemem technicznym w przypadkach, gdy trzeba operować na dużych zbiorach danych lub gdy samych elementów aktywnych zaczyna być dużo. Z tego powodu elementy aktywne nie pojawiły się w systemie DBMS aż do początku lal dziewięćdziesiątych. Omów imy je w rozdziale 6.
Inny ważny trend w dziedzinie systemów baz danych dotyczy danych multimedialnych. Słowem „multimedia” określamy dane reprezentujące pewne sygnały. Zazwyczaj dane multimedialne obejmują film, dźwięk, sygnały radarowe, obrazy satelitarne oraz rozmaicie kodowane obrazy i dokumenty. Wspólną cechą tych wszystkich form jest ich rozmiar, nie tylko znacznie większy niż danych tradycyjnych - typu całkowitego, napisów znakowych o określonej długości itp., ale także bardzo rozmaity.
Duża objętość danych multimedialnych wymusiła rozwój systemów DBMS wr kilku różnych kierunkach. Na przykład zupełnie inne operacje przetwarza się na danych multimedialnych niż na danych tradycyjnych. Zatem operacja wyszukania kont bankowych z ujemnym bilansem polega na porównywaniu wartości bilansu z liczbą rzeczywistą 0,0. Nic jest natomiast wykonalne przeszukanie bazy danych zawierającej zdjęcia w celu wyszukania twarzy. która „wygląda jak" pewien określony obraz. Dlatego w systemie DBMS musiał powstać mechanizm umożliwiający użytkownikom dołączanie własnych funkcji, które mogą operować na danych multimedialnych. Do takich rozszerzeń często stosuje się podejście zorientowane obiektowo, nawet w systemach relacyjnych.
Rozmiary obiektów multimedialnych, konieczność zorganizowania pamięci dla obiektów i krotek zajmujących gigabajty pamięci, lub nawet większe jej obszary, wymuszają również zmiany w modułach zarządzania pamięcią. Jednym z wielu kłopotliwych zadań jest utworzenie odpowiedzi na zapytanie. W zwykłych relacyjnych systemach odpowiedź jest zbiorem krotek. Klient otrzymuje taką odpowiedź w całości od serwera.
Wyobraźmy sobie jednak, że odpowiedź jest widcoklipem o objętości gigabajta. Serwer nie jest w stanic przekazać takich danych klientowi w całości.