Sintaxa generala este urmatoarea:
CREATE [DISTINCT] TYPE <nume TAD> [<OPT10N OID>]
[CLAUSE SOUS-TYPE] [AS](<corpul TAD_ului>)
Clauza DISTINCT este utilizata pentru a redenumi un tip de data deja existent.
In anumite variante de SQL (SQL - ORACLE) acest DISTINCT este inlocuit cu RENAME.
Exemple SQL3 pentru definirea tipurilor abstracte de date.
a) Exemplu pentru definirea unui nou tip de data si anume TAD-ul t_adresa;
CREATE TYPE t_adresa
(strada CHAR(20), nr NUMBER, loc CHAR(15), codp CHAR(5));
Se constata ca TAD-ul t_adresa contine 4 atribute de tipuri cunoscute si anume sir de caractere (strada, localitatea si codul postal) si numeric (numarul adresei respective).
Figura care urmeaza prezinta schematic TAD-ul astfel definit :
t_adresa |
|||
strada |
nr |
loc |
codp |
b)Exemplu pentru definirea unui TAD tip lista (enumerare)
CREATE TYPE licente (2004,2005,2006,2007);
c) Exemplu pentru definirea unui TAD cu identificator de obiect:
CREATE TYPE salariat WITH OID VISIBLE (marca INT, nume VARCHAR, dataang DATE, salariu FLOAT,departament CHAR(10));
Clauza WITH OID VISIBLE permite precizarea vizibilitatii identificatorului pentru fiecare instanta (obiect).
d) Exemplu pentru definirea unui TAD utilizand alt TAD ( de ex. t_adresa):
CREATE TYPE salariat (marca INT, nume VARCHAR, dataang DATE, salariu FLOAT, departament CHAR(10), adresa T_ADRESA);
e) Exemplu pentru definirea unui TAD care utilizeaza o structura de tip colectie:
Utilizarea unei structuri de tip colectie permite atribuirea mai multor informatii de acelasi tip aceluiasi obiect. Fie tipul t_e_mail definit prin comanda:
CREATE TYPE t_e_mail (e_mail CHAR(20));
Pentru a modela obiectul catedra caracterizat printr-un cod, un nume si o lista de adrese e-mai l se defineste un TAD corespunzator si anume t_catedra:
CREATE TYPE t_catedra (cod NUMBER, nume CHAR(20), contact SET(t_e_mail));
f) Exemplu pentru definirea unui TAD plecand de la un alt TAD cu pointer:
Definim mai intai un TAD corespunzator departamentului:
CREATE TYPE t_dep (den CHAR(10), sef CHAR(15), tel NUMBER);
Definim TAD-ul salariat utilizand pentru departament TAD-ul t_dep:
CREATE TYPE t_salariat (marca INT, nume VARCHAR, dataang DATE, salariu FLOAT, departament REF T_DEP, adresa T_ADRESA);
Clauza REF evidentiaza existenta pointerului. Figura urmatoare vine sa ilustreze functionarea pointerului:
g) Exemplu pentru definirea de TAD-uri generice:
Posibilitatea de a defini TAD-uri generice implementeaza mecanismul 'mostenirii' (vezi modelul obiect). Pentru a ilustra acest mecanism consideram clasele de obiecte personal_didactic si personal_tesa.
Presupunand ca cele doua clase au unele caracteristici comune si anume marca, nume, departament, vom regrupa aceste atribute comune celor doua 'populatii' definind TAD-ul t_personal care contine urmatoarele informatii: marca, numele si un pointer pe departament:
CREATE TYPE t_personal (marca NUMBER, nume CHAR(20), departament REF T_DEP);
TAD-urile care mostenesc un TAD generic contin atribute specifice. TAD-urile care mostenesc TAD-ul t_personal sunt, in acest exemplu TAD-urile t_p_didactic si t_p_tesa definite astfel:
CREATE TYPE t_p_didactic UNDER t_personal (contact SET(t_e_mail));
CREATE TYPE t_p_tesa UNDER t_personal (adr t_adresa);
h) Exemplu pentru definirea unui TAD care contine metode:
In MDOR mecanismul de 'incapsulare' se traduce prin posibilitatea definirii de metode (proceduri sau functii) in declararea unui TAD. Metodele permit manipularea obiectelor de tip abstract.
Un TAD descrie nu numai structura datelor ci si comportamentul lor. Codul metodelor este independent de declararea structurilor de date. Mecanismul de incapsulare are drept scop ameliorarea extensibilitatii si intretinerii aplicatiilor. De fapt, utilizarea TAD-urilor favorizeaza modularizarea programelor.
In acest exemplu, TAD-ul definit contine o metoda care permite adaugarea unei adrese de e_mail pentru o catedra (vezi si exemplul e)):
CREATE TYPE t_catedra (cod NUMBER, nume CHAR(20), contact SET(t_email), METHOD adauga_mail(adr_noua t_e_mail));
In varianta SQL3 (SQL/PSM) exista posibilitatea crearii de proceduri si functii avand la dispozitie comenzile CREATE PROCEDURE si respectiv CREATE FUNCTION.
Tip cu IDO[1] si functie
CREATE TYPE salariat WITH OID VISIBLE (nume CHAR(20), prenume CHAR(20), data_nasterii DATE, salariu FLOAT), FUNCTION varsta (E salariat) RETURN (INT) END FUNCTION;
Crearea unei proceduri asociate unui tip:
CREATE PROCEDURE CRESTERESALARIU (E salariat, suma MONEY)
END PROCEDURE;
Politica de confidentialitate |
.com | Copyright ©
2024 - Toate drepturile rezervate. Toate documentele au caracter informativ cu scop educational. |
Personaje din literatura |
Baltagul – caracterizarea personajelor |
Caracterizare Alexandru Lapusneanul |
Caracterizarea lui Gavilescu |
Caracterizarea personajelor negative din basmul |
Tehnica si mecanica |
Cuplaje - definitii. notatii. exemple. repere istorice. |
Actionare macara |
Reprezentarea si cotarea filetelor |
Geografie |
Turismul pe terra |
Vulcanii Și mediul |
Padurile pe terra si industrializarea lemnului |
Termeni si conditii |
Contact |
Creeaza si tu |