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

Documents pareils
A QUOI SERVENT LES BASES DE DONNÉES?

A QUOI SERVENT LES BASES DE DONNÉES?

Bases de Données relationnelles et leurs systèmes de Gestion

Cours Bases de données 2ème année IUT

Bases de Données Relationnelles. Le Modèle Relationnel

Chapitre 3 LE MODELE RELATIONNEL ET SQL (DDL)

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

BASES DE DONNEES ORIENTEES OBJETS BDA10.1

Le Langage De Description De Données(LDD)

Langage SQL (1) 4 septembre IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes

ECR_DESCRIPTION CHAR(80), ECR_MONTANT NUMBER(10,2) NOT NULL, ECR_SENS CHAR(1) NOT NULL) ;

TP Contraintes - Triggers

Le langage SQL pour Oracle - partie 1 : SQL comme LDD

Les bases de données

Le langage SQL (première partie) c Olivier Caron

Olivier Mondet

COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2

TD : Requêtes SQL (BDR.TD2-1) INSA 3IF

Module Administration BD Chapitre 1 : Surcouche procédurale dans les SGBDS

I4 : Bases de Données

Partie I : Créer la base de données. Année universitaire 2008/2009 Master 1 SIIO Projet Introduction au Décisionnel, Oracle

Les Triggers SQL. Didier DONSEZ. Université de Valenciennes Institut des Sciences et Techniques de Valenciennes

Intégrité des données

Compétences Business Objects

Licence de MIDO - 3ème année Spécialités Informatique et Mathématiques Appliquées

Langage SQL : créer et interroger une base

Devoir Data WareHouse

Corrigés détaillés des exercices

Bases de données avancées

Création et Gestion des tables

Gestion de base de données

Bases de données relationnelles

Hala Skaf-Molli. Nancy-Université 14 mai 2007

Intégrité sémantique dans les bases de données relationnelles

1. Qu'est-ce que SQL? La maintenance des bases de données Les manipulations des bases de données... 5

Bases de données Oracle Virtual Private Database (VPD) pour la gestion des utilisateurs d applications

Administration des bases de données. Jean-Yves Antoine

Bases de Données Avancées

Bases de données avancées Introduction

SQL. Oracle. pour. 4 e édition. Christian Soutou Avec la participation d Olivier Teste

TP3 : Creation de tables 1 seance

INSTITUT NATIONAL DES TELECOMMUNICATIONS CONTROLE DES CONNAISSANCES. 2. Les questions sont indépendantes les unes des autres.

Gestion des transactions et accès concurrents dans les bases de données relationnelles

Quelques aspects du Relationnel-Objet du SGBD Oracle

Structure fonctionnelle d un SGBD

Exemple accessible via une interface Web. Bases de données et systèmes de gestion de bases de données. Généralités. Définitions

Cours 3. Développement d une application BD. DBA - Maîtrise ASR - Université Evry

Introduction au Système de Gestion de Base de Données et aux Base de Données

Partie 0 : Gestion des tablespace et des utilisateurs... 3

ORACLE 10G DISTRIBUTION ET REPLICATION. Distribution de données avec Oracle. G. Mopolo-Moké prof. Associé UNSA 2009/ 2010

AGRÉGATION «ÉCONOMIE ET GESTION»

Application web de gestion de comptes en banques

Chapitre VIII. Les bases de données. Orientées Objet. Motivation

1 Position du problème

Modélisation PHP Orientée Objet pour les Projets Modèle MVC (Modèle Vue Contrôleur) Mini Framework

Chapitre 5 LE MODELE ENTITE - ASSOCIATION

A.E.C. GESTION DES APPLICATIONS TECHNOLOGIE DE L'INFORMATION LEA.BW

Notes de cours : bases de données distribuées et repliquées

ISC Système d Information Architecture et Administration d un SGBD Compléments SQL

Chapitre 5 : Les procédures stockées PL/SQL

SGBDR. Systèmes de Gestion de Bases de Données (Relationnelles)

Auto-évaluation Oracle: cours de base

CREATION WEB DYNAMIQUE

OpenPaaS Le réseau social d'entreprise

SQL Historique

Le Langage SQL version Oracle

Laboratoires de bases de données. Laboratoire n 6. Programmation SQL. par Danièle BAYERS et Louis SWINNEN

Modernisation, développement d applications et DB2 sous IBM i Technologies, outils et nouveautés Volubis.fr

NFA 008. Introduction à NoSQL et MongoDB 25/05/2013

NF26 Data warehouse et Outils Décisionnels Printemps 2010

Plan. Bases de Données. Sources des transparents. Bases de SQL. L3 Info. Chapitre 4 : SQL LDD Le langage de manipulation de données : LMD

Raja Bases de données distribuées A Lire - Tutoriel

Pour les débutants. langage de définition des données

Cours Base de données relationnelles. M. Boughanem, IUP STRI

Java et les bases de données: JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java. Michel Bonjour

Historisation des données

