Références et héritage



Documents pareils
Les bases de données

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

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

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

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

Construction d un EDD avec SQL 2008 R2. D. Ploix - M2 Miage - EDD - Création

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

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

Le langage SQL Rappels

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

Bases de données et sites WEB

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

CREATION WEB DYNAMIQUE

Application web de gestion de comptes en banques

TP Contraintes - Triggers

A QUOI SERVENT LES BASES DE DONNÉES?

SQL Historique

I4 : Bases de Données

A QUOI SERVENT LES BASES DE DONNÉES?

PROJET 1 : BASE DE DONNÉES REPARTIES

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

Bases de données relationnelles

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

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

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

Bases de Données Avancées

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

Bases de données cours 1

Cours: Administration d'une Base de Données

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

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

Le Langage SQL version Oracle

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

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

IFT3030 Base de données. Chapitre 1 Introduction

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

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

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

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

Création et Gestion des tables

OpenPaaS Le réseau social d'entreprise

Département Génie Informatique

Modélisation et Gestion des bases de données avec mysql workbench

Olivier Mondet

Chapitre 3 LE MODELE RELATIONNEL ET SQL (DDL)

UML et les Bases de Données

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

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

I. MySQL : Serveur et SGBD

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

1 Introduction et installation

Le Langage De Description De Données(LDD)

AGRÉGATION «ÉCONOMIE ET GESTION»

Présentation du module Base de données spatio-temporelles

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

16H Cours / 18H TD / 20H TP

Bases de données élémentaires Maude Manouvrier

Techniques de stockage. Techniques de stockage, P. Rigaux p.1/43

1. Base de données SQLite

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

SQL MAP. Etude d un logiciel SQL Injection

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

Bases de Données Avancées

PHP. PHP et bases de données

Java DataBaseConnectivity

Cours d initiation à la programmation en C++ Johann Cuenin

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

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

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

TP3 : Creation de tables 1 seance

Les Géodatabases en 9.2

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

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

Les BASES de DONNEES dans WampServer

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

TP Bases de données réparties

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

Pratique et administration des systèmes

Gestion des bases de données

La problématique de la Préservation des Bases de Données. Olivier ROUCHON CINES Groupe PIN Jeudi 7 Octobre

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

Mise en oeuvre d'une base de données mono-utilisateur avec SQLite

1 Position du problème

Conception des bases de données : Modèle Entité-Association

Structure fonctionnelle d un SGBD

Information utiles. webpage : Google+ : digiusto/

Logiciel de Gestion de la Relation Client

PHP 4 PARTIE : BASE DE DONNEES

Séance 1 Introduction aux bases de données

Procédures Stockées WAVESOFT ws_sp_getidtable Exemple : ws_sp_getnextsouche Exemple :... 12

CONCEPTION Support de cours n 3 DE BASES DE DONNEES

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

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

PHP. Bertrand Estellon. 26 avril Aix-Marseille Université. Bertrand Estellon (AMU) PHP 26 avril / 214

Transcription:

Références et héritage Contraintes référentielles pour assurer la consistance d un schéma de données Utilisation (pervertie) de l héritage objets pour faire du polymorphisme et assurer la cohérence d un schéma de données Exemple, la base d archives CEMAG (en cours) SQL : Schémas orientés objets, références et héritage IL LERMA 4-02-2009 JFR 1/13

Contraintes SQL (rappel) Contraintes d intégrité Conditions imposées sur des attributs d une table, que le moteur du SGBD doit vérifier lors de toute opération SQL modifiant des tuples d une table, i.e. INSERT, UPDATE, DELETE. Par exemple, on peut imposer qu un attribut identificateur ne puisse jamais être non défini : CREATE TABLE xxxxxx ( ident int4 NOT NULL, ); ou encore qu il ne puisse exister de doublons sur la valeur : CREATE TABLE xxxxxx ( ); NB: UNIQUE implique NOT NULL Toute opération sur la table qui met en défaut la condition de contrainte sera rejetée, avec message d erreur. SQL : Schémas orientés objets, références et héritage IL LERMA 4-02-2009 JFR 2/13

