© Richard CHBEIR
Objets d'une BDD Objets d'une BDD
Oracle
Oracle
Plan Plan
Définition des objets
Manipulation des objets Interrogation des objets Encapsulation des objets
Fonctions et procédures
Pourquoi ? Pourquoi ?
ADR
…
… salaire
…
… dept
…
…
…
… NumEmp
Employe
Approche relationnelle
Pourquoi ? Pourquoi ?
Employe
ADR
…
… salaire
…
… dept
…
…
…
… NumEmp
Employe
Approche avancée
Pourquoi ? Pourquoi ?
… ..
N°Véhicule ADR
…
… salaire
…
… dept
…
…
…
… NumEmp
Employe
…
… Distance
…
… Ville
…
… N°
Intervention Poss.
Date
…
… Montant
…
… N°Int
…
… NumEmp
Contrat
Date
…
… Marque
…
… Type
…
…
…
… Num
Véhicule
Pourquoi ? Pourquoi ?
Contrat Véhicule
@veh
@contrat Distance
Ville
Lieux Interventions CODE_POSTAL
VILLE RUE
NOR UE
ADR sal
dept
…
…
…
…
…
…
…
… NumEmp
Employe
Type Abstrait de Donn
Type Abstrait de Donn é é es es (TAD)
(TAD)
Nouveau type de données défini par l’utilisateur Une structure de données partagée
Inclut des méthodes qui sont des procédures ou des fonctions permettant de manipuler les objets ou instances du type abstrait
Ne peut pas contenir de contraintes (NOT NULL, CHECK, …)
Est un type final sans si précisé
Type Abstrait de Donn
Type Abstrait de Donn é é es es (TAD)
(TAD)
Autres types Large Object Bloc (LOB)
Binary LOB (BLOB) : stockage des données binaires non structurées (4Go)
Character LOB (CLOB) : stockage de données caractères (4Go)
Binary FILE (BFILE) : fichiers binaires
localisés à l’extérieur de la BDD
Type Abstrait de Donn
Type Abstrait de Donn é é es es (TAD)
(TAD)
Type utilisé par une table
Type utilisé par un autre type
Type utilisé par un attribut d’une table relationnelle
Type utilisé par un attribut d’une table
objet-relationnelle
Type Abstrait de Donn
Type Abstrait de Donn é é es es (TAD)
(TAD)
Type utilisé par une table
Le résultat est une structure de données
disponible pour être déclarée dans d’autres types ou tables
Syntaxe
SQL> CREATE OR REPLACE TYPE Nom_Type AS OBJECT (
Nom_attribut1 Type_Attribut,
Type Abstrait de Donn
Type Abstrait de Donn é é es es (TAD)
(TAD)
Type utilisé par une table
Exemple
SQL> CREATE OR REPLACE TYPE adresse_type AS OBJECT (
norue NUMBER,
rue VARCHAR(20), ville VARCHAR2(30),
code_postal VARCHAR2(10)) /
CODE_POSTAL VILLE
RUE NORUE
ADRESSE_TYPE
Type Abstrait de Donn
Type Abstrait de Donn é é es es (TAD)
(TAD)
Type utilisé par une table
Exemple
SQL> CREATE OR REPLACE TYPE contrat_typ AS OBJECT (no_int VARCHAR2 (8),
date_int DATE,
Montant NUMBER)
/
Type Abstrait de Donn
Type Abstrait de Donn é é es es (TAD)
(TAD)
Type utilisé par une table
Exemple
SQL> CREATE OR REPLACE TYPE veh_typ AS OBJECT (no_immat VARCHAR2 (8), date_immat DATE,
type_v VARCHAR2(7), marque VARCHAR2(15)) /
marque Type_v
Date_immat No_immat
veh_typ
Type Abstrait de Donn
Type Abstrait de Donn é é es es (TAD)
(TAD)
Type utilisé par une table
Exemple
SQL> CREATE OR REPLACE TYPE Lieu_intervention AS OBJECT (
ref_contrat REF contrat_typ, Ville VARCHAR2(15), Distance NUMBER)
/
Type Abstrait de Donn
Type Abstrait de Donn é é es es (TAD)
(TAD)
Type utilisé par un autre type
Exemple
SQL> CREATE OR REPLACE TYPE employe_type AS OBJECT ( numero NUMBER,
dept VARCHAR(5), sal NUMBER,
adr adresse_type)
/
Type Abstrait de Donn
Type Abstrait de Donn é é es es (TAD)
(TAD)
Type utilisé par un autre type
Exemple
SQL> CREATE OR REPLACE TYPE Lieux_intervention AS TABLE OF lieu_intervention
/
Type Abstrait de Donn
Type Abstrait de Donn é é es es (TAD)
(TAD)
Type utilisé par un autre type
Exemple
SQL> CREATE OR REPLACE TYPE employe_type As OBJECT ( numero VARCHAR2(5),
nom VARCHAR2(15), prenom VARCHAR2(15), dept VARCHAR2(20), veh REF veh_typ,
ADR adresse_type,
lieux_interventions lieux_intervention)
/
Type Abstrait de Donn
Type Abstrait de Donn é é es es (TAD)
(TAD)
Type utilisé par un attribut d’une table relationnelle
Exemple
SQL> CREATE TABLE employe (
norue NUMBER PRIMARY KEY, dept VARCHAR2(10),
sal NUMBER,
adr adresse_type);
Type Abstrait de Donn
Type Abstrait de Donn é é es es (TAD)
(TAD)
Type utilisé par un attribut d’une table relationnelle
Exemple
Une table qui ne dépend pas d’un type n’est pas une table objet-relationnelle
CODE_POSTAL VILLE
RUE NOR UE
ADR sal
dept
…
…
…
…
…
…
…
… NumEmp
Employe
Type Abstrait de Donn
Type Abstrait de Donn é é es es (TAD)
(TAD)
Type utilisé par un attribut d’une table objet-relationnelle
Une table est dite objet-relationnelle quand elle dépend d’un TAD
Les enregistrements d
Les enregistrements d’ ’une table OR peuvent être consid une table OR peuvent être considé ér ré és s comme des objets car ils poss
comme des objets car ils possè èdent tous un dent tous un Object Object ID (OID) ID (OID)
Type Abstrait de Donn
Type Abstrait de Donn é é es es (TAD)
(TAD)
Type utilisé par un attribut d’une table objet-relationnelle
Pour créer une table Objet-relationnelle ayant une structure d’un type préalablement défini
SQL> CREATE TABLE Nom_table OF Nom_Type [(Contraintes_d_integrite)]
;
Type Abstrait de Donn
Type Abstrait de Donn é é es es (TAD)
(TAD)
Type utilisé par un attribut d’une table objet-relationnelle
Exemple
SQL> CREATE TABLE Vehicules OF veh_typ
(CONSTRAINT PK_veh PRIMARY KEY(no_immat))
;
Type Abstrait de Donn
Type Abstrait de Donn é é es es (TAD)
(TAD)
Type utilisé par un attribut d’une table objet-relationnelle
Exemple
SQL> CREATE TABLE Employes OF employe_type
(CONSTRAINT PK_employe PRIMARY KEY(numero))
NESTED TABLE lieux_interventions STORE AS tab_int
;
Le script SQL OR Le script SQL OR
Contrat Véhicule
@veh
@contrat Distance
Ville
Lieux Interventions CODE_POSTAL
VILLE RUE
NOR UE
ADR sal
dept
…
…
…
…
…
…
…
… NumEmp
Employe
Le script SQL OR Le script SQL OR
Date Montant
…
… N°Int
…
…
Contrat
Date
…
… Marque
…
… Type
…
…
…
… Num
Véhicule
SQL> CREATE OR REPLACE TYPE veh_typ AS OBJECT (no_immat VARCHAR2 (8),
date_immat DATE,
type_v VARCHAR2(7), marque VARCHAR2(15)) /
SQL> CREATE TABLE Vehicules OF veh_typ
(CONSTRAINT PK_veh PRIMARY KEY(no_immat))
;
SQL> CREATE OR REPLACE TYPE contrat_typ AS OBJECT (no_int VARCHAR2 (8),
date_int DATE, Montant NUMBER) /
SQL> CREATE TABLE Contrats OF contrat_typ (CONSTRAINT PK_con PRIMARY KEY(no_int))
;
Le script SQL OR Le script SQL OR
@veh
@contrat Distance
Ville
Lieux Interventions CODE_POSTAL
VILLE RUE
NOR UE
ADR sal
dept
…
…
…
…
…
…
…
… NumEmp
Employe
CREATE or replace TYPE adresse_type AS OBJECT (
norue NUMBER, rue VARCHAR(20), ville VARCHAR2(30),
code_postal VARCHAR2(10))
CREATE or REPLACE TYPE Lieux_intervention as Table of lieu_intervention
/
CREATE OR REPLACE TYPE employe_type As OBJECT (
numero VARCHAR2(5),
nom VARCHAR2(15),
prenom VARCHAR2(15),
A vous A vous
nemp age nom
D2 253000 N1 28 Zidane
N2 26 Thuram
N3 30 Barthez
N5 26 Dessailly
N6 24 Lizarazu
N7 32 Deschamps
{employes}
325000
125000 D3
D3
numdep budget
DANS UNE TABLE DANS UNE TABLE
RELATIONNELLE RELATIONNELLE
nemp age nom
D2 253000 N1 28 Zidane
N2 26 Thuram
N3 30 Barthez
N5 26 Dessailly
N6 24 Lizarazu
N7 32 Deschamps
{employes}
325000
125000 D3
D3
numdep budget
CREATE OR REPLACE TYPE emp_type AS OBJECT
(nemp VARCHAR2(13), age NUMBER, nom VARCHAR2(30)) /
CREATE OR REPLACE TYPE emps_type AS TABLE OF emp_type
DANS UNE TABLE OR DANS UNE TABLE OR
nemp age nom
D2 253000 N1 28 Zidane
N2 26 Thuram
N3 30 Barthez
N5 26 Dessailly
N6 24 Lizarazu
N7 32 Deschamps
{employes}
325000
125000 D3
D3
numdep budget
CREATE OR REPLACE TYPE emp_type AS OBJECT
(nemp VARCHAR2(13), age NUMBER, nom VARCHAR2(30)) /
CREATE OR REPLACE TYPE emps_type AS TABLE OF emp_type /
CREATE OR REPLACE TYPE departement_type AS OBJECT
(numdep VARCHAR2(11), budget NUMBER, employes emps_type) /
CREATE TABLE Departement OF departement_type (PRIMARY KEY (numdep))
Insertion des
Insertion des tuples tuples
Dans une table avec un attribut défini avec un TAD
SQL> INSERT INTO Nom_Table
VALUES ( V1, V2, ….., Nom_Type(
val1, val2, ….)
);
Insertion des
Insertion des tuples tuples
Dans une table avec un attribut défini avec un TAD
Exemple
SQL> insert into contrats values('1','12/12/2006',500);
SQL> insert into contrats values(
contrat_typ(‘1','12/12/2006',500) );
Date Montant
N°Int