Bases de données Orientées-Objet



Documents pareils
BASES DE DONNEES ORIENTEES OBJETS BDA10.1

A QUOI SERVENT LES BASES DE DONNÉES?

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

A QUOI SERVENT LES BASES DE DONNÉES?

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

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

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

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

Les bases de données

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)

Langage SQL : créer et interroger une base

OBJECTIFS ET ARCHITECTURE DES SGBD

1. Introduction. Introduction au langage SQL3 (SQL 99) Plan. Sources du cours. 1. Introduction La norme SQL3 et ses composants

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

Intégrité des données

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

OpenPaaS Le réseau social d'entreprise

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

UML et les Bases de Données

Java et les bases de données

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

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

I4 : Bases de Données

Bases de données relationnelles

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

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

Le langage SQL Rappels

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

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

Application web de gestion de comptes en banques

Objets et Programmation. origine des langages orientés-objet

Chapitre 3 LE MODELE RELATIONNEL ET SQL (DDL)

LE LANGAGE SQL2 1. INTRODUCTION

Compétences Business Objects

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

Olivier Mondet

Java DataBaseConnectivity

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

Bases de données avancées

Le Langage De Description De Données(LDD)

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

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

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

Expression des contraintes. OCL : Object C o n t r a i n t L a n g u a g e

Panorama des Bases de Données

Programmation d application Bases de données avec Java

Java Licence Professionnelle CISII,

IFT3030 Base de données. Chapitre 2 Architecture d une base de données

1 Introduction et installation

Bases de données réparties et fédérées

4. Utilisation d un SGBD : le langage SQL. 5. Normalisation

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

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

SQL Historique

Introduction aux bases de données. Généralités sur les bases de données. Fonctions d'un SGBD. Définitions. Indépendance par rapport aux traitements

Premiers Pas en Programmation Objet : les Classes et les Objets

Panorama des Bases de Données

Bases de données - Modèle relationnel

MySQL / SQL EXEMPLES

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

Cours: Administration d'une Base de Données

1. Base de données SQLite

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

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

TP Contraintes - Triggers

PROJET 1 : BASE DE DONNÉES REPARTIES

Bases de données cours 4 Construction de requêtes en SQL. Catalin Dima

Bases de Données. Stella MARC-ZWECKER. Maître de conférences Dpt. Informatique - UdS

Utiliser Améliorer Prêcher. Introduction à LDAP

Bases de données. Chapitre 1. Introduction

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

Bases de données avancées Introduction

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

CATALOGUE FORMATIONS DOMAINE Bases de données

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

Chapitre VI- La validation de la composition.

TD/TP PAC - Programmation n 3

Types d applications pour la persistance. Outils de développement. Base de données préexistante? 3 modèles. Variantes avec passerelles

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

Partie II Cours 3 (suite) : Sécurité de bases de données

Les Bases de Données et l Objet Introduction

INTEGRITE ET BD ACTIVES

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

Bases de données et sites WEB

Évaluation et optimisation de requêtes

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

Bases de Données OLAP

P r ob lé m a t iq u e d e la g é n é r icit é. Pr in cip e d e la g é n é r icit é e n Ja v a ( 1 /3 )

Introduction aux bases de données Cours 1 : Généralités sur les bases de données

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

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

TP11 - Administration/Tuning

Bases de Données Avancées

Encapsulation. L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets.

Présentation du PL/SQL

Programmer en JAVA. par Tama

Héritage presque multiple en Java (1/2)

Transcription:

Bases de données Orientées-Objet Talel.Abdessalem@enst.fr 1 Concepts objet Notion d objet Identité Classes, attributs et méthodes Héritage et polymorphisme Modèles de persistance 2

Notion d Objet Vu de l extérieur : une boite avec des boutons Vu de l intérieur : des données + la mécanique liée aux boutons modifier_resa demander_resa Tarif : 2000 places_dispo : 13 Inscrits : {Dupont, Durand, } demander_resa { } modifier_resa{ } 3 Identité d objet Chaque objet a un Oid indépendant de sa valeur : Objet (Oid, valeur) Egalité et identité deux concepts différents Partage d objet et objet cyclique Les Oids sont gérés par le système et ne sont pas accessibles à l utilisateur 4

Classes Un objet est associé à une classe Une classe définit la structure (type) et le comportement (méthodes) des objets qui lui sont associés Exemple de définition de classe : Class Ligne numéro : integer; trajet: List (Station) method extremes():set (Station) ; Class Station nom : string; lignes : set(ligne); method suivante(ligne): Station; précedente (Ligne): Station; 5 Héritage La sous-classe hérite des attributs et des méthodes de la super-classe La méthode afficher_coef n est applicable qu aux instances de Trajet_réduit Le corps de la méthode claculer_tarif peut être redéfinie dans Trajet_réduit pour tenir compte de la réduction Liaison dynamique : le SGBD appelle la bonne méthode claculer_tarif en fonction de l objet manipulé Super-classe Trajet_train numéro : integer, départ : date, arrivée : date method reserver, calculer_tarif : real; Sous-classe Trajet_réduit inherit Trajet_train coef : real method afficher_coef; Héritage multiple possible Avantages : modélisation plus compacte et mieux structurée. Minimise les modifications du code. 6

