Gardarin 2001 L'OBJET-RELATIONNEL 1. Le modèle objet-relationnel 2. Le processus de normalisation...
-
Upload
camille-coste -
Category
Documents
-
view
109 -
download
0
Transcript of Gardarin 2001 L'OBJET-RELATIONNEL 1. Le modèle objet-relationnel 2. Le processus de normalisation...
Gardarin 2001
L'OBJET-RELATIONNEL
1. Le modèle objet-relationnel2. Le processus de normalisation3. Vue d'ensemble de SQL34. Le support des objets5. Conclusion
2©Gardarin 2001
1.MODELE OBJET-RELATIONNEL
Nécessité de conserver la compatibilité avec l'existant• SGBD relationnel• Applications client-serveur
Nécessité de supporter des données complexes• textuelles• géométriques• géographiques• audiovisuelles• soniques• multimédias
3©Gardarin 2001
Faiblesses du modèle relationnel
Opérations séparées des données• procédures stockées non intégrées dans le modèle• absence d'attributs cachés
Support de domaines atomiques• 1ère forme normale de Codd• inadapté aux objets complexes (documents
structurés)• introduction de BLOB
Mauvais support des applications non standards• CAO, CFAO• BD Géographiques• BD techniques
4©Gardarin 2001
L'apport des modèles objets
Identité d'objets• introduction de pointeurs invariants• possibilité de chaînage
Encapsulation des données• possibilité d'isoler les données par des opérations• facilite l'évolution des structures de données
Héritage d'opérations et de structures• facilite la réutilisation des types de données• permet l'adaptation à son application
Possibilité d'opérations abstraites (polymorphisme)• simplifie la vie du développeur
5©Gardarin 2001
Le support d'objets complexes
Nécessité d'introduire des attributs multivalués
Fourniture de collections prédéfinies telles liste, ensemble, tableau, ...
Imbrication des collections pour représenter des objets très compliqués
Exemple• Type Molécule
{ list <Atome, Connexions>}
• Type Atome { Noyau, list <Electrons> }
6©Gardarin 2001
Relationnel
Types utilisateurset encapsulation
Collectionet objets complexes
Référence et identité
Héritageet réutilisation
Classes de systèmes
Etendre le relationnel• Systèmes objet-relationnel• Illustra de Stonebraker• UniSQL de Won Kim
Tout refaire• Systèmes objets• O2 de Bancilhon• Complexité
repartir de C++ C++ persistants
7©Gardarin 2001
DomaineTableAttributCléRéférence
RELATIONNEL
OBJET
Opération
Héritage
Identifiant
Polymorphisme
Types utilisateurs Collections
L'objet-relationnel Extension du modèle relationnel
• attributs multivalués : structure, liste, tableau, ensemble, ...
• héritage sur relations et types• domaine type abstrait de
données (structure cachée + méthodes)
• identité d'objets Extension de SQL
• définition des types complexes avec héritage
• appels de méthodes en résultat et qualification
• imbrication des appels de méthodes
• surcharge d'opérateurs
OBJECT-RELATIONAL EN ANGLAIS
8©Gardarin 2001
24 ParisPaul
Conducteur Age
45Paul
17Robert
Rapport
134
219
Photo
037
Accident
Objet Police
Police Nom Adresse Conducteurs Accidents
Exemple de table et objet
9©Gardarin 2001
Bilan Objet-Relationnel
Nécessité d ’étendre les types de données
Les outils poussent Pas de révolution objet
mais la continuité !
Questions ?• Ce n ’est pas trop
compliqué ce mélange ?
10©Gardarin 2001
2. NORMALISATION DE SQL3
Un groupe international• ISO/IEC JTC1/SC 21/WG3 DBL
Pays actifs• Australia, Brazil, Canada, France, Germany, Japan • Korea, The Netherlands, United Kingdom,United
StatesANSI X3H2 (http://www.ansi.org)Documents
• ISO/IEC 9075:1992, "Database Languages - SQL" • ANSI X3.135-1992, "Database Language SQL"
Validation par le NIST (http://ncsl.nist.gov)• SQL2-92 niveau entré ; problèmes de financement !
11©Gardarin 2001
Les composants Part 1: Framework
• Une description non-technique de comment le document est structuré.
Part 2: Foundation • Le noyau de specification, incluant les types de données
abstraits. Part 3: SQL/CLI
• l’interface d’appel client. Part 4: SQL/PSM
• le langage de spécifications de procédures stockées Part 5: SQL/Bindings
• les liens SQL dynamique et “embedded” SQL repris de SQL-92.
Part 6: SQL/XA• Une spécification de l’interface XA pour moniteur
transactionnel. Part 7: SQL/Temporal
• Le support du temps dans SQL3
12©Gardarin 2001
Le planning
Committee Draft – 1/96 Draft International Standard – 12/98 International Standard – 7/99
Autres composants prévus• SQL/MM spécification d’ADT multimédia• SQL/RDA spécification du protocole RDA
13©Gardarin 2001
3. VUE D’ENSEMBLE DE SQL3 De multiples facettes :
• Un langage de définition de types
• Un langage de programmation• Un langage de requêtes• Un langage temporel• ...
Pour gérer des données complexes dans le cadre de système objet-relationnel• Nouveaux
Illustra, UniSQL, ODB II, Versant
• Relationnels étendus ("universels")
Ingres, Oracle, DB2 UDB, Informix
14©Gardarin 2001
La base
Basic SQL/CLI capabilities Basic SQL/PSM capabilities Triggers Abstract Data Types (ADT) Object Oriented Capabilities
Préréquisites aux objets :• Capacité à définir des opérations complexes (PSM)• Stockage de procédures dans la base (PSM)• Appels de procédures externes (PSM)
15©Gardarin 2001
Les triggers
Création des triggers• événement = INSERT, UPDATE, DELETE• possibilité de déclencher avant ou après l'événement• action = opération sur table avec éventuelle condition• possibilité de référencer les valeurs avant ou après mise à
jour
Exemple : EMPLOYE (ID int, salaire float) CUMUL (ID int, Augmentation float) CREATE TRIGGER AFTER UPDATE OF salaire ON employé REFERENCING OLD AS ancien_salaire, NEW AS nouveau_salaire UPDATE CUMUL SET Augmentation =
Augmentation + nouveau_salaire - ancien_salaire WHERE ID = employé.ID
16©Gardarin 2001
Les procédures (PSM)
Langage de programmation de procédures• déclaration de variables• assignation• conditionnels CASE, IF• boucles LOOP, FOR• exceptions SIGNAL, RESIGNAL• possibilité de procédures et fonctions externes
Possibilité de structuration en modules
17©Gardarin 2001
Bilan Normalisation
La normalisation avance plus vite que les utilisateurs
Elle marche bien quand elle précède la technique !
Questions ?• Et Bill Gates ?
18©Gardarin 2001
4. SQL3 - LES OBJETS
Extensibilité des types de données• Définition de types abstraits• Possibilité de types avec ou sans OID
Support d’objets complexes• Constructeurs de types (tuples, set, list, …)• Utilisation de référence (OID)
Héritage • Définition de sous-types• Définition de sous-tables
19©Gardarin 2001
Les types abstraits
CREATE TYPE <nom ADT> <corps de l’ADT> <corps de l’ADT>
• <OID option> ::= WITH OID VISIBLE objets sans OID par défaut
• <subtype clause> ::= UNDER <supertype clause> possibilité d’héritage multiple avec résolution explicite
• <member list> <column definition> : attributs publics ou privés <function declaration> : opérations publiques <operator name list> : opérateurs surchargés <equals clause>, <less-than clause> : définition des ordres <cast clause> : fonction de conversion de types
20©Gardarin 2001
Quelques exemples
Un type avec référence• CREATE TYPE WITH OID phone (country VARCHAR,
area VARCHAR, number int, description CHAR(20))
Un type sans référence• CREATE TYPE person (nss INT, nom VARCHAR, tel
phone)
Un sous-type• CREATE TYPE student UNDER person (major
VARCHAR, year INT)
21©Gardarin 2001
Les constructeurs de types Les types paramétrés
• possibilité de types paramétrés (TEMPLATE)• généricité assurée par le compilateur ...
Les constructeurs de base• collections SET(T), MULTISET(T), LIST(T)• CREATE TYPE person • (nss INT, nom VARCHAR, prénoms LIST(varchar), tel
SET(phone)) Les références
• possibilité de référencer un objet créé “without OID”• CREATE TYPE car (number CHAR(9), color VARCHAR, owner
REF(person)) Les constructeurs additionnels
• stack, queue, array, insertable array (exemple : texte)• non intégrés dans le langage mais peuvent être ajoutés
22©Gardarin 2001
Les fonctions
Définition des fonctions• [<function type>] : CONSTRUCTOR, ACTOR, DESTRUCTOR• FUNCTION <function name> <parameter list> RETURNS <function results> {<SQL procedure> | <file name>} END FUNCTION
Peuvent être associées à une base, un type, une table, …
ExempleCREATE FUNCTION sell (c Ref(Constructor), amount MONEY) UPDATE Constructor SET total = total + amount WHERE
Ref(Constructor)=cEND FUNCTION
Langage de programmation• SQL et SQL3 PSM, Langage externe
23©Gardarin 2001
Les tables Caractéristiques
• une table peut posséder des attributs d'un type abstrait• un tuple contient des références ou des valeurs complexes• un attribut peut être de type référence (REF <type> ou with OID)
Possibilité d'utiliser un type prédéfini• CREATE TABLE cars OF car ;
Possibilité de définir un nouveau type• Le type est celui des tuples de la table• CREATE TABLE Constructors OF NEW TYPE Constructor (name
VARCHAR, total MONEY) ;
Possibilité de définir des sous-tables• CREATE TABLE FrenchConstructors UNDER Constructors(taxe
MONEY)
24©Gardarin 2001
L'appel de fonctions et opérateurs
Appel de fonctions• SELECT r.name• FROM emp j, emp r• WHERE j.name = 'Joe' and distance(j.location,r.location) < 1 ;
Appel d'opérateurs• SELECT r.name• FROM emp, emp r• WHERE emp.name = 'Joe' and • contained(r.location, circle(emp.location,1)) ;
25©Gardarin 2001
Le parcours de référence
Possibilité d'appliquer les fonctions Ref et DeRef (implicite)• CREATE TABLE cars OF TYPE car• SELECT c.Owner.name FROM cars c WHERE color =
'red' Possibilité de cascader la notation pointée
• SELECT dname FROM dept WHERE 1985 IN auto.years
Généralisation possible aux chemins multiples• SELECT dname FROM dept WHERE autos.(year=1985 and name = 'Ford')
Toute collection peut être utilisée en place d'une table
26©Gardarin 2001
N° Chef Adresse Employés Dépenses
25 ParisPatrick
Montant
185
Motif NDep
42Eric
51
ServicesServices
24 VersaillesPaul
Montant
134
219
Motif
037
NDep
Nom Age
Nom Age
45Pierre
37Marie
1 2600 Livres
2 8700 Mission
3 15400 Portable
5 3000 Livres
7 4000 MissionJulie
Exemple de tables imbriquées
27©Gardarin 2001
select p.effdate, p.name, p.vehicleyrfrom policy pwhere p.carmodel.make = ‘ferrari’
select effdate, name, vehicleyrfrom policy, customers, vehicleswhere policy.custno = customers.custnoand policy.vehicleno = vehicles.vehiclenoand model = ‘ferrari’
Comparaison avec le relationnel
Accès en relationnel
Accès en objet-relationnel
28©Gardarin 2001
Exemple d'application (1)
GIS (Geographical Information Systems)Type Geométrie
• Point, ligne, polygone, chemin, rectangle, ellipse, ...
Fonctions• distance(geom,geom) returns real• contained(geom,geom) returns bool• overlaps(geom,geom) returns bool• intersection(geom,geom) returns geom• union(geom,geom) returns geom• ....
29©Gardarin 2001
Exemple d'application (2)
Images Type Library Différents formats : TIFF,GIF,FAX,CD,JPEGFonctions :
• rotate(image,angle) returns image• transpose(image) returns image• flip(image) returns image• enhance(image), oil_painting(image)• plus(image,image), minus(image,image)• intersection(image,image), union(image,image)• histogram(image) returns(table)• similarity(image,image)
30©Gardarin 2001
5. UN STANDARD EN EVOLUTION
PROPOSITION CONCURRENTE DE L'ODMG• Accord entre constructeurs de SGBD Objets• Support du modèle pur objet de l'OMG• Variation de SQL traitant des collections imbriquées
Accord ANSI X3 H2 et ODMG• Définition d'un langage d'interrogation intégrant
relationnel et objet • Convergence relationnel-objet vers SQL3
De nombreux points restent à fixer• Visibilité des OID ?• Chemins multivalués ? • Cohérence ?
31©Gardarin 2001
Objet ou objet-relationnel ?
Données Données Simples Complexes
Questions Relationnel Objet-Relation.
Complexes
Accès Fichiers Objet
Directs
ceci d’après Mike Stonebraker
32©Gardarin 2001
Questions
L ’objet-relationnel s’impose doucement• beaucoup de relationnel• un peu d ’objet (UDT)• DB2 est le plus avancé• Oracle supporte 50%
Questions ?• Et Bill Gates ?
Peu de support dans SQL server 2000