1/24. I On peut toujours faire du relationnel : enrichissement de SQL2. Introduction 3/24 SGBDOO

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

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

A QUOI SERVENT LES BASES DE DONNÉES?

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

Bases de données relationnelles

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

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

CREATION WEB DYNAMIQUE

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

Corrigés détaillés des exercices

Bases de données avancées Introduction

OpenPaaS Le réseau social d'entreprise

Langage SQL : créer et interroger une base

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

Information utiles. webpage : Google+ : digiusto/

Les bases de données

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

Application BdD et JDBC. Introduction 1/28. I Dans tout les cas, une seule problématique. I Quelques alternatives :

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

Le Langage SQL version Oracle

Le langage SQL Rappels

CATALOGUE FORMATIONS DOMAINE Bases de données

Bases de Données Avancées

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

SQL Historique

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

Les Bases de Données et l Objet Introduction

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

Magasins et entrepôts de données (Datamart, data warehouse) Approche relationnelle pour l'analyse des données en ligne (ROLAP)

I4 : Bases de Données

PHP 5. La base de données MySql. A. Belaïd 1

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

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

1. LA GESTION DES BASES DE DONNEES RELATIONNELLES

IFT3030 Base de données. Chapitre 1 Introduction

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

Devoir Data WareHouse

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

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

Programmation d application Bases de données avec Java

Quelques aspects du Relationnel-Objet du SGBD Oracle

La persistance des données dans les applications : DAO, JPA, Hibernate... COMPIL 2010 francois.jannin@inp-toulouse.fr 1

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

Application web de gestion de comptes en banques

UML et les Bases de Données

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

16H Cours / 18H TD / 20H TP

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

Les BASES de DONNEES dans WampServer

Bases de données - Modèle relationnel

14/04/2014. un ensemble d'informations sur un sujet : exhaustif, non redondant, structuré, persistant. Gaëlle PERRIN SID2 Grenoble.

Bases de données avancées

PHP 4 PARTIE : BASE DE DONNEES

Le Langage De Description De Données(LDD)

Faculté des sciences de gestion et sciences économiques BASE DE DONNEES

Bases de données cours 1

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

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

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

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

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

Compétences Business Objects

Bases de données élémentaires Maude Manouvrier

Objectifs du TP : Initiation à Access

Rappel sur les bases de données

Chaîne opératoire de réalisation d une base de données. ANF «Comment concevoir une base de données» (29-30/01/2015)

Mysql avec EasyPhp. 1 er mars 2006

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

Compte Rendu d intégration d application

Dossier I Découverte de Base d Open Office

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

IT203 : Systèmes de gestion de bases de données. A. Zemmari zemmari@labri.fr

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

Base de données relationnelle et requêtes SQL

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

Bases de Données. Plan

Cahier Technique. «Développer une application intranet pour la gestion des stages des étudiants» Antonin AILLET. Remi DEVES

clef primaire ; clef étrangère ; projection ; restriction ; jointure ; SQL ; SELECT ; FROM ; WHERE

Mysql. Les requêtes préparées Prepared statements

Java DataBaseConnectivity

INF 1250 INTRODUCTION AUX BASES DE DONNÉES. Guide d étude

Visual Paradigm Contraintes inter-associations

BTS S.I.O PHP OBJET. Module SLAM4. Nom du fichier : PHPRévisionObjetV2.odt Auteur : Pierre Barais

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction

CHAPITRE 1 ARCHITECTURE

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

1 Modélisation d une base de données pour une société de bourse

Chapitre VI- La validation de la composition.

Débuter avec EXPRESS. Alain Plantec. 1 Schema 2

La présente publication est protégée par les droits d auteur. Tous droits réservés.

TP base de données SQLite. 1 Différents choix possibles et choix de SQLite : 2 Définir une base de donnée avec SQLite Manager

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

Les bases de données Page 1 / 8

Bases de données et sites WEB

1. Base de données SQLite

NoSQL. Introduction 1/23. I NoSQL : Not Only SQL, ce n est pas du relationnel, et le contexte. I table d associations - Map - de couples (clef,valeur)