BASES DE DONNEES TP POSTGRESQL

II. Modèle conceptuel le modèle entité-association

SQL sous SqlServer OLIVIER D. DEHECQ Olivier 0

Java DataBaseConnectivity

Les BASES de DONNEES dans WampServer

Plan Général Prévisionnel (1/2) (non contractuel) Internet et Outils L1/IO S2-IO2 Bases de données: Jointures, Transactions

FileMaker 13. Guide de référence SQL

Bases de données et sites WEB Licence d informatique LI345

IFT3030 Base de données. Chapitre 1 Introduction

Présentation Windows Azure Hadoop Big Data - BI

Bases de données. Yamine AIT AMEUR. INPT-ENSEEIHT DIMA 2 Rue Charles Camichel Toulouse Cedex 7

Rappel sur les bases de données

Comment Connecter une Base de Données MySQL via un Driver JDBC Avec OpenOffice.org

Introduction à JDBC. Accès aux bases de données en Java

Développement de base de données Microsoft SQL Server Durée : 5 jours Référence : DPSQL12. Contenu

Bases de Données. Le cas des BD relationnelles ouverture sur les BD relationnelles spatiales Séance 2 : Mise en oeuvre

1. Base de données SQLite

Ecole des Hautes Etudes Commerciales HEC Alger. par Amina GACEM. Module Informatique 1ière Année Master Sciences Commerciales

Bases de données et sites WEB

La programmation orientée objet Gestion de Connexions HTTP Manipulation de fichiers Transmission des données PHP/MySQL. Le langage PHP (2)

Modélisation de bases de données : Le modèle relationnel

Génie Logiciel avec Ada. 4 février 2013

Transcription:

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

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 marchent avec SQL3 => passage facile du relationnel au relationnel-objet BDA9.2

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 BDA9.3

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) BDA9.4

Type VARRAY CREATE TYPE nom-type AS VARRAY(nbmax) OF nom-type2 nom-type2 : type usuel de SQL (CHAR, VARCHAR, NUMBER ) type défini par l'utilisateur valeur multivaluée de type vecteur CREATE TYPE Tprénoms AS VARRAY(4) OF VARCHAR(20) Exemple de valeur : ('Marc', 'Pierre') CREATE TABLE Personne (AVS CHAR(11), nom VARCHAR(20), prénoms Tprénoms) BDA9.5

Type TABLE insérée (nested TABLE) CREATE TYPE nom-type AS TABLE OF nom-type2 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 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 021 456 55 99 021 456 66 77 021 691 55 77 022 555 66 88 L'utilisateur doit donner un nom à la table qui contiendra les téléphones de toutes les personnes BDA9.6

Type OBJECT Deux fonctions : constructeur de valeur complexe (monovaluée) constructeur d'objet = (oid, valeur complexe) CREATE TYPE nom-type AS OBJECT ( nom 1 nom-type 1, nom 2 nom-type 2, <définition de méthodes> ) nom-type i : type usuel de SQL (CHAR, VARCHAR, NUMBER ) type défini par l'utilisateur 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 Tprénoms, adr Tadresse ) BDA9.7

Type OBJECT - constructeur d'objet CREATE TYPE Tpersonne AS OBJECT ( AVS CHAR(11), nom VARCHAR(20), prénoms Tprénoms, adr Tadresse ) CREATE TABLE LesPersonnes OF Tpersonne création d'une table d'objets de format Tpersonne NB On peut créer plusieurs tables d'objets de format Tpersonne INSERT INTO LesPersonnes VALUES (12345123451, 'Rochat', ) => création d'un objet (oid + valeur), permanent, stocké dans 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 BDA9.8

Trois sortes de tables 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) ) Table de valeurs structurées ensemble de tuples en non première forme normale CREATE TABLE Personne ( AVS CHAR(11), nom VARCHAR(20), prénoms Tprénoms, adr Tadresse ) BDA9.9

Trois sortes de tables (2) Table d'objets ensemble d'objets CREATE TYPE Tpersonne AS OBJECT ( AVS CHAR(11), nom VARCHAR(20), prénoms Tprénoms, adr Tadresse ) CREATE TABLE LesPersonnes OF Tpersonne On peut associer aux tables quelle que soit leur 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) BDA9.10

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 (prénoms et date de naissance) CREATE TYPE Tenfant AS OBJECT (prénoms Tprénoms, daten DATE) CREATE TYPE Tenfants AS VARRAY(12) OF Tenfant CREATE TYPE Tpersonne2 AS OBJECT ( AVS CHAR(11), nom VARCHAR(20), prénoms Tprénoms, adr Tadresse, enfants Tenfants ) CREATE TABLE LesPersonnes2 OF Tpersonne2 BDA9.11

