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.