Bases de données orientées-objetsBases de données orientées-objets12d12d. SQL3. SQL3
Yves PigneurStéphane Rey
Ecole des HECUniversité de Lausanne
CH-1015 [email protected]
(+41 21) 692.3416
HEC Lausanne - 19992
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 - 19993
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 - 19994
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 - 19995
Le besoin de types de données multimédia
1996
ABC123
Temps
Types de données
HEC Lausanne - 19996
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 - 19997
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 - 19998
Le modèle objet-relationnel (3)
RELATIONNELDomaine
TableAttribut
CléRéférence
OBJET
Polymorphisme
Typesutilisateurs
Opérations
Héritage
Identifiant
Collections
HEC Lausanne - 19999
Le modèle objet-relationnel (4)
... Conducteurs AccidentsPolice
9876 Conducteur Age
Paul 19
Louise 37
Date
HEC Lausanne - 199910
Vue d'ensemble de SQL3 (1)
1 le cadre SQL/ Framework Une description non-technique dela façon dont le document eststructuré, et une définition desconcepts communs à toutes lesparties.
2 lesfondements
SQL/ Foundation Le noyau de base, incluant lestypes de données utilisateurs et lemodèle objet-relationnel.
3 l'interfaceclient
SQL/ CLI L'interface d'appel client permetle dialogue client-serveur pourl'accès aux données, via SQL2puis SQL3.
4 lesprocéduresstockées
SQL/ PSM Le langage de spécification deprocédures stockées.
5 l'intégrationauxlangagesclassiques
SQL/ Bindings
HEC Lausanne - 199911
Vue d'ensemble de SQL3 (2)
6 la gestion detransaction
SQL/ Transaction Une spécification de l'interfaceXA pour moniteur transactionneldistribué.
7 la gestiondu temps
SQL/ Temporal Le support du temps, desintervalles temporels, et desséries temporelles.
8 Abandonné9 l'accès aux
donnéesexternes
SQL/ MED L'utilisation de SQL pour accéderà des données non-SQL.
10 l'intégrationauxlangagesobjets
SQL/ OBJ
HEC Lausanne - 199912
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 - 199913
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 - 199914
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 JOUR-OUVERT (LUN, MAR, MER, JEU, VEN);
HEC Lausanne - 199915
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));
• Un type avec référence à un objet:CREATE TYPE VOITURE (NUMERO CHAR(9), COULEUR VARCHAR, PROPRIETAIRE REF(PERSONNE));
CREATE TYPE PHONE WITH OID VISIBLE (PAYS VARCHAR, ZONE VARCHAR, NOMBRE INT, DESCRIPTION CHAR(20));
HEC Lausanne - 199916
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 VINSWITH (MILL INT, QUALITE VARCHAR)
CREATE TYPE PERSONNE WITH OID VISIBLE (NSS INT, NOM VARCHAR, PRENOMS LIST(VARCHAR), TEL SET(PHONE));
HEC Lausanne - 199917
SQL3 - Appel de fonctions
• SELECT E.NOM, AGE(E)FROM EMPLOYES EWHERE AGE(E) < 35;
• CREATE TABLE EMPLOYESLOC UNDER EMPLOYES WITH (ADRES ADRESSE)
SELECT NOM, REPOSFROM EMPLOYELOC EWHERE DISTRICT(E.ADRES) = "MORGES"AND E.ADRES..VILLE = "BUSSIGNY"
SELECT E.NOM, E..AGE()
Utilisation d'une fonction pour obtenir le district.
Utilisation de la notation pointée pour accéder aux attributs composés.
HEC Lausanne - 199918
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 NOMFROM VOITURES VWHERE V.COULEUR="ROUGE" AND V.PROPRIETAIRE DEREF ADRESSE..VILLE = "PARIS"
HEC Lausanne - 199919
SQL3 - Recherche en collections
• SELECT REF(P)FROM PERSONNES PWHERE "VELO" IN
SELECT *FROM TABLE (P.PASSETEMPS).
PASSETEMPS SET(VARCHAR)
HEC Lausanne - 199920
Conclusions ...
HEC Lausanne - 199921
Relationnel vs. objet: le modèle relationnel
• 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.
• ...
• 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.
• ...
POUR CONTRE
HEC Lausanne - 199922
Relationnel vs. objet: le modèle objet
• Les objets permettent de représenter [plus] naturellement des entités du monde réel:
– 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:
– gestion des objets en mémoire et dans la base;
– performance d'accès aux objets;– concurrence d'accès aux objets.
• ...
POUR CONTRE
HEC Lausanne - 199923
Evolution des SGBD
RelationnelRelationnel
ObjetObjet
temps
Relationnel-objet
Relationnel-objet
?Objet
Relationnel-objet
Relationnel
Nouveauparadigme
HEC Lausanne - 199924
Réflexion: application de gestion clients
?
Table
Table
TableRelationnelRelationnel
ObjetObjet
Table
Table
Relationnel-objet
Relationnel-objet
HEC Lausanne - 199925
Relationnel, objet, ou objet-relationnel?
Complexitédes données
Complexitédes requêtes
RelationnelRelationnel
Objet-relationnel
Objet-relationnelRelationnelRelationnel
ObjetObjet
Georges Gardarin, "Bases de données objet & relationnel", Eyrolles, 1999
HEC Lausanne - 199926
RelationnelRelationnel
ObjetObjet
Relationnel-objet
Relationnel-objet
?Objet
Relationnel-objet
Relationnel
Nouveauparadigme
Conclusion
Complexitédes données
Complexitédes requêtes
RelationnelRelationnel
Objet-relationnel
Objet-relationnelRelationnelRelationnel
ObjetObjet
Georges Gardarin, "Bases de données objet & relationnel", Eyrolles, 1999