Każda nazwa klasy jest typem referencyjnym {reprezentuje wartości referencyjne).
Typ kratkowy reprezentuje krotki zbudowane '2 wartości typów wymienionych w jego definicji.
Typ zbiorowy reprezentuje skończone zbiory złożone z wartości typu wymienionego w jego definicji.
Hierarchia typów
Hierarchia typów będzie potrzebna do formalizacji zależności między typami obiektów przypisanych do dziedziczących po sobie klas. Intuicyjnie typ wartości obiektów nadklasy ma być nadtypem typów wartości obiektów podklasy. Taka relacja między typami ma na celu zachowanie zasady zastępowalności, w myśl której każdy obiekt podklasy może być użyty w każdym miejscu, gdzie oczekuje się obiektu nadklasy. Zdefiniujemy teraz relację częściowego porządku < na zbiorze typów T. Skorzystamy w tej definicji z relacji bycia podklasą tsA, np. Pracownik IsA Osoba.
•< — relacja bycia pod typem to najmniejszy częściowy porządek na T o następujących właściwościach:
Jeśli k,l 6 K. oraz k IsA l, to k < i.
Jeśli t — [oi : <i, aj : ta, -. -,an : f,:] 6 T oraz u = [Łt : tli, 64 : U2,..., bm : um| € T, oraz n < m, a także dla każdego i = 1, 2,... n istnieje j takie, że m = bj i Uj ■< tj, to u < t.
Jeśli t u, to także (i) ■< {u}.
Skomentujmy krótko tę definicję.
Ten pu.nkt dotyczy typów referencyjnych. Wynika z niego na przykład, że Pracownik ■< Osoba, ćo oznacza, że każda referencja do obiektu klasy Pracownik jest również referencją do obiektu klasy Osoba.
W tym punkcie definiujemy zależność bycia podtypem dla typów kratkowych. Krotka będąca podtypem musi mieć wszystkie pola krotki będącej nadtypem i być może jeszcze jakieś dodatkowe pola. Znów zależy nam na zastępowalności — krotka-podtyp u mając wszystkie pola krotki-nadtypu t może wystąpić we wszystkich kontekstach, w których oczekujemy t.
Wartości skojarzone z podtypem są też wartościami nadtypu, więc i zbiór złożony z wartości podtypu będzie podtypem zbioru złożonego z wartości nadtypu.
Schemat struktury
W schemacie struktury obiektowej bazy danych określa się m.iri. typy wartości obiektów poszczególnych klas. Typy są przypisane przez funkcję typ:
typ : K. -» T