Tip structurat - Structured type
Standardul SQL: 1999 a introdus o serie de caracteristici ale bazei de date relaționale obiect în SQL , în principal printre ele tipuri structurate definite de utilizator , numite de obicei doar tipuri structurate . Acestea pot fi definite fie în SQL simplu, CREATE TYPE dar și în Java prin SQL / JRT . Tipurile structurate SQL permit moștenirea unică .
Tipurile structurate sunt acceptate în grade diferite în baza de date Oracle , IBM DB2 , PostgreSQL și Microsoft SQL Server , deși acesta din urmă permite doar tipurile structurate definite în CLR .
Exemple SQL
Tipul structurat al obiectului
Pentru a defini un tip de structură personalizată utilizând baza de date Oracle, se pot folosi afirmații precum acestea:
CREATE TYPE Person_Type AS OBJECT (
person_title VARCHAR2(10),
person_first_name VARCHAR2(20),
person_last_name VARCHAR2(20),
)
NOT FINAL;
Un astfel de tip de structură poate fi apoi utilizat pentru a crea un tabel care să conțină și toate coloanele definite în Person_Type :
CREATE TABLE Person_Table OF Person_Type;
Tipurile de structuri personalizate acceptă moștenirea, ceea ce înseamnă că se poate crea un alt tip care moștenește din precedent. NOT FINAL declarația trebuie totuși inclusă într-o definiție a tipului de structură de bază pentru a permite crearea oricăror alte subtipuri.
CREATE TYPE Student_Type UNDER Person_Type (
matriculation_number NUMBER(10)
);
Student_Type atunci ar putea fi folosit pentru a crea un Student_Table care va include și toate coloanele definite în Person_Type . Cheia primară și constrângerile ar trebui definite în timpul sau după crearea tabelei și nu pot fi definite în interiorul tipului de structură .
CREATE TABLE Student_Table OF Student_Type (
matriculation_number PRIMARY KEY,
CONSTRAINT person_title_not_null_constraint NOT NULL (person_title),
);
Fiecare tip de structură personalizată poate conține și alte tipuri pentru a susține structuri mai complexe:
CREATE TYPE Address_Type AS OBJECT (
address_street VARCHAR2(30),
address_city VARCHAR2(30),
);
CREATE TYPE University AS OBJECT (
university_name VARCHAR2(30),
university_address Address_Type
);
Lecturi suplimentare
- Jim Melton (2003). SQL avansat: 1999 . Morgan Kaufmann. ISBN 978-1-55860-677-7 . Capitolele 2-4.
- Suzanne W. Dietrich; Susan D. Urban (2011). Bazele bazelor de date de obiecte: proiectare orientată pe obiecte și relație obiect . Morgan & Claypool Publishers. ISBN 978-1-60845-476-1 . Capitolul 3.
- Catherine Ricardo (2011). Baze de date iluminate (ediția a II-a). Jones & Bartlett Publishers. ISBN 978-1-4496-0600-8 . Capitolul 8.