Références externes Contraintes référentielles On parle de référence externe lorsqu un tuple d une table contient qui attribut qui référence un autre attribut d une autre table. (Implémentation d une relation d ordre 1:N de Codd) Par exemple, une base contient une table d utilisateurs, identifiés par un code numérique (clé primaire) : CREATE TABLE users_table ( et une autre table d objets, identifiés eux aussi par un code numérique. Chaque objet de la base doit appartenir à un utilisateur (créateur) : CREATE TABLE cores_table ( owner int4 REFERENCES users_table(ident), Cohérence du schéma Du fait de cette contrainte, il devient impossible de créer dans la table cores_table un tuple dont l attribut owner ne soit pas un identificateur utilisateur valide (existant déjà dans la table), le SGBD rejetera la requête. SQL : Schémas orientés objets, références et héritage IL LERMA 4-02-2009 JFR 3/13

Références externes Stratégies sur destruction Si l on détruit un tuple de la table utilisateurs, la cohérence pourrait être cassée. SGBD l interdira a priori. On pourra spécifier l interdiction de la destruction (consistance) : CREATE TABLE cores_table ( owner int4 REFERENCES users_table(ident) ON DELETE RESTRICT, ou bien la destruction automatique de TOUS les objets qui référençaient le tuple utilisateur détruit (cohérence) : CREATE TABLE cores_table ( owner int4 REFERENCES users_table(ident) ON DELETE CASCADE, Choix de stratégie Il n y en a pas a priori. C est la conception de l application et du schéma qui doit poser la question (et y répondre). Dans tous les cas il sera impossible d avoir une base comportant des orphelins. Schéma sécurisé Le SQL : Schémas orientés objets, références et héritage IL LERMA 4-02-2009 JFR 4/13

Héritage objets Superclasse attributs génériques Héritage Sousclasse attributs génériques L héritage permet de construire une classe dérivée d une autre en récupérant tous les attributs (et méthodes logicielles) de la classe ancêtre et en y ajoutant ses propres attributs. attributs spécifiques Bases orientées objets De manière similaire on pourra définir une table de tuples : CREATE TABLE super_table ( -- attributs generiques ); puis la dériver pour construire une autre table : CREATE TABLE sous_table ( -- attributs specifiques ) INHERITS ( super_table ); SQL : Schémas orientés objets, références et héritage IL LERMA 4-02-2009 JFR 5/13

Héritage dégénéré Utilisation perverse On parle d héritage dégénéré lorsque la sous table ne comporte aucun attribut supplémentaire par rapport à la super table. CREATE TABLE sous_table ( ) INHERITS ( super_table ); Les tuples insérés dans la sous table sont : identiques à ceux de la super table, visibles (SELECT) par des requêtes sur la super table parmi les autres, seuls visibles par des requêtes sur la sous table. Intérêt? Permet de structurer un groupe d objets en sous-groupes sur lesquels on pourra spécifier des contraintes différentes. L héritage n importe pas les contraintes. SQL : Schémas orientés objets, références et héritage IL LERMA 4-02-2009 JFR 6/13

Exemple : la base CEMAG Description Une base d archivage de résultats de simulation. Contient des objets scientifiques, fichiers de résultats, de post traitement, images, etc. ainsi que des objets conteneurs dont le seul rôle est d assurer la structuration des données, e.g. projets, sous projets, codes de calcul, versions de codes, tâches, simulations, etc. Sémantique du schéma Ces objets conteneurs sont tous identiques mais on souhaite les organiser par groupes pour introduire un certain nombre de conditions qui ont un sens pour l application : Tout projet / sous projet doit être rattaché à un autre projet, Tout code numérique doit être rattaché à un projet ou sous projet, Toute version de code doit être rattachée à un code et rien d autre, etc. On peut gérer tout ceci au niveau de l application, on peut également (en plus) rigidifier le schéma au moment de sa construction en s aidant du SGBD. SQL : Schémas orientés objets, références et héritage IL LERMA 4-02-2009 JFR 7/13

Exemple : la base CEMAG Chaînage projets (et leur propriétaire) CREATE TABLE cores_table ( owner int4 REFERENCES users_table(ident) ON DELETE RESTRICT, croot int4 REFERENCES cores_table(ident) ON DELETE RESTRICT, L identifiant owner doit référencer un propriétaire valide (référence externe vers une table des utilisateurs). L identifiant croot référence le core objet père et doit être une valeur valide dans la table cores table. Objet initial Comme il est impossible de créer un tuple dont l attribut ne soit pas un identifiant valide, l initialisation de la table vide doit se faire explicitement par création d un objet racine qui s auto référence, par exemple : INSERT INTO cores_table(ident, croot, ) VALUES(1, 1, ); C est possible parce que le SGBD vérifie les contraintes avant la validation de l insertion qui vient d être effectuée, donc le tuple existe potentiellement au moment du contrôle. SQL : Schémas orientés objets, références et héritage IL LERMA 4-02-2009 JFR 8/13

Exemple : la base CEMAG Objets codes Les conteneurs de type outils numériques sont créés dans une sous table dédiée, avec les mêmes contraintes : CREATE TABLE tools_table ( owner int4 REFERENCES users_table(ident) ON DELETE RESTRICT, croot int4 REFERENCES cores_table(ident) ON DELETE RESTRICT, ) INHERITS ( cores_table ); NB: les attributs de même nom et même type ne sont pas dupliqués dans une sous classe mais fusionnés avec ceux de la super classe. On les répète ici car les contraintes ne sont pas héritables. À quoi ça sert? À rien! Les tuples de cette sous table sont exactement les mêmes que ceux de la super classe, même attributs, mêmes contraintes. Le seul intérêt est de disposer d un sous groupe avec un nom de table qui lui est propre. SQL : Schémas orientés objets, références et héritage IL LERMA 4-02-2009 JFR 9/13

Exemple : la base CEMAG Objets versions exécutables de codes On veut rattacher toutes les versions d un même code à l objet code lui-même, pas à un projet ou sous projet. On référence la sous table précédente : CREATE TABLE execs_table ( owner int4 REFERENCES users_table(ident) ON DELETE RESTRICT, croot int4 REFERENCES tools_table(ident) ON DELETE RESTRICT, ) INHERITS ( cores_table ); NB: cette table est également dérivée de la table ancêtre. La seule différence porte sur l attribut croot qui doit correspondre à un identifiant de la table tools table et non plus cores table. NB: tous ces objets restent des cores objets (et accessibles en SELECT depuis la super table). L héritage dégénéré permet simplement d implanter une forme de polymorphisme et de structurer le schéma. SQL : Schémas orientés objets, références et héritage IL LERMA 4-02-2009 JFR 10/13

Exemple : la base CEMAG Objets tâches Ces objets comportent deux références, un projet de rattachement (contexte scientifique) et une version de code numérique (contexte technique). À cause du pointeur supplémentaire on aura là un véritable héritage avec attributs spécifiques : CREATE TABLE tasks_table ( owner int4 REFERENCES users_table(ident) ON DELETE RESTRICT, croot int4 REFERENCES cores_table(ident) ON DELETE RESTRICT, -- cexec int4 REFERENCES execs_table(ident) ON DELETE RESTRICT, ) INHERITS ( cores_table ); SQL : Schémas orientés objets, références et héritage IL LERMA 4-02-2009 JFR 11/13

Conclusions Un outil gratuit Les SGBD font ça très bien et le coût est nul (en terme de code) au niveau du développement de l application, seule la construction initiale du schéma doit le prévoir. Un schéma consistant Avec l héritage dégénéré on structure un ensemble de données a priori identiques en introduisant des liaisons sémantiques entre elles. Un schéma cohérent et fiable Le système de contraintes référentielles implique que tout objet existant dans la base est cohérent, pas d orphelins, pas de références invalides. Un niveau de sécurité supplémentaire Les stratégies de cohérence en cas de destruction protègent contre les erreurs de programmation de l application, ou les interventions manuelles intempestives sur la base. Toute requête ne respectant pas les contraintes est rejetée. Une économie (parfois) au niveau programmation de l application Lorsqu on extrait des objets de la base (SELECT), on peut éliminer des tests de validité sur les références puisque la simple existence d un objet contraint assure que toutes ses références sont valides. Polymorphisme Toutes les requêtes génériques, applicables sur la super classe, permettent de manipuler l ensemble des tuples quelque soit leur nature spécialisée, d où une grosse économie d opérations OR. SQL : Schémas orientés objets, références et héritage IL LERMA 4-02-2009 JFR 12/13

Compatibilités Contraintes référentielles Au standard SQL 99, implémentées dans DB2, Oracle, PostgreSQL, MySQL. Bases orientées objets, héritage simple Au standard SQL 99, implémenté dans DB2, Oracle. Implémenté dans PostgreSQL avec des écarts syntaxiques. Bases orientées objets, héritage multiple Pas au standard SQL 99, implémenté dans DB2, Oracle, PostgreSQL avec des syntaxes spécifiques. SQL : Schémas orientés objets, références et héritage IL LERMA 4-02-2009 JFR 13/13