I.
Wprowadzenie do  języków zapytań (1)
II.
Wprowadzenie do  języków zapytań (2)
III.
Pojęcia obiektowości w bazach danych (1)
  Wstęp
  1. Co to jest obiektowość?
  2. Obiekt
  3. Metody związane z obiektem
  4. Obiekt złożony
  5. Relatywizm obiektów
  6. Zasada wewnętrznej identyfikacji
  7. Powiązania pomiędzy obiektami
  8. Hermetyzacja i ukrywanie informacji
  9. Mechanizm komunikatów
  Podsumowanie
  Zadania
IV.
Pojęcia obiektowości w bazach danych (2)
V.
Podstawy semantyczne języków zapytań
VI.
Modele składu obiektów
VII.
Stos środowisk, rezultaty zapytań, funkcja nested
VIII.
Język SBQL (Stack-Based Query Language) (1)
IX.
X.
Dalsze własności SBQL
XI.
Operatory order by i group by
XII.
Przetwarzanie struktur nieregularnych
XIII.
Rozszerzenie języków zapytań o konstrukcje imperatywne
XIV.
Procedury, procedury funkcyjne, metody, reguły zakresu
XV.
Parametry procedur i metod, procedury rekurencyjne, optymalizacja poprzez modyfikację zapytań

 

1. Co to jest obiektowość?

W ostatnich latach termin "obiektowy" (object-oriented) stał się bardzo popularnym określeniem nowoczesnych narzędzi i technologii informatycznych. Wśród nich można wymienić języki Smalltalk, C++, Java, C# i Eiffel, standardy CORBA, COM/DCOM, ODMG i SQL-99 (SQL3), metodyki analizy i projektowania OMT, OPEN i BON, notację UML, systemy zarządzania bazą danych Oracle9, Informix Dynamic Server, Versant, GemStone, ObjectStore, O2, pośredników obiektowych zleceń (Object Request Brokers, ORBs) RMI, Orbix, VisiBroker, i wiele innych tworów. Równie popularne stały się pojęcia charakteryzujące obiektowość, takie jak: obiekt, tożsamość, klasa, typ, interfejs, metoda, dziedziczenie, hermetyzacja, polimorfizm. Zalety obiektowości jako uniwersalnej informatycznej filozofii są dyskutowane w licznych publikacjach i książkach, patrz np. [Abit95, Banc92a, Banc92b, Catt94,  Deux90, Figu96, Kemp94, Kim96, Loom95, Subi98a, Subi99, Zdon90].

Stosunek obiektowości do języków zapytań był początkowo niejasny. Wynikało to z dwóch przyczyn. Pierwsza z nich polega na tym, że obiektowość jest ideologią informatyczną o luźno zarysowanych założeniach, pojęciach i granicach. Różnych sformułowań obiektowości i jej poszczególnych pojęć są setki - praktycznie każdy język programowania lub system mający w swoim tytule określenie "obiektowy" prezentuje nieco inne spojrzenie na obiektowość. Niekiedy te różnice są fundamentalne, np. różnice pomiędzy modelem obiektowym notacji UML a modelem obiektowym języka SQL-99. Natomiast języki zapytań są (powinny być) tworami formalnymi, których semantyka musi być określona bardzo precyzyjnie, szczególnie wobec faktu, że muszą one podlegać metodom automatycznej optymalizacji. Mnogość modeli danych określanych jako "obiektowe", dość luźne ich założenia i granice, różnorodne ograniczenia (np. brak typów masowych) powodują, że specyfikacje języków zapytań do dzisiaj są oparte na zbyt intuicyjnym gruncie.

Drugą przyczyną są poglądy i fałszywe stereotypy dotyczące języków zapytań, wypracowane podczas rozwoju modelu relacyjnego. Do tych stereotypów należy zaliczyć twierdzenia, że jedynie model relacyjny wraz z jego podstawami matematycznymi może być podstawą definicji języków zapytań. M.in. M. Stonebraker w często cytowanych publikacjach twierdzi, że obiektowe bazy danych nie mogą być wyposażone w języki zapytań (mimo ewidentnych kontrprzykładów, np. języka OQL). Podobne poglądy do pewnego czasu głosił J. Ullman. Powstały także różne próby i spekulacje dotyczące tego, jak dopasować paradygmaty relacyjnych języków zapytań do obiektowych struktur danych (np. jak zmodyfikować algebrę relacji, jak przystosować SQL itp.). Konkluzje bywają różne i często zaskakujące. Np. Ch.Date, jeden z ojców modelu relacyjnego i autor wielu książek z tej dziedziny, w kilku publikacjach twierdzi, że idea języków zapytań jest sprzeczna z koncepcją hermetyzacji (encapsulation). Inną konsekwencją jest bezpośrednie uogólnianie metod formalnych relacyjnych języków zapytań na grunt obiektowych języków zapytań. Efektem jest mnogość tzw. obiektowych algebr, obiektowych rachunków i innych tego rodzaju formalnych tworów. Krytykę tego nurtu w rozwoju obiektowych języków zapytań można znaleźć w [Subi95b].

Wobec mnogości poglądów na obiektowość i oraz bardzo różnych koncepcji obiektowości nie istnieje możliwość podania takich definicji, które byłyby jednocześnie precyzyjne dla różnych odmian modeli określanych jako "obiektowe". Konieczny jest pewien kompromis, który precyzowałby te pojęcia, a jednocześnie byłby satysfakcjonujący z punktu widzenia definicji obiektowych języków zapytań. Niżej zajmiemy się wyjaśnieniem podstawowych pojęć, takich jak: obiekt, atrybut, powiązanie, klasa, abstrakcyjny typ danych, hermetyzacja, komunikat, metoda, polimorfizm i innych. Dyskusję uzupełnimy prezentacją pewnych zasad wynikających ze spekulacji myślowych lub estetycznego domknięcia dziedziny, takich jak relatywizm obiektów, zasada wewnętrznej identyfikacji lub ortogonalna trwałość. Dopiero po wyjaśnieniu podstaw koncepcyjnych obiektowości będziemy starali się (w następnych rozdziałach) przedstawić nasze formalne spojrzenie na obiektowość, które umożliwi precyzyjne definiowanie własności obiektowych języków zapytań.

Copyrights © 2006 PJWSTK
Materiały zostały opracowane w PJWSTK w projekcie współfinansowanym ze środków EFS.