Oracle by Alex
|
Home
|
Définition des objets 2.1.1. Les types abstraits de données. Type utilisé par une table.
Définitions. 2.1.3. Les structures imbriquées.
2.1.1. Les types abstraits de données. Peuvent être utilisés par :
CREATE TYPE adresse_type AS OBJECT (norue NUMBER, rue
VARCHAR2(20), ville VARCHAR2(30), code_postal VARCHAR2(10))
![]() Type utilisé par un type. Il est possible de définir un nouveau type avec des types de bases ou prédéfinis. CREATE OR REPLACE TYPE adresse_type AS OBJECT (norue NUMBER, rue VARCHAR2(20), ville VARCHAR2(30), code_postal VARCHAR2(10)) CREATE OR REPLACE TYPE etudiant_type AS OBJECT (numero NUMBER, bac
VARCHAR2(5), adr adresse_type)
CREATE TABLE employe (numero NUMBER PRIMARY KEY, dept VARCHAR2(5),
salaire NUMBER, adr adresse_type)
![]() Non déclaré via un type ===> pas d'identificateur OID. Remarquons que 296 objets peuvent être référencés avec Oracle 8. Type utilisé par un attribut d'une table objet-relationnelle. CREATE OR REPLACE TYPE adresse_type AS OBJECT (norue NUMBER, rue VARCHAR2(20), ville VARCHAR2(30), code_postal VARCHAR2(10)) CREATE TYPE employe_type AS OBJECT (numero NUMBER, dept VARCHAR2(5), salaire NUMBER, adr adresse_type) CREATE TABLE employe OF employe_type (PRIMARY KEY (numero))
![]() Donc, pour avoir une table objet-relationnelle, il faut 1. définir un type complet
2.1.2. Les pointeurs (et les pseudo-colonnes). Définitions : ROWID : pseudo-colonne qui contient l'adresse physique de chaque
enregistrement d'une base de données Oracle Référence simple. AVANTAGE : Ils sont un outil puissant car ils accèdent (de manière unidirectionnelle...) facilement à la mémoire, d'où performance. INCONVENIENT : Les pointeurs apparaissent en abondance sous Oracle 8. Ils sont hélas, un point faible pour la sécurité du système mais ils sont surtout une source de problèmes pas toujours facile à déceler (segmentation fault). CREATE TYPE administrateur_type AS OBJECT (nadmin VARCHAR2(5), age NUMBER, nom VARCHAR2(30)) CREATE TYPE PC_type AS OBJECT (nserie VARCHAR2(5), adresseIP VARCHAR2(15), administre REF administrateur_type) Ces requêtes permettent d'associer à chaque PC son administrateur par
pointage vers l'objet voulu.
Référence inverse physique. Pour les créer, il faut d'abord définir un type incomplet (ici PC_type). CREATE TYPE PC_type CREATE OR REPLACE TYPE admin_type AS OBJECT (nadmin VARCHAR2(5), age NUMBER, nom VARCHAR2(30), machine REF PC_type) CREATE OR REPLACE TYPE PC_type AS OBJECT (nserie VARCHAR2(5), adresseIP VARCHAR2(15), administre REF admin_type) CREATE TABLE PC OF PC_type(PRIMARY KEY (nserie)) CREATE TABLE admin OF admin_type (CONSTRAINT pk_admin PRIMARY KEY (nadmin)) AVANTAGE : Ils sont un outil puissant. INCONVENIENT : Difficile à gérer.
2.1.3. Les structures imbriquées. Deux types de structures imbriquées sont utilisables sous Oracle 8 : les tables imbriquées (nested tables) et les tableaux prédimensionnés (VARRAY). Une table imbriquée est une collection non ordonnée et non limitée d'éléments de même type. Ce concept permet d'abandonner le concept de première forme normale et de créer des tables au format 2NF. (Forme dans laquelle chaque attribut qui ne fait pas partie d'une clef est dépendant fonctionnellement sur chacune ; plus simplement, il suffit que les clefs ne soient constituées que d'attributs simples pour que le schéma soit en 2NF). Un tableau prédimensionné est une collection ordonnée et limitée d'éléments de même type. Pour les tables imbriquées :
![]() Normalement, l'implémentation doit être transparente...
|