Modelowanie baz danych - Obiektowe bazy danych

1. Model relacyjny jest najbardziej rozpowszechnionym modelem baz danych. Sprawdzają się w wielu zastosowaniach biznesowych takich jak kartoteka pacjenta, inwentaryzacja. Mają ograniczenia w takich zastosowaniach jak:
  • modelowanie złożonych zależności strukturalnych (zależności drzewiaste)
  • jak też w przypadku zawartości multimedialnych
Z problemami tego typu o wiele lepiej radzą sobie baz obiektowe. 

2. W modelu relacyjnym istnieje silny podział pomiędzy aplikacją bazodanową a samą bazą danych. W bazach obiektowych zaciera się to rozgraniczenie, ponieważ języki obiektowe, za pomocą których są tworzone aplikacje są z natury kompatybilne z obiektowym modelem baz danych. Aplikacja przejmuje wiele aspektów, które wcześniej związane były jedynie z wewnętrznymi mechanizmami bazy danych (tworzenie struktur danych, wypełnianie, przeszukiwanie). Operacje, które możliwe są do wykonania na obiektach aplikacji w ten sam sposób wykonują się w bazie obiektowej ale ich efekty zostaną trwale zapisane w bazie danych.

3. W przypadku modelu relacyjnego istnieje model matematyczny opisujący teoretyczne założenia. Model obiektowy nie posiada takiego modelu matematycznego, dlatego model obiektowy nie jest dokładnie zdefiniowany. Aby jednak zachować spójność wsród wytwarzanych wersji oprogramowania, utworzono konsorcjum OMG, które czuwa nad określaniem standardów w zarządzaniu obiektowymi bazami danych. 

4. Systemy obiektowe (aplikacja + obiektowa baza danych) pozwalają na bardziej intuicyjne modelowanie bytów i relacji między nimi. Można je traktować jako systemy zintegrowanego przetwarzania danych. Obiekty zawierają dane i jednocześnie funkcje operujące na tych danych. Systemy obiektowe z większą swobodą obsługują złożone dane. Można zdefiniować nowe klasy wraz z zawartymi metodami.

Systemy obiektowe obsługują również takie mechanizmy obiektowe jak:
  • dziedziczenie
  • polimorfizm
  • hermetyzacja
5. Zalety baz obiektowych:
  • spójność reprezentacji pomiędzy aplikacją a bazą danych (wszystkie operacje na danych są wykonywane w taki sam sposób jak na danych wewnętrznych aplikacji; niepotrzebna jest interpretacja zawartości bazy danych na zawartość obiektów, nie istnieje niezgodność relacyjno-obiektowa)
  • intuicyjne odwoływanie się do zawartości danych (przetwarzanie w pętli)
  • swoboda modelowania (można modelować bazę na wiele sposobów wykorzystując złożone typy danych, zagnieżdżenia, powiązania, dziedziczenie i polimorfizm; pozwala na szczegółowy sposób odwzorowania świata rzeczywistego)
  • bezpieczeństwo (może być definiowany interfejs za pomocą którego można się dostać do danych w obiekcie; dane mogą być tylko odczytywane i zapisywane w taki sposób jak zostało to zdefiniowane w tym interfejsie; zapewnia to integralność danych)
  • integracja z językiem programowania (obiektowy system zarządzania bazą danych jest mocno zintegrowany z obiektowymi językami programowania; aplikacja przetwarza obiekty, które są przechowywane w obiektowej bazie danych)
6. Ograniczenia baz obiektowych:
  • złożoność (systemy obiektowe są elastyczne ale pociąga to za sobą ich dużą złożoność; model obiektowy ma wiele alternatywnych form reprezentacji, które utrudniają podjęcie decyzji, jaką reprezentację najlepiej wybrać)
  • nawigacja (dostęp do danych odbywa się poprzez wcześniej zdefiniowane zależności)

7. Mając zdefiniowany typ obiektowy można tworzyć zmienne, jak też definiować atrybuty tabel. Obiektem danego typu obiektowego nazywamy wartość tego typu. Obiekty zawierają pola i zdefiniowane metody.

8. Po zdefiniowaniu typów obiektowych są one używane w podobny sposób jak typy proste. Typy obiektowe należy zdefiniować podczas tworzenia bazy danych. Typy obiektowe zawierają atrybuty oraz metody. Kod aplikacji może pobierać i manipulować tymi danymi i metodami jako obiektami.

9. Do zdefiniowania typów należy użyć polecenia CREATE TYPE. Umożliwia to definiowanie złożonych typów obiektowych oraz typy kolekcyjne (table ezagnieżdżone oraz tablice VARRAY).

np. 
CREATE TYPE osoba_objtyp AS OBJECT(
imie VARCHAR2(20)
nazwisko VARCHAR2(20)

10. Oracle udostępnia typy kolekcyjne, umożliwiające tworzenie zależności "jeden do wielu". Są 2 typy: tabele zmienne oraz tabele zagnieżdżone. Tabela zagnieżdżona może posiadać dowolną ilość wierszy - jest nieuporządkowana. Tabele zmienne (VARRAY) są uporządkowaną kolekcją elementów, w których każdy element posiada swój indeks identyfikujący dany element. Podczas definicji tablicy zmiennej określa się maksymalną liczbę elementów tablicy, która może być zmieniona.

Tablice zmienne stosowane są gdy:
  • w kolekcji przechowywania jest określona liczba elementów
  • na uporządkowanych elementach kolekcji wykonywane są operacje w pętli