Les aspects objet-relationnels d’Oracle (de la V8 à la 11g) d Oracle (de la V8
Les aspects objet-relationnels d’Oracle (de la V8 à la 11g) d Oracle (de la V8 à la 11g) Christian Soutou http://www.soutou.net/christian http://www.soutou.net/christian C. Soutou 2007 1 Pl Plan Généralités Définition des objets j Types abstrait de données, Héritage Références Collections Collections Manipulation des objets Interrogation des objets é Méthodes Vues objet C. Soutou 2007 2 Généralités Généralités C. Soutou 2007 3 M dèl d d é Modèle de données à è Extension à l’objet du modèle relationnel : types abstraits de données (TAD) yp ( ) Collections Identité des objets par l’utilisation de références Identité des objets par l utilisation de références Héritage E l ti l ti d éth d Encapsulation par la programmation de méthodes (procédures ou fonctions) C. Soutou 2007 4 O l Oracle Oracle8 (Juin 1997) Oracle8 (Juin 1997) Premières fonctions objet (limitées), Partitionnement, Java (JDBC, JSQL, Servlets, Java Server Pages, Entreprise Java Beans) Oracle8i 8 2 (8 1 5) Juillet 1999 Oracle8i 8.2 (8.1.5) Juillet 1999 Oracle8i 8.3 (8.1.7) Août 2000 Améliorations Java, iFS, XML, sécurité Oracle9i , 9.1 (Novembre 2000), 9.2 (2002) , ( ), ( ) Héritage Oracle10g , (2004), Grid Computing (ressources en clusters) C ll ti lti i Collections multi-niveaux Oracle11g , (2007) … Compatibilité ascendante avec des bases SQL2 (versions 7) C. Soutou 2007 5 d d é Types de données T d d é Type de données Personnalisés (TYPE) Intégrés Scalaires CHAR(n) - NCHAR(n) VARCHAR2(n) - NVARCHAR2(n) Collections VARRAY TABLE Références REF VARCHAR2(n) NVARCHAR2(n) NUMBER(n,p) - DECIMAL DATE BFILE - BLOB - CLOB – NCLOB TABLE LONG - LONG RAW - RAW(n) - ROWID C. Soutou 2007 6 é Catégories d’objet objets persistants qui sont stockés dans des objets persistants qui sont stockés dans des tables objets (row objects) bj t i t l d’ t bl objets qui composent une colonne d’une table relationnelle (column objects) objets non persistants qui n’appartiennent pas aux deux précédentes classification et p n’existent que durant l’exécution d’un programme p g C. Soutou 2007 7 é Catégories d’objet Un type Oracle peut être utilisé : Un type Oracle peut être utilisé : pour la construction d’autres types (type composite) pour définir une ou plusieurs tables objet pour définir une ou plusieurs tables objet (object tables) pour définir une colonne d’une table pour définir une colonne d une table relationnelle (column objects) pour la construction de vues objets (object pour la construction de vues objets (object views) C. Soutou 2007 8 Définition des objets Définition des objets C. Soutou 2007 9 é Création d’un type (TAD) Syntaxe Syntaxe CREATE [OR REPLACE] TYPE schéma.nomType [AS OBJECT | UNDER schéma.nomSurType] ( colonne1 type1, colonne2 type2... , Structure colonne1 type1, colonne2 type2... , méthode1(parametres1), méthode2(…)... ) Structure Comportement Li it ti [[NOT] INSTANTIABLE] [[NOT] FINAL] / Relatif à l’héritage Limitations 30 caractères pour les noms de colonnes p 0 Pas de LONG, LONGRAW, ROWID, %TYPE C. Soutou 2007 10 Type composite CREATE TYPE etat_civil_type AS OBJECT (nom VARCHAR(30), datenais DATE) / d CREATE TYPE adresse_type AS OBJECT (nrue NUMBER(3), rue VARCHAR(40), ville VARCHAR(30)) / CREATE TYPE Pil t t AS OBJECT CREATE TYPE Pilote_type AS OBJECT (brevet CHAR(6), etat_civil_t etat_civil_type, adresse_t adresse_type, paye NUMBER(6,2)) / C. Soutou 2007 11 Table objet Syntaxe Syntaxe CREATE TABLE [schéma.]nomTableObjet OF [schéma.] nomType [(colonne [DEFAULT expression] [ contrainteEnLigne [contrainteEnLigne]... [ g [ g ] | contrainteREFEnLigne ] | { contrainteHorsLigne | contrainteREFHorsLigne } [,colonne...] )] [OBJECT IDENTIFIER IS { SYSTEM GENERATED | PRIMARY KEY }] [OBJECT IDENTIFIER IS { SYSTEM GENERATED | PRIMARY KEY }]; Exemple CREATE TABLE Pil t OF Pil t t CREATE TABLE Pilote OF Pilote_type (CONSTRAINT pk_Pilote PRIMARY KEY(brevet), CONSTRAINT df_paye paye DEFAULT 3000, CONSTRAINT nn_paye CHECK (paye IS NOT NULL), _ CONSTRAINT ck_paye CHECK (paye BETWEEN 2000 AND 5000), CONSTRAINT nn_nom CHECK (etat_civil_t.nom IS NOT NULL), CONSTRAINT un_nom UNIQUE (etat_civil_t.nom)); C. Soutou 2007 12 é Héritage CREATE TYPE Employe_type AS OBJECT (codemp CHAR(6), etat_civil etat_civil_type, adresse adresse_type, paye NUMBER(6,2)) INSTANTIABLE NOT FINAL / CREATE TYPE Pilote_type UNDER Employe_type (nbHvol NUMBER, compagnie VARCHAR(6)) NOT INSTANTIABLE NOT FINAL / CREATE TYPE Pil_instructeur_type UNDER Pilote_type (nbHvolIns NUMBER, expireQualif DATE) INSTANTIABLE FINAL / C. Soutou 2007 13 Les références Les références C. Soutou 2007 14 Syntaxe D t Dans un type CREATE TYPE type2 {AS OBJECT | UNDER nomSurType2} (…, colonne REF type1, …) / Dans une table CREATE TABLE nomTableRelationnelle (…, colonne REF type1, …); C. Soutou 2007 15 é Caractéristiques pointeur d’un objet (persistant ou non) vers un objet persistant (row object) persistant (row object) Jointures implicites dans le SELECT et le WHERE Récursivité des types possible via REF Récursivité des types possible via REF Intégrité référentielle (FOREIGN KEY, NOT NULL, C S) REFERENCES) C. Soutou 2007 16 Exemple CREATE TYPE Siege social type AS OBJECT CREATE TYPE Siege_social_type AS OBJECT (nrue NUMBER(3), rue VARCHAR(20), ville VARCHAR(15)) / CREATE TYPE C i t AS OBJECT CREATE TYPE Compagnie_type AS OBJECT (comp VARCHAR(4), siege_social_t siege_social_type, nomComp VARCHAR(15)) / CREATE TYPE Avion_type AS OBJECT (immat VARCHAR(6), typeAvion VARCHAR(10), capacite NUMBER(3),ref_Compagnie REF Compagnie_type) / C. Soutou 2007 17 Exemple CREATE TYPE Siege social type AS OBJECT CREATE TYPE Siege_social_type AS OBJECT (nrue NUMBER(3), rue VARCHAR(20), ville VARCHAR(15)) / CREATE TYPE Compagnie_type AS OBJECT i i i i (comp VARCHAR(4), siege_social_t siege_social_type, nomComp VARCHAR(15)) / CREATE TYPE Avion_type AS OBJECT (immat VARCHAR(6), typeAvion VARCHAR(10), ( ( ), yp ( ), capacite NUMBER(3),ref_Compagnie REF Compagnie_type) / CREATE TABLE Compagnie OF Compagnie_type (CONSTRAINT k C i PRIMARY KEY( )) (CONSTRAINT pk_Compagnie PRIMARY KEY(comp)); CREATE TABLE Avion OF Avion_type (CONSTRAINT pk Avion PRIMARY KEY(immat), _ CONSTRAINT nn_ref_Compagnie CHECK (ref_Compagnie IS NOT NULL), CONSTRAINT refer_Avion ref_Compagnie REFERENCES Compagnie); C. Soutou 2007 18 Opérateurs pour les références Opérateurs pour les références (étudiés dans les parties Manipulation-Interrogation) REF(alias) renvoie un OID t it l t d t à DEREF(reference) extrait le contenu du type à l’adresse passée en paramètre VALUE(alias) s’applique à tout type de données et extrait les valeurs du type renvoyé yp y DANGLING (renvoie TRUE si la référence est perdue) p C. Soutou 2007 19 C ll ti Collections NESTED TABLE et VARRAY NESTED TABLE et VARRAY C. Soutou 2007 20 Les collections Les collections Principe Collection = { éléments de même type } Collections Oracle Collections Oracle NESTED TABLE : non ordonnée et non limitée (pas denses) VARRAY : ordonnée et limitée mais extensible (V comme Variable) Variable) Imbrications possibles (multi-niveaux) NESTED TABLE d VARRAY NESTED TABLE de VARRAY VARRAY de NESTED TABLE VARRAY de VARRAY NESTED TABLE de NESTED TABLE C. Soutou 2007 21 é Création d’une nested table pilotes_elt_nt_type brevet nom age pilotes_nt_type {pilotes_nt} brevet nom age compagnie_type comp nomComp {pilotes_nt} brevet nom age Compagnie comp nomComp {pilotes nt} comp nomComp {pilotes_nt} brevet nom age pilotes_tabnt C. Soutou 2007 22 Syntaxe Syntaxe CREATE TYPE ll ti t t CREATE TYPE nomcollection_nt_type IS TABLE OF nomelement_elt_nt_type [NOT NULL] / CREATE TABLE nomdetable CREATE TABLE nomdetable [ OF nomType | (col1 type1, … collection_nt collection_nt_type …) ] NESTED TABLE collection_nt STORE AS collection_tabnt; Exemple C. Soutou 2007 23 Contraintes Au niveau des colonnes de la collection Pas possible de définir CHECK, NOT NULL et UNIQUE sur une colonne d’une collection nested table lors de la création de la table (CREATE TABLE ) de la table (CREATE TABLE…) Solution : ALTER TABLE, appliquée à la table de stockage (directives ADD, DROP, DISABLE, ENABLE) (directives ADD, DROP, DISABLE, ENABLE) Exemples L’âge d’un pilote doit être compris entre 18 et 60 ans L âge d un pilote doit être compris entre 18 et 60 ans Il n’y a pas d’homonyme C. Soutou 2007 24 Contraintes Au niveau de la collection elle-même (sur ( l’objet colonne dans sa globalité) La contrainte NOT NULL assure que toute collection sera q toujours non nulle (ne pas confondre avec une collection vide qui ne stocke aucun élément) é à Solution : ALTER TABLE, appliquée à la table principale (directives ADD, DROP, DISABLE, ENABLE) ALTER TABLE Compagnie ADD CONSTRAINT nn_pilotes_nt CHECK (pilotes_nt IS NOT NULL); C. Soutou 2007 25 Restrictions Pas possible de définir un déclencheur (trigger) sur p ( gg ) la table de stockage d’une collection nested table Pas possible de définir une clé étrangère sur une colonne d’une collection nested table colonne d une collection nested table L t bl d t k ’ t ibl La table de stockage n’est pas accessible directement par SELECT, INSERT, UPDATE ou DELETE (elle permet simplement de gérer des DELETE (elle permet simplement de gérer des contraintes ou des index) C. Soutou 2007 26 é Caractéristiques des varrays Un varray (tableau pré-dimensionné) uploads/Voyage/ resume-bdoo.pdf
Documents similaires










-
36
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Attribution requise- Détails
- Publié le Mai 11, 2022
- Catégorie Travel / Voayage
- Langue French
- Taille du fichier 0.2532MB