Persistance? Quels objets persistent dans la BD à la suite de l application qui les a fait naître? Persistance explicite/implicite Persistance implicite : Support de stockage Classes d objets persistants Racines de persistance 7 Langages La force des SGBD relationnels vient de la normalisation des SQL, ESQL et SQL/CLI Quels langages pour les SGBD OO? diversité des modèles et des langages Effort de normalisation OQL de l ODMG ou SQL3 de l ANSI? liens avec les langages de programmation OO impact sur le développement d applications 8

Méta-modèle du modèle ODMG Class support Instantiate 1 key_list extent_name super_class * 1 extends * Operation signature Object * * has Property invoke return return_abnormally OID has_name? names class create delete exits same_has? Attribute attr_name attr_type set_value get_value Traversal path path_name to_cardinality to_type traverse creator_iterator Relationship + Type, littéraux, interface,... 2 define 1 add_member remove_member 9 Exemple de base Appartient Habite Voiture nveh couleur marque km rouler() Possède Personne nss nom prenom datenais vieillir() dormir() Loge Appart. étage no rue code ville Inférieur Supérieur Employé fonction salaire primes travailler() Buveur type état boire() Boire Bu_par Vin cru millésime degré qualité EmployéBuveur 10

Exemple de définition Interface Personne { // interface abstraite pour implémentation dans classe attribute string nss ; attribute string nom ; attribute string prenom ; attribute date datenaissance; relationship Appart habite inverse Appart::loge; // relationship relationship Voiture Possede inverse Voiture::Appartient; short vieillir(); void dormir() short age(); }; 11 Exemple (suite) class Employé : Personne(extent Employé key nss) //classe avec extension de personne + { attribute enum fonct{ingénieur, secrétaire, analyste, programmeur} fonction; attribute float salaire ; attribute list<float> primes ; //attribut multi-valué relationship Employé inferieur inverse supérieur; relationship Employé supérieur inverse inférieur; void travailler(); }; 12

LE LANGAGE OQL Permettre un accès facile à une base objet via un langage interactif autonome par intégration dans C++ ou Smalltalk ou Java Offrir un accès non procédural permettre des optimisations automatiques (ordonnancement, index, ) garder une syntaxe proche de SQL 92 Rester conforme au modèle de l'odmg application d'opérateurs aux collections extensions ou imbriquées permettre de créer des résultats littéraux, objets, collections, Supporter des mises à jour limitées via les méthodes 13 Concepts nouveaux Expression de chemin mono-valuée Séquence d'attributs ou associations mono-valués de la forme X1.X2 Xn telle que chaque Xi à l'exception du dernier contient une référence à un objet ou un littéral unique sur lequel le suivant s'applique. Utilisable en place d'un attribut SQL Collection dépendante Collection obtenu à partir d'un objet, soit par ce qu'elle est imbriquée dans l'objet ou pointée par l'objet. Utilisable dans le FROM 14

Forme des Requêtes Forme générale d'une requête Expressions fonctionnelles mixer avec Bloc select étendu Select [<type résultat>] (<expression> [, <expression>]...) From x in <collection> [, y in <collection>]... Where <formule> Type résultat automatiquement inféré par le SGBD tout collection est possible (bag par défaut) il est possible de créer des objets en résultats Syntaxe très libre, fort contrôle de type 15 Requête Simple Calcul d'une expression ((string) 10*5/2) "toto" ===> string Accéder un attribut d'un objet nommé Ma_voiture.couleur ===> litteral string 16

Parcours d'association monovaluées avec sélection de structure (défaut) select struct (name: b.nom, city: b.habite.adresse.ville) from b in buveurs where b.type = 'gros' ===> littéral bag <struct(name,city)> 17 Parcours d'association multivaluées Utilisation de collections dépendantes select b.nom, b.prenom from b in buveurs, v in b.boire where v.cru = "volnay" ==> litteral bag<struct<nom:string,prenom:string> 18

Résultats Imbriqués Imbrication des select au niveau select select distinct struct (nom : e.nom, inf_mieux_payes : select i from i in e.inferieur where i.salaire > e.salaire)) from e in employes ===> litteral de type set <struct (nom: string, inf_mieux_payes : bag <employes>)> et aussi au niveau du FROM (requête collection) 19 Invocation de méthodes En résultat ou dans le critère select distinct e.nom, e.habite.adresse.ville, e.age() from e in employes where e.salaire > 10000 and e.age() < 30 ===> litteral de type set <struct> 20

