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.