Typ strukturalny
Standard SQL:1999 wprowadził do SQL szereg funkcji obiektowo-relacyjnych baz danych , wśród nich przede wszystkim ustrukturyzowane typy zdefiniowane przez użytkownika , zwykle nazywane po prostu typami strukturalnymi . Można je zdefiniować w zwykłym SQL za pomocą CREATE TYPE
, ale także w Javie za pośrednictwem SQL/JRT . Typy strukturalne SQL umożliwiają pojedyncze dziedziczenie .
Typy strukturalne są obsługiwane w różnym stopniu w Oracle Database , IBM Db2 , PostgreSQL i Microsoft SQL Server , chociaż ten ostatni zezwala tylko na typy strukturalne zdefiniowane w CLR .
Przykłady SQL
Obiektowy typ strukturalny
Aby zdefiniować niestandardowy typ struktury za pomocą Oracle Database, można użyć takich instrukcji:
CREATE TYPE Person_Type AS OBJECT ( person_title VARCHAR2 ( 10 ), person_first_name VARCHAR2 ( 20 ), person_last_name VARCHAR2 ( 20 ), ) NOT FINAL ;
Taki typ struktury można następnie wykorzystać do stworzenia tabeli, która zawierałaby również wszystkie kolumny zdefiniowane w Person_Type :
UTWÓRZ TABELĘ Osoba_Tabela OF Osoba_Type ;
Niestandardowe typy struktur obsługują dziedziczenie, co oznacza, że można utworzyć inny typ, który dziedziczy z poprzedniego. Instrukcja NOT FINAL
musi być jednak zawarta w definicji typu struktury bazowej, aby umożliwić tworzenie dowolnych innych podtypów.
UTWÓRZ TYP Student_Type UNDER Person_Type ( matriculation_number NUMBER ( 10 ) );
Student_Type może być następnie użyty do utworzenia Student_Table, który będzie zawierał również wszystkie kolumny zdefiniowane w Person_Type . Klucz podstawowy i ograniczenia należy zdefiniować podczas lub po utworzeniu tabeli i nie można ich zdefiniować wewnątrz samego typu struktury.
UTWÓRZ TABELĘ Student_Table OF Student_Type ( matriculation_number PRIMARY KEY , CONSTRAINT person_title_not_null_constraint NOT NULL ( person_title ), );
Każdy niestandardowy typ struktury może również zawierać inne typy w celu obsługi bardziej złożonych struktur:
UTWÓRZ TYP Address_Type AS OBJECT ( adres_street VARCHAR2 ( 30 ), adres_miasto VARCHAR2 ( 30 ), ); UTWÓRZ TYP Uniwersytet JAKO OBIEKT ( nazwa_uniwersytetu VARCHAR2 ( 30 ), adres_uniwersytetu typ_adresu );
Dalsza lektura
- Jima Meltona (2003). Zaawansowany język SQL: 1999 . Morgana Kaufmanna. ISBN 978-1-55860-677-7 . Rozdziały 2-4.
- Suzanne W. Dietrich; Susan D. Urban (2011). Podstawy obiektowych baz danych: projektowanie obiektowe i obiektowo-relacyjne . Wydawcy Morgan & Claypool. ISBN 978-1-60845-476-1 . Rozdział 3.
- Katarzyna Ricardo (2011). Iluminowane bazy danych (wyd. 2). Wydawcy Jones & Bartlett. ISBN 978-1-4496-0600-8 . Rozdział 8.