IntroductionBases de donnees objet
Bases de donnees objet-relationnelrapide survol de SQL99
Bases de donneesCours 7 : Modele relationnel-objet
Odile PAPINI
ESILUniversite de la [email protected]
http://pages-perso.esil.univmed.fr/∼papini/
Odile PAPINI Bases de donnees
IntroductionBases de donnees objet
Bases de donnees objet-relationnelrapide survol de SQL99
Plan du cours
1 Introduction
2 Bases de donnees objet
3 Bases de donnees objet-relationnel
4 rapide survol de SQL99
Odile PAPINI Bases de donnees
IntroductionBases de donnees objet
Bases de donnees objet-relationnelrapide survol de SQL99
Bibliographie
Livres :
G. Gardarin : Bases de donnees objet et relationnel. Eyrollesed. 1999.
C. J. Date : Introduction aux bases de donnees. (8iemeedition). Vuibert ed. 2004.
H. Garcia-Molina, J. D. Ullman, J. Widow : Databasesystems, the complete book. Prentice Hall ed. 2002.
C. soutou : Programmer objet avec Oracle. Vuibert ed.
Supports de cours :http ://deptinfo.unice.fr/ grin/mescours/minfo/bdavancees/supports/
Odile PAPINI Bases de donnees
IntroductionBases de donnees objet
Bases de donnees objet-relationnelrapide survol de SQL99
Introduction
inconvenients du modele relationnel
annes 1980 : POO
evolution des SGBD relationnelles vers SGBD objets
idee fondamentale : augmenter le niveau d’abstraction
Odile PAPINI Bases de donnees
IntroductionBases de donnees objet
Bases de donnees objet-relationnelrapide survol de SQL99
Modele objet
concepts fondamentaux
terme objet terme traditionnel
objet ”immuable” valeur
objet ”modifiable” variable
classe d’objets types
methode fonction
message appel
notion d’heritage
Odile PAPINI Bases de donnees
IntroductionBases de donnees objet
Bases de donnees objet-relationnelrapide survol de SQL99
Bases de donnees objet
nombreux travaux dans les annees 1980
SGBDO :
Cependant le modele objet ne gere pas :
requetes ad hocles vuescontraintes d’intgrite declarativescle trangeresfermeture et completude
conception de BDO n’est pas independantes de l’application
Odile PAPINI Bases de donnees
IntroductionBases de donnees objet
Bases de donnees objet-relationnelrapide survol de SQL99
Correspondance relationnel objet
paradigmes objet et relationnel differents
modele objet est plus riche (heritage)
difficultes pour faire correspondre des objets a des donnees detables relationnelles
Odile PAPINI Bases de donnees
IntroductionBases de donnees objet
Bases de donnees objet-relationnelrapide survol de SQL99
Difficultes de passage du relationnel a l’objet
identite des objets
traduction des associations
traduction de l’heritage
navigation entre les objets
Odile PAPINI Bases de donnees
IntroductionBases de donnees objet
Bases de donnees objet-relationnelrapide survol de SQL99
Difficultes de passage du relationnel a l’objet
les objets persistants doivent etre enregistres dans la baserelationnelle
un objet a une structure complexe : representee par un graphe
le plus souvent graphe : arbre dont la racine est l’objet et lesfils correspondent aux valeurs des variables d’innstance quisont persistantes
necessite d’aplatir le graphe pour le ranger dans la basedonner relationnelle
Odile PAPINI Bases de donnees
IntroductionBases de donnees objet
Bases de donnees objet-relationnelrapide survol de SQL99
Le modele objet-relationnel
extension du modele relationnel avec des notions qui comblentles plus grosses lacunes du modele relationnel
compatibilite ascendante : ce qui fonctionne pour le modeleretationnel fonctionne dans le modele objet-relationnel
norme SQL 99 (SQL 3)
Odile PAPINI Bases de donnees
IntroductionBases de donnees objet
Bases de donnees objet-relationnelrapide survol de SQL99
Pouriquoi etendre le modele relationnel
la reconstruction d’objets complexes eclates en tablesrelationnelles est tres couteuse : nombreuses jointures
pour echapper aux jointures, le le modele objet-relationnelpermet :
les references : implantation de structures complexes
attributs multivalues (listes, ensembles, tableaux)
utilisation de references facilite l’utilisation de donnees tresvolumineuses du multimedia en permettant leur partage amoindre cout (sans jointure)
Odile PAPINI Bases de donnees
IntroductionBases de donnees objet
Bases de donnees objet-relationnelrapide survol de SQL99
Le modele objet-relationnel
modele relationnel : impossibilite de definir de nouveaux types
modele objet-relationnel : possibilite de definir de nouveauxtypes :
simples
structures
fonctions et procedures associees
modele objet-relationnel : supporte l’heritage de type(polymorphisme et reutilisation)
Odile PAPINI Bases de donnees
IntroductionBases de donnees objet
Bases de donnees objet-relationnelrapide survol de SQL99
Pourquoi ne pas utiliser les SGBDO ?
Avantages du modele relationnel :
facilite et efficacite des requetes complexes dans les grandesbases de donnees
specification des contraintes d’integrite sans programmation
theorie sous-jacente solide et normes reconnues
Odile PAPINI Bases de donnees
IntroductionBases de donnees objet
Bases de donnees objet-relationnelrapide survol de SQL99
Pourquoi ne pas utiliser les SGBDO ?
inertie de l’existant : tres nombreuses bases de donneesrelationnelles utilisees
pas de normalisation des SGBDO
moins de souplesse pour s’adapter a plusieurs applications
peu d’informaticiens formes aux SGBDO
Odile PAPINI Bases de donnees
IntroductionBases de donnees objet
Bases de donnees objet-relationnelrapide survol de SQL99
Le modele objet-relationnel
Nouvelles possibilites :
definition de nouveaux types complexes avec fonctions demanipulation
une colonne peut contenir une collection : liste, ensemble, · · ·
ligne consideree comme un objet avec un identificateur OID
utilisation de references aux objets
extension de SQL : SQL3 (ou SQL99) recherche etmanipulation des donnees
Odile PAPINI Bases de donnees
IntroductionBases de donnees objet
Bases de donnees objet-relationnelrapide survol de SQL99
Le modele objet-relationnel
Inconvenients du modele objet-relationnel :
ne s’appuie pas sur une theorie solide comme le modelerelationnel
pas de standardisation : implantations differentes, partiellesdans les SGBD
Odile PAPINI Bases de donnees
IntroductionBases de donnees objet
Bases de donnees objet-relationnelrapide survol de SQL99
A jout de nouveaux types
nouveaux types predefinis a la norme SQL :
reference
collection
LOB (objets de grande taille)
types definis par l’utilisateur :
types distincts
types structures
Odile PAPINI Bases de donnees
IntroductionBases de donnees objet
Bases de donnees objet-relationnelrapide survol de SQL99
Types distincts
pour mieux differencier les domaines des colonnes
formes a partir des types de base
s’utilisent avec les memes instructions que le type de basesous jacent
CREATE TYPE CODEPAYS as char(2) ;
CREATE TYPE MATRICULE as integer ;
Odile PAPINI Bases de donnees
IntroductionBases de donnees objet
Bases de donnees objet-relationnelrapide survol de SQL99
Types structures
correspondent aux classes de la POO
peuvent contenir des :
constructeursattributs (variables d’instances)fonctions et procedures (methodes)
les membres peuvent etre :
publicprotectedprivate
fonctions et procedures peuvent etre ecrites en SQL ou autrelangage
Odile PAPINI Bases de donnees
IntroductionBases de donnees objet
Bases de donnees objet-relationnelrapide survol de SQL99
Types structures
syntaxe semblale a celle de la creation d’une table
CREATE TYPE DEPT TYPE as OBJECT
(NUM DEP integer,NOM DEP varchar(30),LIEU varchar(30)) ;
un type peut contenir une contrainte d’integrite
redefinition d’un type s’il existe deja :
CREATE or REPLACE TYPE
Odile PAPINI Bases de donnees
IntroductionBases de donnees objet
Bases de donnees objet-relationnelrapide survol de SQL99
Fonctions dans les types
CREATE TYPE DEPT TYPE AS OBJECT
(NUM DEP integer,
NOM DEP varchar(30),
LIEU varchar(30),
MEMBER FUNCTION get LIEU RETURN varchar) ;
CREATE TYPE BOBY DEPT TYPE AS
MEMBER FUNCTION get LIEU RETURN ISbegin
return LIEU ;
end ;
end ;
Odile PAPINI Bases de donnees
IntroductionBases de donnees objet
Bases de donnees objet-relationnelrapide survol de SQL99
Heritage
les types supportent l’heritage multiple avec le mot-cleUNDERun type est final par defaut
CREATE TYPE EMPLOYE TYPE AS OBJECT
(MATR integer,NOM varchar(30),SAL numeric(8,2)),NOT FINAL ;
CREATE TYPE COMMERCIAL TYPEUNDER EMPLOYE TYPE
(COMM numeric(8,2)),NOT FINAL ;
Odile PAPINI Bases de donnees
IntroductionBases de donnees objet
Bases de donnees objet-relationnelrapide survol de SQL99
Ajout d’un attribut a un type
ALTER TYPE EMPLOYE TYPE
ADD ATTRIBUTE DATE NAISSANCE DATECASCADE ;
CASCADE : propagaton aux tables deja construites a partirdu type
Odile PAPINI Bases de donnees
IntroductionBases de donnees objet
Bases de donnees objet-relationnelrapide survol de SQL99
Ajout d’une methode a un type
ALTER TYPE EMPLOYE TYPE
ADD MEMBER
FUNCTION AGE RETURN INTEGER
CASCADE ;
Odile PAPINI Bases de donnees
IntroductionBases de donnees objet
Bases de donnees objet-relationnelrapide survol de SQL99
Types de ligne
notion de type de ligne correspond aux structures du langageC :
ensemble non encapsule d’attributs
un type peut etre nomme ou non
Odile PAPINI Bases de donnees
IntroductionBases de donnees objet
Bases de donnees objet-relationnelrapide survol de SQL99
Type de ligne non nomme
CREATE TABLE EMP
(NOM E VARCHAR(15),ADRESSE ROW(NUMERO INTEGER, RUE VARCHAR(25),· · · )) ;
Odile PAPINI Bases de donnees
IntroductionBases de donnees objet
Bases de donnees objet-relationnelrapide survol de SQL99
Type de ligne nomme
CREATE ROW TYPE ADRESSE T
(NUMERO INTEGER,RUE VARCHAR(25), · · · )) ;
ce type peut etre utilise pour :
une declaration d’attribut
une creation de table apartir de ce type
Odile PAPINI Bases de donnees
IntroductionBases de donnees objet
Bases de donnees objet-relationnelrapide survol de SQL99
Vues du dictionnaire des donnees
USER TYPES : pour les types
USER TYPES ATTRS : pour les attributs des types
USER TYPES METHODS : pour les methodes des types
USER OBJECT TABLES : pour les tables objet-relationnelles
sous SQLPLUS de Oracle :
DESCRIBE DEPT TYPE
Odile PAPINI Bases de donnees
IntroductionBases de donnees objet
Bases de donnees objet-relationnelrapide survol de SQL99
Creation de tables a partir de types
les donnees d’un type ne sont persistantes que si elles sontrangees dans une table
la creation de tables peut se faire comme en SQL (standard)
la creation de tables peut se faire a partir dun type de donees
Odile PAPINI Bases de donnees
IntroductionBases de donnees objet
Bases de donnees objet-relationnelrapide survol de SQL99
Creation de tables a partir d’un type
le type EMPLOYE TYPE
CREATE TYPE EMPLOYE TYPE AS OBJECT
(MATR integer,NOM varchar(30),SAL numeric(8,2)) ;
la creation d’une tablea partir de type et specification descontraintes d’intgrite :
CREATE TABLE EMPLOYE OF EMPLOYE TYPE
(PRIMARY KEY MATR) ;
Odile PAPINI Bases de donnees
IntroductionBases de donnees objet
Bases de donnees objet-relationnelrapide survol de SQL99
Heritage de tables
une table peut heriter d’une ou plusieurs tables
pas supporte par ORACLE 10g
Odile PAPINI Bases de donnees
IntroductionBases de donnees objet
Bases de donnees objet-relationnelrapide survol de SQL99
Creation de tables a partir d’un type derive
CREATE TABLE COMMERCIAUX OF COMMERCIAL TYPE
(CONSTRAINT PK COM PRIMARY KEY (MATR)) ;
Odile PAPINI Bases de donnees
IntroductionBases de donnees objet
Bases de donnees objet-relationnelrapide survol de SQL99
Caracteristiques d’un table objet-relationnel
une table est une table objet-relationnelle si elle a eteconstruite a partir d’un type : CREATE TABLE · · · OF
les lignes de ces tables sont considerees comme des objetsavec un identifiant (OID)
on peut utiliser des references pour designer les lignes de cestables pas possible pour les autres tables
vues du dictionnaire des donnees :
USER OBJECT TABLES : pour les tables objet-relationnelles
Odile PAPINI Bases de donnees
IntroductionBases de donnees objet
Bases de donnees objet-relationnelrapide survol de SQL99
Insertion de donnees
ajout des donnees comme pour des tables relationnelles
INSERT INTO COMMERCIAUX
(MATR, NOM, SAL, COMM)VALUES (365, ’TOTO’, 3000,500) ;
Odile PAPINI Bases de donnees
IntroductionBases de donnees objet
Bases de donnees objet-relationnelrapide survol de SQL99
Insertion avec constructeur
utilisation d’un constructeur du type avec lequel la table a eteconstruite
INSERT INTO EMPLOYE VALUES (
EMPLOYE TYPE(365, ’TOTO’, 3000,500)) ;
si le type est un type utilise par un autre type, l’utilisation duconstructeur du type est obligatoire
Odile PAPINI Bases de donnees
IntroductionBases de donnees objet
Bases de donnees objet-relationnelrapide survol de SQL99
Modifications de donnees
utilisation de la notation pointee
UPDATE EMPLOYE
SET EMPLOYE.SAL = 2800WHERE EMPLOYE.NOM =’TITI’ ;
SQL 99 fournit la notation .. pour designer un attribut d’unecolonne d’un type structure
UPDATE EMPLOYE
SET EMPLOYE.ADRESSE .. NUMERO = 18WHERE EMPLOYE.NOM =’TITI’ ;
Odile PAPINI Bases de donnees
IntroductionBases de donnees objet
Bases de donnees objet-relationnelrapide survol de SQL99
Appel de procedure ou fonction
E.NOM, age(E)
FROM EMPLOYE EWHERE age(E) < 40 ;
sous ORACLE
SELECT E.NOM, E.age()
FROM EMPLOYE EWHERE E.age(E) < 40 ;
Odile PAPINI Bases de donnees
IntroductionBases de donnees objet
Bases de donnees objet-relationnelrapide survol de SQL99
References
On peut indiquer la definition d’u type qu’un attribut contientdes references (pas des valeurs) a des donnees dun autre type
CREATE TYPE EMPLOYE TYPE AS OBJECT
(MATR integer,NOM varchar(30),SAL numeric(8,2)),· · ·
DEPT REF DEPT TYPE) ;
Odile PAPINI Bases de donnees
IntroductionBases de donnees objet
Bases de donnees objet-relationnelrapide survol de SQL99
SELECT avec references
La notation pontee permet de recuperer les attributs d’untype dont on a un pointeur
lieu de travail des employes
sous SQL 99
SELECT NOM, E.DEPT → LIEU
FROM EMPLOYE E ;
avec ORACLE
SELECT NOM, E.DEPT.LIEU
FROM EMPLOYE E ;
Odile PAPINI Bases de donnees
IntroductionBases de donnees objet
Bases de donnees objet-relationnelrapide survol de SQL99
INSERTIONS avec references
pointeur NULL
INSERT INTO EMPLOYE VALUES
(1546, ’TITI’, NULL) ;
reference vers le DEPT numero 10
INSERT INTO EMPLOYE (MATR, NOM, DEPT)
SELECT 1830, ’TOTO’, REF(d)FROM DEPT dWHERE DEPT.NUM DEPT = 10 ;
Odile PAPINI Bases de donnees
IntroductionBases de donnees objet
Bases de donnees objet-relationnelrapide survol de SQL99
MODIFICATIONS avec references
UPDATE EMPLOYE
SET DEPT =
(SELET REF(d)FROM DEPT dWHERE NUM DEPT =10)
WHERE MATR = 1984 ;
si DEPT de numero 10 n’existe pas le SELECT renvoie NULL
pour eviter ce probleme : rajouter la contrainte NOT NULL
DEPT REF DEPT TYPE NOT NULL
Odile PAPINI Bases de donnees
IntroductionBases de donnees objet
Bases de donnees objet-relationnelrapide survol de SQL99
Contraintes sur les references
le type REF DEPT TYPE restreint le type reference mais pasla table referencee
cette reference peut referencer une valeur de n’importe quellecolonne de table qui a le type DEPT TYPE
la clause SCOPE restreint la colonne referencee, elle peut etreajoutee lors de la definition d’une table
DEPT REF DEPT TYPESCOPE IS DEPT TABLE ;
DEPT reference une ligne de la table DEPT TABLE (pas uneligne d’une autre table)
Odile PAPINI Bases de donnees
IntroductionBases de donnees objet
Bases de donnees objet-relationnelrapide survol de SQL99
Reference perdue
SCOPE ne suffit pas pour imposer une contrainte stricte
la reference peut etre perdue : ne pas correspondre a une ligneexistante
pour eviter les references perdues SCOPE doit etre remplacepar une contrainte REFERENCES (comme avec des tablesrelationnelles)
DEPT REF DEPT TYPEREFERENCES DEPT TABLE ;
Odile PAPINI Bases de donnees
IntroductionBases de donnees objet
Bases de donnees objet-relationnelrapide survol de SQL99
Types de collections
Representation d’une colonne multivaluee : utilisation descollections
ensembles (pas de doublons)sacs (avec doublons)listes (ordonnees et indexees par un entier)
d’autres types de collections peuvent etre ajoutees par lesSGBD
Odile PAPINI Bases de donnees
IntroductionBases de donnees objet
Bases de donnees objet-relationnelrapide survol de SQL99
Exemple de collections
CREATE TYPE EMPLOYE TYPE
(MATR integer,NOM varchar(30),PRENOMS LIST (varchar(15)),ENFANTS SET(personne),· · · ) ;
Odile PAPINI Bases de donnees
IntroductionBases de donnees objet
Bases de donnees objet-relationnelrapide survol de SQL99
Utilisation d’une collection
on peut utiliser une collection comme une table en la faisantpreceder par le mot-cle TABLE
SELECT NOM FROM EMPLOYE E
WHERE NOM IN(SELECT *FROM TABLE (E.PRENOMS)) ;
on peut faire afficher une collection comme un tout
SELECT NOM, PRENOMS FROM EMPLOYE ;
Odile PAPINI Bases de donnees
IntroductionBases de donnees objet
Bases de donnees objet-relationnelrapide survol de SQL99
Les collections avec ORACLE 10g
ORACLE 10g n’offre que 2 types de collections :
table imbriquee (NESTED TABLE) : collection on-ordonnee etnon limitee en nombre d’elements
tableau predimensionne (VARRAY) : collection d’elements dememe type, ordonnee et limitee en taille
Odile PAPINI Bases de donnees
IntroductionBases de donnees objet
Bases de donnees objet-relationnelrapide survol de SQL99
Tables imbriquees
une table relationnelle (pas necessairement objet-relationnelle)peut contenir une ou plusieurs tables imbriquees
table imbriquee (NESTED TABLE) : collection on-ordonnee etnon limitee en nombre d’elements
tableau predimensionne (VARRAY) : collection d’elements dememe type, ordonnee et limitee en taille
Odile PAPINI Bases de donnees
Top Related