objet

publicité
Bases de données orientées-objets
12d. SQL3
Yves Pigneur
Stéphane Rey
Ecole des HEC
Université de
Lausanne
CH-1015 Lausanne
[email protected]
(+41 21) 692.3416
Agenda
• Forces et faiblesses du modèle relationnel:
– nouveaux besoins en matière de gestion de données.
• Le modèle objet-relationnel.
• SQL3.
• Conclusions.
HEC Lausanne - 1999
2
Forces du modèle relationnel
• Permet de modéliser des données adaptées à la gestion à l'aide de tables:
– représentation naturelle d'ensembles.
• Offre d'excellentes performances sur le transactionnel (OLTP - Online
Transaction Processing).
• Intègre et permet la présentation multidimensionnelle de données (OLAP Online Analysis Processing).
S'est imposé comme le standard de l'industrie:
– langage SQL2;
– architecture client-serveur;
– optimisation des requêtes (algèbre, réécriture, modèle de coûts)
gestion des transactions.
HEC Lausanne - 1999
3
Faiblesses du modèle relationnel
• Les règles de modélisation imposées pour structurer les données sont trop
restrictives.
• L'absence de pointeurs visible est pénalisante et nécessite l'utilisation de
jointures, opérations lourdes et coûteuses.
• Le non-support de domaines composés imposé par la première forme
normale de Codd est inadapté aux objets complexes.
• La non intégration des opérations dans le modèle relationnel constitue un
manque.
HEC Lausanne - 1999
4
Le besoin de types de données multimédia
Types de données
ABC123
Temps
1996
HEC Lausanne - 1999
5
Le modèle objet-relationnel (1)
• Type de données utilisateur:
type de données définissables par l'utilisateur composé d'une structure de
données et d'opérations encapsulant cette structure. SQL3 les nomme
types abstraits (ADT).
• Patron de collection:
Type de données générique permettant de supporter des attributs
multivalués et de les organiser selon un type de collection. Exemple: une
liste.
• Référence d'objet:
Type de données particulier permettant de mémoriser l'adresse invariante
d'un objet ou d'un tuple. Permet de chaîner les objets directement entre
eux, sans passer par des jointures.
HEC Lausanne - 1999
6
Le modèle objet-relationnel (2)
• Héritage de type:
Forme d'héritage impliquant la possibilité de définir un sous-type d'un type
existant, celui-ci héritant alors de la structure et des opérations du type de
base.
• Héritage de table:
Forme d'héritage impliquant la possibilité de définir une sous-table d'une
table existante, celle-ci héritant alors de la structure et des éventuelles
opérations de la table de base.
HEC Lausanne - 1999
7
Le modèle objet-relationnel (3)
OBJET
Polymorphisme
Types
utilisateurs
Opérations
RELATIONNEL
Domaine
Table
Attribut
Clé
Référence
Collections
Identifiant
Héritage
HEC Lausanne - 1999
8
Le modèle objet-relationnel (4)
Police
9876
...
Conducteurs
Conducteur
Age
Paul
19
Louise
37
Accidents
Date
HEC Lausanne - 1999
9
Vue d'ensemble de SQL3 (1)
1
le cad re
SQL/ Framew ork
2
les
fond ements
SQL/ Found ation
3
l'interface
client
SQL/ CLI
4
les
procéd ures
stockées
l'intégration
aux
langages
classiques
SQL/ PSM
5
HEC Lausanne - 1999
Une d escription non-technique d e
la façon d ont le d ocument est
structuré, et une d éfinition d es
concepts commu ns à toutes les
parties.
Le noyau d e base, incluant les
types d e d onnées utilisateurs et le
mod èle objet-relationnel.
L'interface d 'appel client permet
le d ialogue client-serveur pour
l'accès aux d onnées, via SQL2
puis SQL3.
Le langage d e spécification d e
procéd ures stockées.
SQL/ Bind ings
10
Vue d'ensemble de SQL3 (2)
6
la gestion d e SQL/ Transaction
transaction
7
la gestion
d u temps
8
9
A bandonné
l'accès aux
d onnées
externes
l'intégration
aux
langages
objets
10
HEC Lausanne - 1999
SQL/ Temporal
SQL/ MED
Une spécification d e l'interface
XA pour moniteur transactionnel
d istribué.
Le support d u temps, d es
intervalles temporels, et d es
séries temporelles.
L'utilisation d e SQL pour accéd er
à d es d onnées non-SQL.
SQL/ OBJ
11
SQL3 - Les types abstraits
• CREATE [DISTINCT] TYPE <nom ADT> [<OPTION OID>]
[<CLAUSE SOUS-TYPE>] [AS] (<CORPS DE L'ADT>)
• La clause DISTINCT est utilisée pour renommer un type de base existant
déjà.
HEC Lausanne - 1999
12
SQL3 - Les types abstraits, exemples (1)
• Type avec OID pouvant être utilisé comme un objet:
CREATE TYPE PHONE WITH OID VISIBLE (PAYS VARCHAR, ZONE
VARCHAR, NOMBRE INT, DESCRIPTION CHAR(20));
– WITH OID VISILE permet de préciser la visibilité de l'OID pour chaque
instance (objet).
• Type avec sous-type:
CREATE TYPE ETUDIANT UNDER PERSONNE (CYCLE VARCHAR,
ANNEE INT);
• Type énuméré:
CREATE TYPE JOUR-OUVERT (LUN, MAR, MER, JEU, VEN);
HEC Lausanne - 1999
13
SQL3 - Les types abstraits, exemples (2)
• Type avec OID et fonction:
CREATE TYPE EMPLOYE WITH OID VISIBLE (NUM CHAR(10),
DATENAIS DATE, REPOS JOUR-OUVERT, SALAIRE FLOAT,
FUNCTION AGE (E EMPLOYE) RETURNS (INT) { ... } END
FUNTION;);
CREATE TYPE JOUROUVERT (LUN, MAR,
MER, JEU, VEN);
HEC Lausanne - 1999
14
SQL3 - Les constructeurs d'objets complexes
• SQL3 offre les patrons de base SET(T), MULTISET(T) et LIST(T).
• Un type personne avec une liste de prénoms:
CREATE TYPE PERSONNE WITH OID VISIBLE (NSS INT, NOM
VARCHAR, PRENOMS LIST(VARCHAR), TEL SET(PHONE));
CREATE TYPE PHONE WITH
OID VISIBLE (PAYS
VARCHAR, ZONE VARCHAR,
NOMBRE INT, DESCRIPTION
CHAR(20));
• Un type avec référence à un objet:
CREATE TYPE VOITURE (NUMERO CHAR(9), COULEUR VARCHAR,
PROPRIETAIRE REF(PERSONNE));
HEC Lausanne - 1999
15
SQL3 - Les tables
• Création de tables:
CREATE TABLE ACCIDENT (ACCIDENT INT, RAPPORT TEXT,
PHOTO IMAGE);
CREATE TABLE POLICE (NPOLICE INT, NOM VARCHAR, ADRES
ADRESSE, CONDUCTEURS SET(CONDUCTEUR), ACCIDENTS
LIST(ACCIDENT));
CREATE TABLE PERSONNES OF PERSONNE;
CREATE TABLE VINSMILL UNDER VINS
WITH (MILL INT, QUALITE VARCHAR)
HEC Lausanne - 1999
CREATE TYPE PERSONNE
WITH OID VISIBLE (NSS
INT, NOM VARCHAR,
PRENOMS LIST(VARCHAR),
TEL SET(PHONE));
16
SQL3 - Appel de fonctions
• SELECT E.NOM, AGE(E)
FROM EMPLOYES E
WHERE AGE(E) < 35;
SELECT E.NOM, E..AGE()
• CREATE TABLE EMPLOYESLOC UNDER EMPLOYES WITH (ADRES
ADRESSE)
Utilisation d'une fonction pour
obtenir le district.
SELECT NOM, REPOS
FROM EMPLOYELOC E
WHERE DISTRICT(E.ADRES) = "MORGES"
AND E.ADRES..VILLE = "BUSSIGNY"
Utilisation de la notation pointée pour accéder
aux attributs composés.
HEC Lausanne - 1999
17
SQL3 - Parcours de références
• CREATE TYPE VOITURE (NUMERO CHAR(9), COULEUR VARCHAR,
PROPRIETAIRE REF(PERSONNE))
• CREATE TABLE VOITURES OF TYPE VOITURE
• SELECT V.PROPRIETAIRE DEREF NOM
FROM VOITURES V
WHERE V.COULEUR="ROUGE" AND V.PROPRIETAIRE DEREF
ADRESSE..VILLE = "PARIS"
HEC Lausanne - 1999
18
SQL3 - Recherche en collections
• SELECT REF(P)
FROM PERSONNES P
WHERE "VELO" IN
SELECT *
FROM TABLE (P.PASSETEMPS).
PASSETEMPS SET(VARCHAR)
HEC Lausanne - 1999
19
Conclusions ...
HEC Lausanne - 1999
20
Relationnel vs. objet: le modèle relationnel
POUR
CONTRE
•
•
Le modèle relationnel ne permet pas
de représenter certaines entités
complexes du monde réel.
•
Les jointures peuvent être des
opérations relativement lourdes.
•
...
•
Le modèle relationnel est adapté à un
grand nombre d'applications (de
gestion par exemple), qui utilisent des
types simples de données.
Le modèle relationnel est basé sur
une théorie "scientifique" et a été mis
à l'épreuve ces 15 dernières années:
– travaux de Codd;
– ...
•
Le modèle relationnel est facile à
comprendre.
•
...
HEC Lausanne - 1999
21
Relationnel vs. objet: le modèle objet
POUR
CONTRE
•
•
Les objets permettent de représenter
[plus] naturellement des entités du
monde réel:
– gestion des objets en mémoire et dans
la base;
– performance d'accès aux objets;
– concurrence d'accès aux objets.
– objets complexes.
•
•
Les objets offrent une plus grande
souplesse pour gérer les structures de
données complexes (multimedia,
CAO, AGL, etc.)
Les SGBDO posent un certain
nombre de problèmes:
•
...
...
HEC Lausanne - 1999
22
Evolution des SGBD
Relationnelobjet
Relationnel
Relationnel-objet
Relationnel
Objet
Objet
Nouveau
paradigme
temps
HEC Lausanne - 1999
23
Réflexion: application de gestion clients
?
Relationnelobjet
Table
Table
Relationnel
Table
Table
Table
Objet
HEC Lausanne - 1999
24
Relationnel, objet, ou objet-relationnel?
Georges Gardarin, "Bases de données objet & relationnel", Eyrolles, 1999
Complexité
des requêtes
Relationnel
Relationnel
Objetrelationnel
Objet
Complexité
des données
HEC Lausanne - 1999
25
Conclusion
Georges Gardarin, "Bases de données objet & relationnel", Eyrolles, 1999
Complexité
des requêtes
Relationnelobjet Objetrelationnel
Relationnel
Relationnel
Relationnel-objet
Objet
Objet
Relationnel
Relationnel
Objet
Nouveau
paradigme
Complexité
des données
HEC Lausanne - 1999
26
Téléchargement