Bases de Données Réparties

Transcription:

ntroduction 1/24 2/24 Anne-Cécile Caron Master MAGE - BDA 1er trimestre 2013-2014 La norme SQL 3 aussi appelée SQL 99 Extension du modèle relationnel à l objet nécessité de structures de données plus sophistiquées pour certaines applications. Echec des SGBD objets (norme ODMG) On peut toujours faire du relationnel : enrichissement de SQL2 (1992) Beaucoup plus complexe que les normes précédentes environ 2100 pages contre 150 pour SQL 89 en 2003 et 2006 : ajout de SQL/XML, manipulation de données XML en 2003 : SQLJ (SQL intégré à java) ntroduction ntroduction 3/24 4/24 Pourquoi le modèle objet? Objets complexes : attributs multi-valués, collections. Encapsulation des données. Accès aux données via des opérations Structure de données cachée et donc plus facilement modifiable. Héritage d opérations et de structures dentité d objet : Modèle orienté objet par opposition à un modèle orienté valeur. SGBDOO L instance du schéma de BDD aura des caractéristiques di érentes du modèle relationnel : Dans le schéma, les associations sont orientées (rôles en UML)! la base est un graphe orienté. Les requêtes permettent de naviguer dans cette instance, à partir de points d entrées Les instances d une même classe sont (souvent) stockées dans une même collection. Applications : Données dont la structure est complexe, ressemblances entre les données (hiérarchie de classes facile à construire) relation composé/composant... niches technologiques : Gestion de données techniques Systèmes d informations géographiques CAO...

ntroduction 5/24 6/24 Pourquoi objet-relationnel? Nouveaux types de données SGBD objet : modèle objet pur donc plus élégant. pas vraiment de SGBDOO qui ont les performances des SGBDR. norme ODMG en 1993 (le groupe ODMG s est dissout en 2001), sans succès. SGBD objet-relationnel : concilier un modèle orienté objet avec un modèle orienté valeur. continuité, SGBD relationnels déja bien implantés. ajout à la norme SQL Possibilité de définir des types, et de représenter des structures plus riches : collections, enregistrements,... Héritage : Si le nombre de types est important, on a intérêt à les hiérarchiser, et l héritage permet alors de factoriser du code. identité d objet : on va utiliser des pointeurs pour désigner les objets comme les objets deviennent complexes, il faut un langage de requête adapté : extension de SQL pour naviguer via les références, parcourir des collections,... 7/24 Abstract Data Types 8/24 Les Types en SQL3 Les Types structurés ou ADT Types prédéfinis simples ceux de SQL2 Types intervalles de temps type BOOLEAN (true, false, unknown) Types collections (ARRAY) Types lignes (ROW) Large objects : BLOB, CLOB Types définis par l utilisateur à p a r t i r d e s t y p e s p r é d é fi n i s Types Objets (Abstract Data Types) La définition d un ADT comporte des attributs et des méthodes. La définition d un attribut entraîne la création d une méthode de mise-à-jour (mutator method) et d une méthode d accès (observer method) un ADT peut typer un attribut d ADT, une colonne d une table, une ligne d une table... On peut définir une relation d ordre sur un ADT. On peut définir des fonctions de conversion de types.