Création de valeurs structurées Chaque type a un constructeur de nom, le nom du type CREATE TYPE Tprénoms AS VARRAY(4) OF VARCHAR(20) Tprénoms ('Marc', 'Alain') CREATE TYPE Ttéléphones AS TABLE OF CHAR(10) Ttéléphones ('021 333 44 55', '022 444 66 77') CREATE TYPE Tadresse AS OBJECT ( rue VARCHAR(20), numéro VARCHAR(4), localité VARCHAR(20), NPA CHAR(4) ) Tadresse (rue : 'rue du lac', numéro : '22A', localité : 'Lausanne', NPA : '1007' ) BDA9.12

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 Tprénoms, adr Tadresse ) SELECT p.adresse.localité FROM Personne p WHERE p.avs = 12345123451 BDA9.13

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 Nouveau : déclaration d'une variable sur une collection SELECT FROM nom-table t, TABLE (t.attribut-multivalué) v => accès et mise à jour soit de toute la collection, soit d'un de ses éléments Exemples CREATE TABLE Personne ( AVS CHAR(11), nom VARCHAR(20), prénoms Tprénoms, adr Tadresse ) Personnes dont un prénom est Annie : SELECT p FROM Personne p, TABLE(p.prénoms) pr WHERE pr.column_value = 'Annie' SELECT p FROM Personne p WHERE 'Annie' IN (SELECT * FROM TABLE (p.prénoms)) BDA9.14

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

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)) CREATE TABLE Habitant1 (AVS CHAR(11), nom VARCHAR(20), prénoms Tprénoms, habite Tlogement) habite : valeur structurée CREATE TABLE Habitant2 (AVS CHAR(11), nom VARCHAR(20), prénoms Tprénoms, habite REF Tlogement) habite : oid de Tlogement => CREATE TABLE LesLogements OF Tlogement BDA9.16

Deux types d'attributs référence! EXTERNAL KEY : valeur de la clé non orienté CREATE TABLE Ancêtre (num NUMBER(3) PRIMARY KEY, nom VARCHAR(20), prénoms Tprénoms, père NUMBER(3) REFERENCES Ancêtre, mère NUMBER(3) REFERENCES Ancêtre) REF nom-type : lien de composition objet (oid) orienté pas d'inverse géré par le SGBD pas de mise à jour faite par le SGBD lors des suppressions d'objets composants => Attention aux références invalides! BDA9.17

Attribut référence objet (suite) CREATE TYPE Tancêtre AS OBJECT ( num NUMBER(3), nom VARCHAR(20), prénoms Tprénoms, père REF Tancêtre, mère REF Tancêtre ) CREATE TABLE LesAncêtres OF Tancêtre (PRIMARY KEY(num)) BDA9.18

Manipulation des att. référence objet 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) BDA9.19

Manipulation des att. référence objet (2) Rappel : CREATE TYPE Tancêtre AS OBJECT (num NUMBER(3), nom VARCHAR(20), prénoms Tprénoms, père REF Tancêtre, mère REF Tancêtre) Insérer dans 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 LesAncêtres VALUES ( 12, 'Rochat', Tprénoms('Philippe', 'Michel'), (SELECT REF(x) FROM LesAncêtres x WHERE x.num=10), (SELECT REF(x) FROM LesAncêtres x WHERE x.num=11) ) BDA9.20

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-paramêtre 1 [ IN / OUT ] type 1,.) RETURN type n MEMBER PROCEDURE nom-méthode ( nom-paramêtre 1 [ IN / OUT ] type 1,.) BDA9.21

Corps d'un type OBJECT 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éthode 1 ( nom-paramêtre 11 [ IN / OUT ] type 11,.) BEGIN code de-la-méthode 1 END MEMBER FUNCTION / PROCEDURE nom-méthode 2 ( nom-paramêtre 21 [ IN / OUT ] type 21,.) BEGIN code de-la-méthode 2 END. BDA9.22

HIERARCHIE DES TYPES OBJECT On peut créer des sous-types d'un type OBJECT => 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 soustypes BDA9.23

Exemple de hiérarchie CREATE TYPE Tpersonne AS OBJECT (AVS CHAR(11), nom VARCHAR(20), prénoms Tprénoms, conjoint REF TPersonne) NOT FINAL NOT FINAL : mot clé obligatoire si le type a des soustypes CREATE TYPE Tétudiant UNDER Tpersonne (faculté VARCHAR(18), cycle VARCHAR(18)) CREATE TABLE LesPersonnes OF Tpersonne CREATE TABLE LesEtudiants OF Tétudiant Attention : Il n'y a pas inclusion de population entre LesEtudiants et LesPersonnes. Les tables sont indépendantes l'une de l'autre. BDA9.24

Exemple de hiérarchie (suite) LesPersonnes peut contenir des objets de type Tpersonne et Tétudiant INSERT INTO LesPersonnes VALUES(11111, 'Rochat', Tprénoms('Philippe'), NULL) => création d'un objet de type Tpersonne et insertion dans la table LesPersonnes INSERT INTO LesPersonnes VALUES(Tétudiant(22222, 'Muller', Tprénoms('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 BDA9.25

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