Bases de données orientées objets SGBD relationnels-objets

Slides:



Advertisements
Présentations similaires
PL/SQL : Le Langage PL/SQL est une extension du SQL, qui offre
Advertisements

Les Systèmes de Gestion de Bases de Données (SGBD) PL-SQL.
Informatique appliquée à la gestion Bases de données www. labri
Bases de données : modèlisation et SGBD
Le modèle Relationnel Objet d'Oracle
Le Modèle Relationnel (Chapitre 4)
Bases de données orientées-objets
Oracle: OO.
Faculté I&C, Claude Petitpierre, André Maurer Bases de données SQL (Structured Query Language)
LE LANGAGE SQL : LDD La création de tables L’ordre CREATE CREATE TABLE nom_de_table (Nom_colonne Type_colonne, Nom_colonne Type_colonne,
1 ARCHITECTURE DACCÈS la méthode générale modèle de données définitions module daccès / modules métiers construction des modèles les modules daccès, les.
Développement d’applications web
Faculté I&C, Claude Petitpierre, André Maurer Bases de données SQL (Structured Query Language)
Contrôles d'accès aux données
L’utilisation des bases de données
Connexion en mode application. Bases de données - Yann Loyer2 Connexion en mode application Pour tout type dutilisateurs : –passif, actif, gérant Permettre.
Initiation aux bases de données et à la programmation événementielle
JDBC ou comment manipuler une base de données en Java ?
L’utilisation des bases de données
F Copyright © Oracle Corporation, Tous droits réservés. Créer des programmes avec Procedure Builder.
EPID-CPI-ISAIP Philippe Bancquart - mise à jour 24/02/ page 1 Procédures stockées CPI-SQLServer.
66 Utilisation des classes et des objets. 6-2 Objectifs A la fin de ce cours, vous serez capables de : Créer de nouvelles classes à laide de Eclipse Utiliser.
SQL: Contraintes et Triggers
1 IFT 6800 Atelier en Technologies dinformation Le langage de programmation Java chapitre 3 : Classes et Objects.
Les concepts et les méthodes des bases de données
Management of Information Technology - e-business
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 SQL: Requêtes, Programmation et Triggers Chapitre 5, Sections
Initiation aux bases de données et à la programmation événementielle
Christine Bonnet SOURCES : « Samples » dOracle, « Oracle 8 » R. Chapuis PRO*C – C ++
Procédures Stockées Schedule: Timing Topic 60 minutes Lecture
Bases de données orientées objets Illustration sur ORACLE
Les Bases de Données orientées Objet (BDO)
Cours 4b: Introduction au SQL, le langage des SGBD Relationnels
Introduction.
PHP & My SQL.
Chap 4.5 : SQL (LDD) LDD : Langage de définition de données Réfs : Manuel p105.
BD Relationnelles versus BD Objets Fariza Tahi
EPID-CPI-ISAIP Philippe Bancquart - mise à jour 24/02/ page 1 Transac SQL Intégrité des données.
Cours n°4M2. ESCE (S. Sidhom) Séminaire ( 6-12 Février 2007 ) Promo. M2 ESCE-Tunis 2006/07 Conception d’un système d'information sur Internet Architecture.
Chapitre 6.2 Les curseurs Cours SGBD 3A Mme hkimi Jihène
Objectifs A la fin de ce chapitre, vous pourrez : présenter l'utilisation d'opérations de chargement de données par chemin direct décrire l'utilisation.
Créer des packages.
Plan du cours - Bases de données objet : objectifs, principe, mise en oeuvre sous Oracle - Aspect système des bases de données : fichiers, index et hachage.
DEFINITION DES DONNEES : schéma conceptuel. Schéma conceptuel instructiondescription CREATE TABLEcréation d'une relation ALTER TABLEmodification de la.
Module 4 : Implémentation de l'intégrité des données.
Module 13 : Implémentation de déclencheurs. Vue d'ensemble Présentation des déclencheurs Définition de déclencheurs Exemples de déclencheurs Performances.
Les Contraintes.
SQL : Langage de Manipulation des données
21/04/2015© Robert Godin. Tous droits réservés.1 6Gestion des contraintes d’intégrité en SQL n Contrainte d'intégrité statique – respectée pour chacun.
Cours 4 (14 octobre) Héritage. Chapitre III Héritage.
Quinio1 Bases de données : modèlisation et SGBD Séance 3 B Quinio.
Création et Gestion de Tables
Le Langage de Définition de Données LDD
3 Copyright © Oracle Corporation, Tous droits réservés. Créer des fonctions.
Cours n°4M1.ist-ie (S. Sidhom) UE 203 Promo. M1 IST-IE 2006/07 Conception d’un système d'information sur Internet Architecture trois-tiers : technologies.
Cours Access TuanLoc NGUYEN. Contact Nguyen TuanLoc Tél: Web:
Bases de Données Avancées - TP2: SQL
Les bases de données Séance 8 Jointures.
Types de données composites
Le langage SQL.
Séance /10/2004 SGBD - Approches & Principes.
Initiation aux bases de données et à la programmation événementielle
INTRODUCTION AUX BASES DE DONNEES Base et métabase
Cours n°2 Implémentation et exploitation
Introduction au langage PL/SQL
Les vues, indexes, séquences.  Qu’est ce qu’une vue 1. Une vue est une vision partielle ou particulière des données d'une ou plusieurs tables de la base.
1 Bases de Données Avancées 29 janvier Le Modèle Objet-Relationnel.
Bases de données : modèlisation et SGBD Séance 3.
1 Les bases de données Séance 5 -- Le Langage de Définition de Données ou la manœuvre de la structure de la base -- Le Langage de Manœuvre de Données.
Transcription de la présentation:

Bases de données orientées objets SGBD relationnels-objets un exemple : ORACLE

SQL3 - SQL3 = SQL2 pour BD relationnelles+ des extensions orienté-objet multi-media spatial Séries temporelles - Ce chapitre porte sur l'extension OO : le relationnel-objet - SQL3 est compatible avec SQL2 - Les BD et applications existantes en SQL2 tournent sous SQL3 => passage facile du relationnel au relationnel-objet

Comment étendre le relationnel à l'OO ? - Concept de table quasi inchangé - Nouveau concept, TYPE, qui décrit : les structures complexes et multivaluées le format des objets les méthodes - hiérarchie d'héritage des types - Un nouveau constructeur de domaine : REF, pour définir les liens de composition - Tables de 3 sortes tables "normales" de tuples en 1ère forme normale tables de tuples en non 1FN : tables de valeurs structurées tables d'objets

LES TYPES - Domaines usuels de SQL : CHAR, VARCHAR, NUMBER, DATE… - Nouveaux domaines définis par l'utilisateur, propres à la BD, pour décrire : → un multivalué : TYPE VARRAY : vecteur TYPE nested TABLE : table insérée à la place d'une valeur → un complexe … éventuellement avec oid (!) valeur complexe objet (oid, valeur complexe)

Type VARRAY CREATE TYPE nom-type AS VARRAY(nbmax) OF nom-type2 Où nom-type2 est : type usuel de SQL (CHAR, VARCHAR, NUMBER…) ou type défini par l'utilisateur ⇒ est une valeur multivaluée de type vecteur CREATE TYPE Tprenoms AS VARRAY(4) OF VARCHAR(20) /* Tprenoms est un type Vecteur de 4 VARCAHAR(20) Exemple de valeur : ('Marc', 'Pierre') CREATE TABLE Personne (AVS CHAR(11), nom VARCHAR(20), prenoms Tprenoms)

Type TABLE insérée (nested TABLE) CREATE TYPE nom-type AS TABLE OF nom-type2 / Où nom-type2 : type usuel de SQL (CHAR, VARCHAR, NUMBER…) type défini par l'utilisateur ⇒ valeur multivaluée de type table pas de nombre maximum de valeurs pas d'ordre indexable ex. 021 456 55 99 021 456 66 77 021 691 55 77 022 555 66 88

Type TABLE insérée (nested TABLE), suite CREATE TYPE Ttéléphones AS TABLE OF CHAR(10) / CREATE TABLE Personne ( AVS CHAR(11), Nom VARCHAR(20), tel Ttéléphones ) NESTED TABLE tel STORE AS TableTel L'utilisateur doit donner un nom à la table qui contiendra les téléphones de toutes les personnes

Type OBJECT Joue deux rôle : constructeur de valeur complexe (monovaluée) constructeur d'objet = (oid , valeur complexe) CREATE TYPE nom-type AS OBJECT ( nom1 nom-type1 , nom2 nom-type2 , … <définition de méthodes> ) / où nom-typei : type usuel de SQL (CHAR, VARCHAR, NUMBER…) type défini par l'utilisateur

Type OBJECT (suite) Utilisation comme constructeur de valeur complexe : CREATE TYPE Tadresse AS OBJECT ( rue VARCHAR(20), numéro VARCHAR(4), Localité VARCHAR(20), NPA CHAR(4)) / CREATE TABLE Personne ( AVS CHAR(11), nom VARCHAR(20), prénoms Tprenoms, adr Tadresse )

Type OBJECT - constructeur d'objet CREATE TYPE Tpersonne AS OBJECT ( AVS CHAR(11), nom VARCHAR(20), prénoms Tprenoms, adr Tadresse ) / CREATE TABLE LesPersonnes OF Tpersonne; => Création d'une table LesPersonnes dont les lignes sont de type Tpersonne

Type OBJECT - constructeur d'objet (suite) Note : On peut créer plusieurs tables d'objets de format Tpersonne Insertion : INSERT INTO LesPersonnes VALUES (12345123451, 'Rochat', …) => création d'un objet (oid + valeur), permanent, stocké dans la table LesPersonnes La table LesPersonnes a une colonne supplémentaire invisible, gérée par le SGBD qui contient l'oid de chaque objet Cette colonne est automatiquement indexée recherche de l'objet de tel oid plus rapide. Cette colonne est indéxée automatiquement → Recherche d'un objet d'oid donné plus rapide

Trois sortes de tables 1- Table du relationnel classique : ensemble de tuples en première forme normale (1FN) CREATE TABLE Personne ( AVS CHAR(11) , nom VARCHAR(20), prénom VARCHAR(20) , rue VARCHAR(20), numéro VARCHAR(4) , localité VARCHAR(20), NPA CHAR(4) )

Trois sortes de tables (2) 2- Table de valeurs structurées : ensemble de tuples en non première forme normale CREATE TABLE Personne ( VS CHAR(11) , nom VARCHAR(20) , prénoms Tprenoms , adr Tadresse )

Trois sortes de tables (3) 3-Table d'objets Est un ensemble d'objets CREATE TYPE Tpersonne AS OBJECT ( AVS CHAR(11), nom VARCHAR(20), Prenoms Tprenoms, adr Tadresse ) CREATE TABLE LesPersonnes OF Tpersonne Note : On peut associer à une table de n'importe quelle sorte les contraintes usuelles de SQL : PRIMARY KEY (nom-col*), UNIQUE (nom-col*) FOREIGN KEY (nom-col*) REFERENCES nom-table [(nom-col*)] [action], CHECK ( condition)

Types structurés à plusieurs niveaux - SQL permet de décrire des attributs complexes et multivalués à plusieurs niveaux, en créant un type par constructeur : complexe (TYPE OBJECT) multivalué (TYPE VARRAY ou TABLE insérée) Exemple : Table d'objets personnes avec leurs enfants (prenoms et date de naissance) : CREATE TYPE Tenfant AS OBJECT (prenoms Tprenoms , dateN DATE)

Types structurés à plusieurs niveaux (2) CREATE TYPE Tpersonne2 AS OBJECT ( AVS CHAR(11) , nom VARCHAR(20), prenoms Tprenoms , adr Tadresse , enfants Tenfants ) CREATE TABLE LesPersonnes2 OF Tpersonne2

Création de valeurs structurées Chaque type a un constructeur de nom : le nom du type : CREATE TYPE Tprenoms AS VARRAY(4) OF VARCHAR(20) / CREATE TYPE Ttelephones AS TABLE OF CHAR(10) Ttelephones ('021 333 44 55' , '022 444 66 77')

Création de valeurs structurées (2) CREATE TYPE Tadresse AS OBJECT ( rue VARCHAR(20), numéro VARCHAR(4), Localité VARCHAR(20), NPA CHAR(4) ) / – Constructeurs : Tadresse (rue : 'rue du lac', numéro : '22A', localité : 'Lausanne', NPA : '1007' ) Tprenoms ('Marc' , 'Alain')

Accès aux valeurs complexes (type OBJECT) Accès aux composants via la notation pointée : CREATE TYPE Tadresse AS OBJECT ( rue VARCHAR(20), numéro VARCHAR(4), Localité VARCHAR(20), NPA CHAR(4) ) CREATE TABLE Personne ( AVS CHAR(11) , nom VARCHAR(20), prénoms Tprenoms , adr Tadresse )

Accès aux valeurs complexes (type OBJECT) (2) INSERT INTO Personne values ('12345123451', 'TOTO', Prenoms('Marc', 'Pierre'), Tadresse('Fenelon ', 40, 'Le Havre', '76')); SELECT p.adresse.localité FROM Personne p WHERE p.AVS = '12345123451';

Accès aux valeurs multivaluées (Types VARRAY et TABLE) - Opérateurs usuels de SQL : condition élémentaire : élément IN collection condition élémentaire : EXIST collection SELECT … FROM nom-tab t , TABLE (t.attr-multivalué) v … - Nouveau : déclaration d'une variable sur une collection => accès et mise à jour soit de toute la collection, soit d'un de ses éléments

Accès aux valeurs multivaluées (Types VARRAY et TABLE) (2) Exemples CREATE TABLE Personne ( AVS CHAR(11) , nom VARCHAR(20) , prénoms Tprenoms , adr Tadresse ) Personnes dont un prénom est Annie : SELECT p FROM Personne p, TABLE(p.prenoms) pr WHERE pr.COLUMN_VALUE = 'Annie'; SELECT p FROM Personne p WHERE 'Annie' IN (SELECT * FROM TABLE (p.prenoms))

Accès aux valeurs multivaluées (Types VARRAY et TABLE) - (3) Accès à toute la collection : CREATE TABLE Personne ( AVS CHAR(11) , nom VARCHAR(20) , prénoms Tprenoms , adr Tadresse ) Noms et prénoms des personnes : SELECT p.nom, p.prénoms FROM Personne p; 'Muller' Tprenoms('Annie', 'Marie') 'Rochat' Tprenoms('Philippe', 'Marc') …

IDENTITE - ATTRIBUTS REFERENCE Type OBJECT : constructeur de : valeurs structurées objets (si CREATE TABLE nom-table OF ce-type) CREATE TYPE Tlogement AS OBJECT ( type VARCHAR(15), surface NUMBER(4), Nbpièces NUMBER(3,2)) /

IDENTITE - ATTRIBUTS REFERENCE (2) CREATE TABLE Habitant1 ( AVS CHAR(11), Nom VARCHAR(20) , prenoms Tprenoms, habite Tlogement) habite : est une valeur structurée CREATE TABLE Habitant2 (AVS CHAR(11), prénoms Tprenoms, habite REF Tlogement) habite : est l'oid de Tlogement => CREATE TABLE LesLogements OF Tlogement

Deux types d'attributs référence 1. EXTERNAL KEY : valeur de la clé Non orienté CREATE TABLE Ancetre (num NUMBER(3) PRIMARY KEY, Nom VARCHAR(20) , prenoms Tprenoms , pere NUMBER(3) REFERENCES Ancetre , mere NUMBER(3) REFERENCES Ancetre) 2.

Deux types d'attributs référence (2) 2. REF nom-type : lien de composition objet (oid) orienté lien inverse non géré par le SGBD pas de mise à jour faite par le SGBD lors des suppressions d'objets composants => Faire attention aux références invalides !

Attribut référence objet (3) CREATE TYPE Tancetre AS OBJECT ( num NUMBER(3), nom VARCHAR(20) , prenoms Tprenoms , pere REF Tancetre , mere REF Tancetre ) / CREATE TABLE LesAncetres OF Tancêtre (PRIMARY KEY(num))

Manipulation des att. référence objet - Il y a trois nouveaux opérateurs permettent de récupérer l'oid ou la valeur d'un objet : REF(objet) => l'oid de l'objet VALUE(objet) => valeur structurée sous la forme nom-type(valeur) DEREF(oid) => valeur structurée sous la forme nom-type(valeur)

Manipulation des att. référence objet (1) Rappels : CREATE TYPE Tancetre AS OBJECT (num NUMBER(3), nom VARCHAR(20) , Prenoms Tprenoms , pere REF Tancetre , mere REF Tancetre) /

Manipulation des att. référence objet (2) Insérer dans la table LesAncêtres une nouvelle personne : (12, Philippe Michel Rochat, de père le numéro 10 et de mère le numéro 11) => INSERT INTO LesAncetres VALUES ( 12 , 'Rochat' , Tprenoms('Philippe', 'Michel') , (SELECT REF(x) FROM LesAncetres x WHERE x.num=10) , (SELECT REF(x) FROM LesAncetres x WHERE x.num=11) )

Chaque type OBJECT peut avoir des méthodes : METHODES Chaque type OBJECT peut avoir des méthodes : CREATE TYPE nom-type AS OBJECT ( déclaration des attributs , déclaration des signatures des méthodes ) Signature d'une méthode : MEMBER FUNCTION nom-méthode ( nom-param1 [ IN / OUT ] type-1 , ….) RETURN type-n MEMBER PROCEDURE nom-méthode ( nom-param1 [ IN / OUT ] type1 , ….)

Corps d'un type OBJECT Il contient le code de ses méthodes. Le code peut contenir des : instructions PL/SQL (ou JAVA) instructions SQL appels de méthodes CREATE TYPE BODY nom-type AS MEMBER FUNCTION / PROCEDURE nom-méthode1 ( nom-param11 [ IN / OUT ] type11 , ….) BEGIN code de-la-méthode1 END MEMBER FUNCTION / PROCEDURE nom-méthode2 ( nom-param21 [ IN / OUT ] type21 , ….) code de-la-méthode2 ….

HIERARCHIE DES TYPES OBJECT On peut créer des sous-types d'un type OBJEC => héritage des attributs et méthodes avec possibilité de redéfinir le code des méthodes dans les sous-types Pas d'héritage multiple ATTENTION : Pas de hiérarchie des tables Mais une table d'objets de format un sur-type peut contenir des objets du sur-type et de ses sous-types

Exemple de hiérarchie CREATE TYPE Tpersonne AS OBJECT (AVS CHAR(11), nom VARCHAR(20) , Prenoms Tprenoms, conjoint REF TPersonne) NOT FINAL / Rmq : NOT FINAL :est un mot clé obligatoire si le type a des sous-types

Exemple de hiérarchie (2) CREATE TYPE Tétudiant UNDER Tpersonne (faculte VARCHAR(18), cycle VARCHAR(18)) / CREATE TABLE LesPersonnes OF Tpersonne; CREATE TABLE LesEtudiants OF Tétudiant; Note : Il n'y a pas inclusion de population entre LesEtudiants et LesPersonnes. Les tables sont indépendantes l'une de l'autre.

Exemple de hiérarchie (3) - LesPersonnes peut contenir des objets de type Tpersonne et Tétudiant : INSERT INTO LesPersonnes VALUES(11111, 'Rochat', Tprenoms('Philippe'), NULL) => création d'un objet de type Tpersonne et insertion dans la table LesPersonnes INSERT INTO LesPersonnes VALUES(Tétudiant(22222, 'Muller', Tprenoms('Annie', 'Marie'), NULL, 'HEC', 'Master') => création d'un objet de type Tétudiant et insertion dans la table LesPersonnes - De même, l'attribut référence conjoint peut contenir un oid d'objet de type Tpersonne ou Tétudiant

Nouvelle condition élémentaire VALUE(objet) IS OF nom-sous-type => la condition vraie ssi l'objet est du type "nom-sous-type" Exemple : SELECT p FROM LesPersonnes p WHERE VALUE(p) IS OF Tétudiant; => renvoie les objets de LesPersonnes qui sont de type Tetudiant