Abstract Data Types 9/24 Abstract Data Types 10 / 24 Héritage Héritage (2) Héritage simple d ADT : Le sous-type hérite tous les attributs et méthodes de son super-type. Le sous-type peut aussi définir d autres attributs et méthodes, et redéfinir des méthodes. Hiérarchie de tables : la relation table/sous-table doit suivre la relation type/sous-type. Create table BOOK of book_udt ; insert into BOOK(title,buying_price,selling_price) values ( SQL3 pour les nuls,10.0,20.0) ; select selling_price - buying_price from book where title like %SQL% ; Create table SCENCE_BOOK of science_book_udt UNDER book ; 11 / 24 12 / 24 Oracle et la norme SQL 3 Comparaison Tableau/Table imbriquée La norme n est pas respectée (problème d antériorité) mais possibilité de définir des types Objets (ADT), qui peuvent typer les lignes ou les colonnes d une table. collections pour typer les colonnes, Tableau classique (appelé varray). Table imbriquée : ensemble de valeurs, table de taille quelconque. (appelée nested table) ROW type en SQL3 : on a vu les Record en PL/SQL, mais ils ne peuvent pas être utilisés pour les données persistantes ; il faut utiliser les ADT Langage de requête adapté à la navigation entre objets 1. Tableau taille maximale fixée à la déclaration (t.limit donne cette taille), les indices se suivent toujours. Pas de méthode delete 2. Table imbriquée La taille n est pas fixée à l avance, et augmente dynamiquement lorsqu on ajoute des éléments. Les indices ne se suivent pas forcément (à cause des delete) Plus facile à interroger en SQL héritage simple sur les types objets, pas sur les tables

13 / 24 14 / 24 Les types objets (ADT) Exemple Un type objet comporte 1. une interface public, avec des déclarations d attributs et des signatures de méthodes 2. une implémentation cachée, avec (au moins) les implémentations des méthodes qui apparaissent dans l interface publique. l existe plusieurs types de méthodes : Member method :méthodeliéeàunobjet(commeuneméthode d instance en java) Static method : méthode globale, pas liée à une instance (méthode de classe en java) Constructor method :méthodequipermetdecréerunobjetinstance de ce type. l existe un constructeur par défaut, définir explicitement un constructeur n est donc pas obligatoire. CREATE OR REPLACE TYPE CHAMBRE_TYPE AS OBJECT ( numero NUMBER(2), prix NUMBER(5,2), categorie VARCHAR(10), -- simple, double, twin, triple MAP MEMBER FUNCTON get_num RETURN NUMBER, MEMBER FUNCTON nb_pers RETURN NUMBER, MEMBER PROCEDURE affiche (SELF N chambre_type), CONSTRUCTOR FUNCTON CHAMBRE_TYPE RETURN SELF AS RESULT ) une méthode de type MAP sera utilisée pour comparer et trier : comparaison de type obj1 < obj2 comparaison induite par une clause DSTNCT, GROUP BY, UNON, ou ORDER BY par défaut, une fonction ne peut que lire les attributs de SELF et une procédure peut lire et écrire. On peut modifier cela en déclarant un paramètre de type SELF ici, on redéfinit le constructeur pour vérifier la valeur de categorie. 15 / 24 16 / 24 Stockage des objets Les instances d un type objet peuvent être stockées dans des tables. 1. colonne de type objet : create table RESERVE( date_debut DATE, date_fin DATE, chambre chambre_type ); insert into reservation values( 12/10/2012, 14/10/2012,chambre_type(21,45, simple )); 2. ligne de type objet (on parle d object table). create table CHAMBRE of chambre_type ; insert into chambre values (21,45, simple ) ; -- n appelle pas le constructeur! -- par contre la ligne suivante appelle le constructeur (donc erreur) insert into chambre values chambre_type(30,70, toto ) -- appel de méthode : select c.nb_pers() from chambre c where numero = 21 ; fonction value La fonction value permet de récupérer une ligne en tant qu objet. Faire la di érence entre : select * from chambre ; NUMERO PRX CATEGORE ------------------------------------------ 11 60 double 15 80 triple 21 45 simple et select value(c) from chambre c ; VALUE(C) ------------------------------------------ CARON.CHAMBRE_TYPE(11,60, double ) CARON.CHAMBRE_TYPE(15,80, triple ) CARON.CHAMBRE_TYPE(21,45, simple )