Création d'objets Expressions de constructions Si C est le nom d'une classe, p1,..., pn des propriétés de la classe et e1,..., en des expressions alors C(p1 : e1,..., pn : en) est une expression de construction Création d'objet employe (nss:15603300036029, nom:"jean", salaire: 100000) employe (select struct(nss:b.nss, nom:b.nom, salaire: 4000) from b in buveurs where not exist e in employes : e.nss=b.nss ) 21 Définition d'objets via Requêtes Définition de macros Define <nom> as <question> permet de définir un objet de nom <nom> calculé par la question Exemple: Define Cesars as Select b From b in Buveurs Where b.prenom = "Jules" 22

Quantification Quantificateur universel for all x in collection : predicat(x) Exemple: for all b in Buveurs : b.age < 18 Quantificateur existentiel exists x in collection: Predicat(x) Exemple: exists v in Employés.Possède : v.marque = "Renault" 23 Calculs d'agrégats Similaire à SQL avec possibilité de prédicats select e from e in employes group by (bas : e.salaire < 7000, moyen : e.salaire >= 7000 and e.salaire < 21000, haut : e.salaire >= 21000) ===>struct<bas: set(emp.),moyen:set(emp.),haut:set(emp.)> 24

Expressions de Collections Conversion de collections element (select v.marque from v in voitures where v.numero = "120 abc 75") ===> string Applatissage des collections flatten (select b.nom, select v.millesime from v in b.boire where v.cru = "volnay" from b in buveurs) 25 Développement d'applications, l exemple O 2 O2C méthodes et applications - langage propriétaire O2 et C Assurer manuellement le mapping entre classes O2 et types C. O2 et C++ Mapping transparent des classes entre C++ et O2 26

Fonction O2Query et O2C o2query ( <resultat>, <requete> [, <liste d'expressions>]) o2 Station nouvelle_station; o2 set(station) les_stations; o2query ( les_stations, "SELECT s FROM s in les_stations WHERE s->nom = $1", nouvelle_station->nom); if (count (les_stations)) display ("Il existe déjà une station avec ce nom"); 27 SQL3 Nouvelle norme SQL de l ANSI Multiples facettes : Un langage de définition de types Un langage de programmation Un langage de requêtes Un langage temporel... Données complexes, objet-relationnel Adeptes : OO : Illustra, UniSQL, Versant Relationnel : Ingres, Oracle, DB2, Informix 28

SQL3 : concepts objet 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, ) Identité d objet et partage d objet Héritage Définition de sous-types Définition de sous-tables 29 SQL3 : définition de types Un type avec référence CREATE TYPE WITH OID TELEPHONE (pays VARCHAR, zone VARCHAR, num number(10), description CHAR(20)) Un type sans référence CREATE TYPE PERSONNE (nss NUMBER, nom VARCHAR, prénoms LIST(VARCHAR), tel SET(TELEPHONE)) Un sous-type CREATE TYPE EMPLOYE UNDER PERSONNE (salaire NUMBER(10,2), ancienneté DATE) 30

SQL 3 : relations imbriquées Une table peut posséder des attributs d'un type abstrait Un tuple peut contenir des références ou des valeurs complexes Possibilité d'utiliser un type prédéfini CREATE TABLE Films OF Film ; Possibilité de définir un nouveau type CREATE TABLE Acteurs OF NEW TYPE Acteur (nom VARCHAR, age NUMBER) ; Possibilité de définir des sous-tables CREATE TABLE Films_Français UNDER Films (realisateurs VARCHAR) 31 SQL3 : utilisation des fonctions Fonctions SELECT a.nom FROM Bateau a, Bateau b WHERE b.nom = Grand Bleu' and distance(a.position,b.position) < 1 Opérateurs SELECT a.nom FROM Bateau a, Bateau b WHERE b.nom = Grand Bleu' and contenu(a.position, zone(b.position, 1)) 32

SQL 3 : exemple de relations imbriquées Films N Budget Réalisateur Acteurs Dépenses 2 4MF Besson Nom Jean Julie Age 55 40 Num Montant Motif 1 2600 Bande 2 8700 Hôtel 3 15400 Caméra 5 5MF Chouraki Nom Sylvie Pierre Age 45 29 Num Montant Motif 5 3000 Bande 7 4000 Hôtel 33 SQL 3 : accès navigationnel Accès en relationnel Accès en objet-relationnel SELECT Films.n, Films.budget FROM Acteurs, Films, Joue WHERE Acteurs.nom = Joue.acteur AND Joue.film = Films.n AND Acteurs.nom = Besson SELECT Films.n, Films.budget FROM Films f WHERE f.acteurs.nom = Besson 34

Résumé Concepts OO plus riches (Objet, identité, héritage, etc.) Langages navigationnels et une syntaxe à la SQL Deux candidats à la normalisation ODMG, OQL : pure objet, manque une norme pour le procédural OQL et pas de OQL CLI SQL3 : référence de l objet-relationnel, un pas vers l objet 35