17 / 24 Définition d un schéma 18 / 24 Référence sur un objet Schéma et tables objets sont stockés dans des tables, si on veut les relier (associations UML), on va utiliser des références qui pointent sur d autres objets (i.e. d autres lignes) La fonction ref(o) permet d obtenir un pointeur sur o À l inverse,deref(r) permet d obtenir l objet référencé par r Pour résumer, à partir d un diagramme de classe UML, On définit des ADT (types objets), qui représentent les entités de notre diagramme Eventuellement, on a besoin d autres types pour définir des records, des collections,... correspondant aux entités sont stockées dans des tables (1 ligne = 1 objet). Ce qui était en relationnel traduit par des clés primaires / clés étrangères, va être maintenant traduit par des pointeurs sur des objets. En fonction des multiplicités, on utilise un attribut de type référence, ou un attribut collection de références. l est possible de définir des contraintes d intégrité sur les tables objets, à la manière du modèle relationnel Définition d un schéma 19 / 24 Définition d un schéma 20 / 24 Création des tables et des contraintes Exemple On va créer une table pour chaque entité de notre diagramme create table Entite of Entite_type ; -- au minimum! On peut ajouter des contraintes : contraintes de domaine (en particulier, NOT NULL) valeurs par défaut, bien utiles pour les collections. contraintes de clé primaire (un identifiant est toujours utile pour les requêtes, mais moins indispensable que pour le modèle relationnel à cause des identifiants d objet) contraintes de clés étrangères (sur les types REF) On doit préciser comment stocker les tables imbriquées (nested table)

nstance et requêtes 21 / 24 nstance et requêtes 22 / 24 Exemple : instance Manipulation des données id_client nom prenom email les_reservations numero prix categorie insert into client(id_client,nom,prenom) values(10, DURANT, sabelle ); 10 DURANT sabelle... ref_reservation 11 15 21 60 80 45 double triple simple -- récupérer une référence insert into reservation(id_reserv,debut,fin,le_client) values(1, 04/08/2012, 08/08/2012, (select ref(c) from client c where id_client=10)); CLENT le_client id_reservation debut fin prix_total 17 60 CHAMBRE les_details twin -- ajouter une ligne dans une table imbriquée insert into the(select r.les_details from reservation r where id_reserv=1) values((select ref(c) from chambre c where c.numero=11),2); 1 04/08/2012 08/08/2012 500,00 nb_pers 2 la_chambre insert into the(select c.les_reservations from client c where c.id_client=10) select ref(r) from reservation r where r.id_reserv=1; 2 11/10/2012 12/10/2012 65,00 2 nb_pers 1 la_chambre delete from the(select r.les_details from reservation r where id_reserv=1) tab_details where tab_details.la_chambre.numero = 11 Remarque : le mot the peut être remplacé par table dans les requêtes précédentes RESERVATON nstance et requêtes 23 / 24 Conclusion 24 / 24 nterrogation select * from client -- on obtient la ligne : 10 DURANT sabelle CARON.ENS_RESERVATON_TYPE( CARON.REF_RESERVATON_TYPE( oracle.sql.ref@e5812e28 ), CARON.REF_RESERVATON_TYPE( oracle.sql.ref@e5832e28 ) ) -- une requ^ete peut "traverser" plusieurs tables, sans jointure select r.le_client.nom from reservation r -- 2 lignes résultat (2 fois DURANT) -- une requ^ete peut parcourir les tables imbriquées (ici, 3 lignes résultat) select cl.nom, cl.prenom, res.ref_reservation.id_reserv, det.nb_pers, det.la_chambre.numero from client cl, table(cl.les_reservations) res, table(res.ref_reservation.les_details) det Conclusion pour des raisons de temps, je n ai pas parlé de l héritage d ADT! Possibilité de stocker dans une table objet un type et tous ses sous-types. peuvent être stockés dans des tables, et on utilise les instructions DML pour gérer les objets persistants. La base de donnée est un graphe : on peut suivre les références et passer d un objet à un autre, sans jointure Possibilité de parcourir les tables imbriquées. La définition des ADT est dissociée de la définition des tables où sont stockés les objets : ne pas passer par les méthodes pour gérer la persistance, mais définir plutôt des paquetages PL/SQL. dem pour le constructeur et la vérification de contraintes : déclarer plutôt les contraintes avec les tables. Di culté de maintenir le graphe, en particulier quand on conserve les 2 rôles d une association