Le modèle logique relationnel-objet et son implémentation sous 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

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

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

Chapitre 1 : Introduction aux bases de données

Bases de données avancées Introduction

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

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

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

Chapitre 3 LE MODELE RELATIONNEL ET SQL (DDL)

Bases de Données. Plan

Application web de gestion de comptes en banques

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

Information utiles. webpage : Google+ : digiusto/

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

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

I4 : 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)

Le Langage De Description De Données(LDD)

Bases de Données Avancées

Le Langage SQL version Oracle

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

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

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

AGRÉGATION «ÉCONOMIE ET GESTION»

UML et les Bases de Données

Langage SQL : créer et interroger une base

Diagramme de classes

Chapitre 5 LE MODELE ENTITE - ASSOCIATION

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

Rappel sur les bases de données

Table des matières. Avant-propos

Plan. Exemple: Application bancaire. Introduction. OCL Object Constraint Language Le langage de contraintes d'uml

Introduction aux Bases de Données

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

NF26 Data warehouse et Outils Décisionnels Printemps 2010

Bases de données relationnelles

BASES DE DONNEES ORIENTEES OBJETS BDA10.1

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

BASES DE DONNÉES. CNAM Centre associé de Clermont-Ferrand Cycle A Année J. Darmont I. INTRODUCTION II. LES SYSTÈMES HIÉRARCHIQUES

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Quelques aspects du Relationnel-Objet du SGBD Oracle

Les bases de données

Création et Gestion des tables

Chapitre 10. Architectures des systèmes de gestion de bases de données

Principes de la conception des bases de données

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

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

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

Compte-rendu de projet de Système de gestion de base de données

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

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

C++ COURS N 2 : CLASSES, DONNÉES ET FONCTIONS MEMBRES Classes et objets en C++ Membres d'une classe Spécification d'une classe Codage du comportement

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

TP3 : Creation de tables 1 seance

Stéphane Crozat NF17 3. Travaux Dirigés 3. Université de Technologie de Compiègne Génie Informatique

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

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

Généralités sur le Langage Java et éléments syntaxiques.

CREATION WEB DYNAMIQUE

Dossier I Découverte de Base d Open Office

PRODIGE V3. Manuel utilisateurs. Consultation des métadonnées

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

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

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

Bases de données avancées

Compétences Business Objects

Le langage SQL Rappels

Le niveau conceptuel : la modélisation des bases de données

Java DataBaseConnectivity

TP Contraintes - Triggers

Intégrité des données

Introduction aux bases de données

1/ Présentation de SQL Server :

CONCEPTION Support de cours n 3 DE BASES DE DONNEES

Introduction aux Bases de Données

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

16H Cours / 18H TD / 20H TP

Cours Bases de données

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)

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

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

TP Bases de données réparties

Olivier Mondet

Langage HTML (2 partie) <HyperText Markup Language> <tv>lt La Salle Avignon BTS IRIS</tv>

INTRODUCTION : Données structurées et accès simplifié

SQL Historique

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

Historisation des données

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

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

MEGA Database Builder. Guide d utilisation

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

CHAPITRE 1 ARCHITECTURE

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

I. MySQL : Serveur et SGBD

OpenPaaS Le réseau social d'entreprise

Transcription:

Conception de bases de données Le modèle logique relationnel-objet et son implémentation sous Oracle http:bdd.crzt.fr STÉPHANE CROZAT Paternité - Partage des Conditions Initiales à l'identique : http:creativecommons.orglicensesby-sa.0fr juillet 0

Table des matières Introduction I - Théorie : RO, SQL, tables imbriquées, tables objets, passage UML vers RO A. Introduction : R, OO, RO........ Les atouts du modèle relationnel... Les inconvénients du modèle relationnel...0 Les SGBDOO...0 Les SGBDRO... Exercice... B. Introduction au SQL et aux types utilisateurs.... Types utilisateurs.... Déclaration des types utilisateurs en SQL (extension au LDD).... Exercice... C. Les tables imbriquées dans le modèle relationnel-objet.... Exemple : Cours et intervenants.... Le modèle imbriqué.... Les enregistrements imbriqués (modèle et LDD).... Insertion dans les enregistrements imbriqués.... Sélection dans les enregistrements imbriqués...0. Les collections imbriquées (modèle et LDD)...0. Insertion dans les collections imbriquées.... Sélection dans les collections imbriquées.... Extension THE... 0. Insertion de collections à partir de requêtes SELECT... D. Les tables objets dans le modèle relationnel-objet........... Définition de tables objets (modèles et LDD)... Les OID (identificateurs d'objets)... Références entre enregistrements avec les OID...0 Insertion de références par OID (INSERT)... Manipulation d'oid (SELECT)... Méthodes de table objet... Méthodes et SELF... Héritage et réutilisation de types... E. Le passage conceptuel vers relationnel-objet.... Classe.... Un film classe.... Attributs et méthodes.... Un film avec des attributs.... Un film méthodique.... Un film vraiment méthodique.... Association :N et :.... Un film associatif.... Association N:M... 0. Un film très associatif...

..... Un film très associatif, le retour... Composition... Un film bien composé... Héritage... RO sans fil...

II - Application : Relationnel-Objet A. Zoologie... B. Des voitures et des hommes... C. Passage conceptuel logique... D. Super-héros relationnels-objets... III - Pratique : Relationnel-objet sous Oracle A. Concevoir et implémenter une base RO... B. Alimenter une base RO... C. Interroger une base RO : Utilisation des OID... D. Interroger une base RO : Utilisation des méthodes... E. Interroger une base RO : Utilisation des tables imbriquées...0 IV - Test : Relationnel-Objet V - Complément : Relationnel-Objet (réflexion) A. THE... B. Attributs multi-valués... C. Intégration... VI - Synthèse : Le relationnel-objet VII - Bibliographie commentée sur le relationnel-objet VIII - Questions-réponses sur le relationnel-objet Questions de synthèse Solution des exercices Solution des exercices Glossaire Signification des abréviations 0 Bibliographie 0 Index 0

Introduction Si le modèle logique relationnel a prouvé sa puissance et sa fiabilité au cours des 0 dernières années, les nouveaux besoins de l'informatique industrielle ont vu l'émergence de structures de données complexes mal adaptées à une gestion relationnelle. La naissance du courant orienté objet et des langages associées (Java et C++ par exemple) ont donc également investi le champ des SGBD afin de proposer des solutions pour étendre les concepts du relationnel et ainsi mieux répondre aux nouveaux besoins de modélisation.

Théorie : RO, SQL, tables imbriquées, tables objets, passage UML vers RO I- I Introduction : R, OO, RO Introduction au SQL et aux types utilisateurs Les tables imbriquées dans le modèle relationnel-objet Les tables objets dans le modèle relationnel-objet Le passage conceptuel vers relationnel-objet A. Introduction : R, OO, RO Objectifs Comprendre les limites du modèle relationnel Comprendre pourquoi et comment le modèle relationnel peut être étendu. Les atouts du modèle relationnel Fondé sur une théorie rigoureuse et des principes simples Mature, fiable, performant Indépendance programme et données SGBDR : les plus utilisés, connus, maîtrisés SQL une implémentation standard du modèle relationnel, avec des API pour la plupart des langages de programmation

Théorie : RO, SQL, tables imbriquées, tables objets, passage UML vers RO Les SGBDR incluent des outils performants de gestion de requêtes, de générateurs d'applications, d'administration, d'optimisation, etc.. Les inconvénients du modèle relationnel La structure de donnée en tables est pauvre d'un point de vue de la modélisation logique Le mapping MCD vers MLD entraîne une perte de sémantique La manipulation de structures relationnelles par des langages objets entraîne une impedance mismatch, c'est à dire un décalage entre les structures de données pour le stockage et les structures de données pour le traitement (ce qui implique des conversions constantes d'un format à l'autre) La NF est inappropriée à la modélisation d'objets complexes La normalisation entraîne la genèse de structures de données complexes et très fragmentées, qui peuvent notamment poser des problèmes de performance ou d'évolutivité Le SQL doit toujours être combiné à d'autres langages de programmation pour être effectivement mis en œuvre La notion de méthode ne peut être intégrée au modèle logique, elle doit être gérée au niveau de l'implémentation physique Les types de données disponibles sont limités et non extensibles. Les SGBDOO Introduction Les SGBDOO ont été créés pour gérer des structures de données complexes, en profitant de la puissance de modélisation des modèles objets et de la puissance de stockage des BD classiques. Objectifs des SGBDOO : Offrir aux langages de programmation orientés objets des modalités de stockage permanent et de partage entre plusieurs utilisateurs Offrir aux BD des types de données complexes et extensibles Permettre la représentation de structures complexes etou à taille variable Avantages des SGBDOO : Le schéma d'une BD objet est plus facile à appréhender que celui d'une BD relationnelle (il contient plus de sémantique, il est plus proche des entités réelles) L'héritage permet de mieux structurer le schéma et de factoriser certains éléments de modélisation La création de ses propres types et l'intégration de méthodes permettent une représentation plus directe du domaine L'identification des objets permet de supprimer les clés artificielles souvent introduites pour atteindre la NF et donc de simplifier le schéma Les principes d'encapsulation et d'abstraction du modèle objet permettent de mieux séparer les BD de leurs applications (notion d'interface). Inconvénient des SGBDOO : Gestion de la persistance et de la coexistence des objets en mémoire (pour leur manipulation applicative) et sur disque (pour leur persistance) complexe 0

Théorie : RO, SQL, tables imbriquées, tables objets, passage UML vers RO Gestion de la concurrence (transactions) plus difficile à mettre en œuvre Interdépendance forte des objets entre eux Gestion des pannes Complexité des systèmes (problème de fiabilité) Problème de compatibilité avec les SGBDR classiques Fondamental Les SGBDOO apportent des innovations sur des aspects que les SGBDR ne savent pas faire, mais sans être au même niveau sur ce que les SGBDR savent bien faire.. Les SGBDRO Introduction Les SGBDRO sont nés du double constat de la puissance nouvelle promise par SGBDOO et de l'insuffisance de leur réalité pour répondre aux exigences l'industrie des BD classiques. Leur approche est plutôt d'introduire dans SGBDR les concepts apportés par les SGBDOO plutôt que de concevoir nouveaux systèmes. les de les de Objectifs des SGBDRO Gérer des données complexes (temps, géo-référencement, multimédia, types utilisateurs, etc.) Rapprocher le modèle logique du modèle conceptuel Réduire l'impedance mismatch Réduire les pertes de performance liées à la normalisation et aux jointures Définition : Modèle relationnel-objet Modèle relationnel étendu avec des principes objet pour en augmenter les potentialités. Synonymes : Modèle objet-relationnel Fondamental : Type utilisateur Le concept central du RO est celui de type utilisateur, correspondant à la classe en POO, qui permet d'injecter la notion d'objet dans le modèle relationnel. Les apports principaux des types utilisateurs sont : La gestion de l'imbrication (données structurées et collections) Les méthodes et l'encapsulation L'héritage et la réutilisation de définition de types L'identité d'objet et les références physiques Attention : Tables imbriquées et tables objets Le modèle RO apporte deux nouveautés distinctes et indépendantes à ne pas confondre : Les tables imbriquées (nested model) qui permettent de dépasser les limites de la première forme normale et de limiter la fragmentation de l'information ; Les tables objets qui permettent d'ajouter les identifiants d'objets (OID), les méthodes et l'héritage aux tables classiques.

Théorie : RO, SQL, tables imbriquées, tables objets, passage UML vers RO Avec un SGBDRO on peut ne pas utiliser ces deux extensions (on reste alors en relationnel), utiliser l'une des deux ou bien les deux conjointement.. Exercice [Solution n p ] Parmi les assertions suivantes, lesquelles expriment des limites des SGBDR qui justifient l'évolution du modèle relationnel classique vers le modèle relationnelobjet? Le principe d'atomicité des attributs d'une relation (première forme normale) empêche de disposer de propriétés structurant plusieurs valeurs dans un type complexe. La séparation des données et des traitements empêche l'intégration des méthodes au modèle. La représentation de données complexes conduit à une fragmentation importante de l'information en de multiples relations et à des chutes de performance. Le modèle relationnel ne permet pas d'exécuter correctement des transactions en réseau. Il n'est pas possible de créer des types de données personnalisées. Il n'est pas possible d'exécuter des instructions SQL ou SQL à partir d'un langage objet tel que Java, alors que c'est possible avec SQL. L'héritage n'est pas représentable directement. B. Introduction au SQL et aux types utilisateurs Objectifs Connaître les caractéristiques principales du modèle relationnel-objet Connaître l'extension du LDD pour la déclaration de type (CREATE TYPE). Types utilisateurs Définition : Type utilisateur Type de données créé par le concepteur d'un schéma relationnel-objet, qui encapsule des données et des opérations sur ces données. Ce concept est à rapprocher de celui de classe d'objets. Synonymes : Type de données utilisateur, Type de données abstrait

Théorie : RO, SQL, tables imbriquées, tables objets, passage UML vers RO Syntaxe : Niveau logique 0 Type nom_type : < attribut:typeattribut, attribut:typeattribut,... attributn:typeattributn, =methode:(paramètres) typeretourné, =methode:(paramètres) typeretourné, =... =methoden:(paramètres) typeretournén > Fondamental Les types des attributs (ou des méthodes) d'un type peuvent également être des types utilisateurs. C'est ce principe qui permet l'imbrication de données relationnelles.. Déclaration des types utilisateurs en SQL (extension au LDD) Syntaxe : Déclaration de type 0 CREATE TYPE nom_type AS OBJECT ( nom_attribut type_attribut... MEMBER FUNCTION nom_fonction (parametre IN OUT type_parametre,...) RETURN type_fonction... ) [NOT FINAL]; CREATE TYPE BODY nom_type IS MEMBER FUNCTION nom_fonction (...) RETURN type_fonction IS BEGIN... END ; MEMBER FUNCTION nom_fonction...... END ; END ; Syntaxe : Héritage de type CREATE TYPE sous_type UNDER sur_type ( Déclarations spécifiques ou surcharges ) ; Remarque : NOT FINAL Pour être héritable, un type doit être déclaré avec la clause optionnelle NOT FINAL. Remarque : Type retourné par une méthode «The datatype cannot specify a length, precision, or scale.» http:docs.oracle.comcdb_0server.0b0statements_00.htm

Théorie : RO, SQL, tables imbriquées, tables objets, passage UML vers RO. Exercice [Solution n p ] Parmi les possibilités de modélisation logique suivantes, lesquelles peuvent être réalisées en relationnel-objet mais pas en relationnel. Associer des méthodes aux tables Mettre plusieurs valeurs dans un enregistrement Référencer un enregistrement depuis un autre enregistrement Définir ses propres types de données C. Les tables imbriquées dans le modèle relationnelobjet Objectifs Connaître l'extension du LDD pour déclarer des tables imbriquées Connaître l'extension du LMD pour naviguer des tables imbriquées. Exemple : Cours et intervenants Exemple pknom Crozat Vincent : Modèle logique prenom Stéphane Antoine bureau liste-telephones centre batiment numero PG K centre batiment numero R C listes-specialites Domaine Technologie 00000 BD SGBDR 0 Doc XML 0 BD SGBDRO Domaine Technologie 0 IC Ontologie 0000 Base de données SGBDRO Modèle imbriqué Type typbureau : <centre:char, batiment:char, numero:int> Type typlistetelephones : collection de <entier> Type typspecialite : <domaine:char, specialite:char> Type typlistespecialites : collection de <typspecialite> tintervenant (#nom:char, prenom:char, bureau:typbureau, ltelephones:typlistetelephones, lspecialites:typlistespecialites)

Théorie : RO, SQL, tables imbriquées, tables objets, passage UML vers RO Complément : Modèle conceptuel UML Intervenant Exemple 0 0 CREATE OR REPLACE TYPE typbureau AS OBJECT ( centre char(), batiment char(), numero number() CREATE OR REPLACE TYPE typlistetelephones AS TABLE OF number(0 CREATE OR REPLACE TYPE typspecialite AS OBJECT ( domaine varchar(), technologie varchar() CREATE OR REPLACE TYPE typlistespecialites AS TABLE OF typspecialite; CREATE TABLE tintervenant ( pknom varchar(0) PRIMARY KEY, prenom varchar(0) NOT NULL, bureau typbureau, ltelephones typlistetelephones, lspecialites typlistespecialites ) NESTED TABLE ltelephones STORE AS tintervenant_nt, NESTED TABLE lspecialites STORE AS tintervenant_nt; Exemple 0 : LDD : Insert INSERT INTO tintervenant (pknom, prenom, bureau, ltelephones, lspecialites) VALUES ( 'Crozat', 'Stéphane', typbureau('pg','k',), typlistetelephones (00000,0,0), typlistespecialites (typspecialite ('BD','SGBDR'), typspecialite('doc','xml'), typspecialite('bd','sgbdro')) INSERT INTO tintervenant (pknom, prenom, bureau, ltelephones, lspecialites)

Théorie : RO, SQL, tables imbriquées, tables objets, passage UML vers RO VALUES ( 'Vincent', 'Antoine', typbureau('r','c',), typlistetelephones (0,0000), typlistespecialites (typspecialite ('IC','Ontologies'), typspecialite('bd','sgbdro')) Exemple : Select (enregistrement imbriqué) SELECT pknom, prenom, i.bureau.centre FROM tintervenant i; PKNOM -------------------Crozat Vincent Exemple PRENOM -------------------Stéphane Antoine BUREAU.CENTRE ------------PG R : Select (collection de scalaires imbriquée) SELECT i.pknom, t.* FROM tintervenant i, TABLE(i.ltelephones) t PKNOM COLUMN_VALUE -------------------- -----------Crozat 0000 Crozat Crozat Vincent Vincent 000 Exemple : Select (collection d'enregistrements imbriquée) SELECT i.pknom, s.* FROM tintervenant i, TABLE(i.lspecialites) s PKNOM -------------------Crozat Crozat Crozat Vincent Vincent DOMAINE --------------BD Doc BD IC BD TECHNOLOGIE --------------SGBDR XML SGBDRO Ontologies SGBDRO. Le modèle imbriqué Définition : Modèle imbriqué Le principe du modèle imbriqué est qu'un attribut d'une table ne sera plus seulement valué par une unique valeur scalaire (principe de la NF ), mais pourra l'être par un vecteur (enregistrement) ou une collection de scalaires ou de vecteurs, c'est à dire une autre table. Synonyme : nested model

Théorie : RO, SQL, tables imbriquées, tables objets, passage UML vers RO Fondamental : Finalité du modèle imbriqué La NF est relâchée pour permettre d'affecter des valeurs non atomiques à un attribut afin de modéliser des objets complexes. Définition : Table imbriquée Table relationnel-objet dont chaque attribut peut être défini pour contenir : une variable scalaire, ou un enregistrement, ou une collection de scalaires, ou une collection enregistrements. Exemple : Gestion d'attribut composé par imbrication d'enregistrement (table à une seule ligne) pknom Crozat prenom Stéphane Vincent Antoine Bureau centre batiment numero PG K centre batiment numero R C Imbrication d'enregistrement Exemple : Gestion d'attribut multivalué par imbrication de collection de scalaires (table à une seule colonne) pknom Crozat prenom liste-telephones Stéphane 00000 0 0 Vincent Antoine 0 0000 Imbrication de collection de scalaires

Théorie : RO, SQL, tables imbriquées, tables objets, passage UML vers RO Exemple : Gestion de composition par imbrication de collection d'enregistrements (tables) pknom prenom Crozat Stéphane Vincent Antoine liste-specialites Domaine Technologie BD SGBDR Doc XML BD SGBDRO Domaine Technologie IC Ontologie Base de données SGBDRO Imbrication de collection d'enregistrement Exemple pknom Crozat Vincent : Synthèse prenom Stéphane Antoine bureau liste-telephones centre batiment numero PG K centre batiment numero R C listes-specialites Domaine Technologie 00000 BD SGBDR 0 Doc XML 0 BD SGBDRO Domaine Technologie 0 IC Ontologie 0000 Base de données SGBDRO Modèle imbriqué. Les enregistrements imbriqués (modèle et LDD)

Théorie : RO, SQL, tables imbriquées, tables objets, passage UML vers RO Exemple : Gestion d'attribut composé par imbrication d'enregistrement (table à une seule ligne) pknom Crozat Vincent prenom Stéphane Antoine Bureau centre batiment numero PG K centre batiment numero R C Imbrication d'enregistrement Exemple Type typbureau : <centre:char, batiment:char, numero:int> tintervenant (#nom:char, prenom:char, bureau:typbureau) Exemple 0 : Modèle logique : Implémentation SQL CREATE OR REPLACE TYPE typbureau AS OBJECT ( centre char(), batiment char(), numero number() CREATE TABLE tintervenant ( pknom varchar(0) PRIMARY KEY, prenom varchar(0) NOT NULL, bureau typbureau Remarque : Première forme normale Le recours aux types utilisateurs brise la règle de la première forme normale de l'atomicité des valeurs d'attribut. Ce non respect de la NF ne pose pas de problème en relationnel-objet car la déclaration de type permet de contrôler la structure interne des enregistrements imbriqués. Dans le modèle relationnel classique, le problème du non respect de la NF était bien l'opacité de la structure interne des attributs ainsi constitués qui interdisait l'accès à des sous informations extraites de la valeur de l'attribut (par exemple un attribut comprenant le nom et le prénom ensemble interdit l'accès à l'information "nom" ou à l'information "prénom" indépendamment). L'usage de type éclaire cette opacité et rend ainsi le respect de l'atomicité dépassable.. Insertion dans les enregistrements imbriqués En RO, la manipulation de données est étendue pour assurer la gestion des objets

Théorie : RO, SQL, tables imbriquées, tables objets, passage UML vers RO et des collections. Fondamental : Constructeur d'objet Pour tout type d'objet est automatiquement créée une méthode de construction, dont le nom est celui du type et les arguments les attributs du type. Syntaxe : Insertion d'enregistrements imbriqués INSERT INTO nom_table (..., attribut_type_objet,...) VALUES (..., nom_type(valeur, valeur,...),... Exemple : Insertion d'enregistrements imbriqués INSERT INTO tintervenant (pknom, prenom, bureau) VALUES ('Crozat', 'Stéphane', typbureau('pg','k',) INSERT INTO tintervenant (pknom, prenom, bureau) VALUES ('Vincent', 'Antoine', typbureau('r','c',). Sélection dans les enregistrements imbriqués Syntaxe : Accès aux attributs des enregistrements imbriqués SELECT alias_table.nom_objet.nom_attribut FROM nom_table AS alias_table Attention : Alias obligatoire L'accès aux objets se fait obligatoirement en préfixant le chemin d'accès par l'alias de la table et non directement par le nom de la table. Exemple : Accès aux attributs des enregistrements imbriqués SELECT pknom, prenom, i.bureau.centre FROM tintervenant i; PKNOM -------------------Crozat Vincent Complément PRENOM -------------------Stéphane Antoine BUREAU.CENTRE ------------PG R : Accès aux méthodes des objets SELECT alias_table.nom_objet.nom_méthode(paramètres) FROM nom_table AS alias_table. Les collections imbriquées (modèle et LDD) Définition : Collection Une collection est un type de données générique défini afin de supporter un 0

Théorie : RO, SQL, tables imbriquées, tables objets, passage UML vers RO ensemble d'objets (scalaires ou enregistrements). Synonymes : Collection d'objets Syntaxe : Modèle logique Type nom_type : collection de <type_objet> Remarque Les objets d'une collection peuvent être un type simple (collection de scalaire) ou un type utilisateur (collection d'enregistrements). Exemple Type typlistetelephones : collection de <entier> tintervenant (#nom:char, prenom:char, ltelephones:typlistetelephones) Exemple : Collection d'entiers (modèle logique) : Collection d'objets complexes (modèle logique) Type typspecialite : <domaine:char, specialite:char> Type typlistespecialites : collection de <typspecialite> tintervenant (#nom:char, prenom:char, lspecialites:typlistespecialites) Syntaxe : Implémentation des collections de scalaires sous forme de tables imbriquées en SQL 0 -- Déclaration d'un type abstrait de collection CREATE TYPE liste_nom_type AS TABLE OF nom_type_scalaire; -- Déclaration d'une table imbriquant une autre table CREATE TABLE nom_table_principale ( nom_attribut type_attribut,... nom_attribut_table_imbriquée liste_nom_type,... ) NESTED TABLE nom_attribut_table_imbriquée STORE AS nom_table_stockage;

Théorie : RO, SQL, tables imbriquées, tables objets, passage UML vers RO Exemple : Gestion d'attribut multivalué par imbrication de collection de scalaires pknom Crozat prenom liste-telephones Stéphane 00000 0 0 Vincent Antoine 0 0000 Imbrication de collection de scalaires CREATE OR REPLACE TYPE typlistetelephones AS TABLE OF number(0 CREATE TABLE tintervenant ( pknom varchar(0) PRIMARY KEY, prenom varchar(0) NOT NULL, ltelephones typlistetelephones ) NESTED TABLE ltelephones STORE AS tintervenant_nt; Syntaxe : Implémentation des collections d'enregistrement sous forme de tables imbriquées en SQL 0 --Création d'un type abstrait d'objet CREATE TYPE nom_type AS OBJECT (... -- Déclaration d'un type abstrait de collection CREATE TYPE liste_nom_type AS TABLE OF nom_type; -- Déclaration d'une table imbriquant une autre table CREATE TABLE nom_table_principale ( nom_attribut type_attribut,... nom_attribut_table_imbriquée liste_nom_type,... ) NESTED TABLE nom_attribut_table_imbriquée STORE AS nom_table_stockage;

Théorie : RO, SQL, tables imbriquées, tables objets, passage UML vers RO Exemple : Gestion de composition par imbrication de collection d'enregistrements pknom Crozat prenom Stéphane Vincent Antoine liste-specialites Domaine Technologie BD SGBDR Doc XML BD SGBDRO Domaine Technologie IC Ontologie Base de données SGBDRO Imbrication de collection d'enregistrement 0 CREATE OR REPLACE TYPE typspecialite AS OBJECT ( domaine varchar(0), technologie varchar(0) CREATE OR REPLACE TYPE typlistespecialites AS TABLE OF typspecialite; CREATE TABLE tintervenant ( pknom varchar(0) PRIMARY KEY, prenom varchar(0) NOT NULL, lspecialites typlistespecialites ) NESTED TABLE lspecialites STORE AS tintervenant_nt; Complément : Synthèse : enregistrement imbriqué, collection de scalaires imbriquée, collection d'enregistrement imbriquée pknom Crozat prenom Stéphane bureau centre PG Vincent Antoine centre R liste-telephones listes-specialites batiment numero Domaine Technologie K 00000 BD SGBDR 0 Doc XML 0 BD SGBDRO batiment numero Domaine Technologie C 0 IC Ontologie 0000 Base de données SGBDRO Modèle imbriqué Type typbureau : <centre:char, batiment:char, numero:int>

Théorie : RO, SQL, tables imbriquées, tables objets, passage UML vers RO 0 0 Type typlistetelephones : collection de <entier> Type typspecialite : <domaine:char, specialite:char> Type typlistespecialites : collection de <typspecialite> tintervenant (#nom:char, prenom:char, bureau:typbureau, ltelephones:typlistetelephones, lspecialites:typlistespecialites) CREATE OR REPLACE TYPE typbureau AS OBJECT ( centre char(), batiment char(), numero number() CREATE OR REPLACE TYPE typlistetelephones AS TABLE OF number(0 CREATE OR REPLACE TYPE typspecialite AS OBJECT ( domaine varchar(), technologie varchar() CREATE OR REPLACE TYPE typlistespecialites AS TABLE OF typspecialite; CREATE TABLE tintervenant ( pknom varchar(0) PRIMARY KEY, prenom varchar(0) NOT NULL, bureau typbureau, ltelephones typlistetelephones, lspecialites typlistespecialites ) NESTED TABLE ltelephones STORE AS tintervenant_nt, NESTED TABLE lspecialites STORE AS tintervenant_nt;. Insertion dans les collections imbriquées Syntaxe : Insertion de collections d'objets INSERT INTO nom_table (..., attribut_type_collection,...) VALUES (... nom_type_collection( nom_type_objet(valeur, valeur,...), nom_type_objet(valeur, valeur,...),...... Exemple 0 : Insertion d'enregistrements et de collections imbriqués INSERT INTO tintervenant (pknom, prenom, bureau, ltelephones, lspecialites) VALUES ( 'Crozat', 'Stéphane', typbureau('pg','k',), typlistetelephones (00000,0,0), typlistespecialites (typspecialite ('BD','SGBDR'), typspecialite('doc','xml'), typspecialite('bd','sgbdro')) INSERT INTO tintervenant (pknom, prenom, bureau, ltelephones,

Théorie : RO, SQL, tables imbriquées, tables objets, passage UML vers RO lspecialites) VALUES ( 'Vincent', 'Antoine', typbureau('r','c',), typlistetelephones (0,0000), typlistespecialites (typspecialite ('IC','Ontologies'), typspecialite('bd','sgbdro')) Complément Instruction THE (cf. Extension THE p ). Sélection dans les collections imbriquées Syntaxe : Accès aux tables imbriquées Soit col un attribut de la table t contenant une collection imbriquée. SELECT t.* FROM t t, TABLE(t.col) t; Attention : Jointure avec la table imbriquée La jointure entre la table principale et sa table imbriquée est implicitement réalisée, il ne faut pas la spécifier. Exemple : Accès à une collection imbriquée de scalaires SELECT i.pknom, t.* FROM tintervenant i, TABLE(i.ltelephones) t PKNOM COLUMN_VALUE -------------------- -----------Crozat 0000 Crozat Crozat Vincent Vincent 000 Exemple : Accès à une collection imbriquée d'enregistrement SELECT i.pknom, s.* FROM tintervenant i, TABLE(i.lspecialites) s PKNOM -------------------Crozat Crozat Crozat Vincent Vincent DOMAINE --------------BD Doc BD IC BD TECHNOLOGIE --------------SGBDR XML SGBDRO Ontologies SGBDRO

Théorie : RO, SQL, tables imbriquées, tables objets, passage UML vers RO Syntaxe : Accès aux colonnes d'une table imbriquée SELECT t.a, t.b... FROM t t, TABLE(t.col) t; Syntaxe : Accès à la colonne d'une table imbriquée de scalaires Lorsque la table imbriquée est une table de type scalaire (et non une table d'objets d'un type utilisateur), alors la colonne de cette table n'a pas de nom (puisque le type est scalaire la table n'a qu'une colonne). Pour accéder à cette colonne, il faut utiliser une syntaxe dédiée : COLUMN_VALUE. SELECT t.column_value FROM t t, TABLE(t.nt) t; Exemple 0 SELECT i.pknom, t.column_value, s.domaine FROM tintervenant i, TABLE(i.ltelephones) t, TABLE(i.lspecialites) s PKNOM COLUMN_VALUE DOMAINE -------------------- ------------ ----------Crozat 0000 BD Crozat 0000 Doc Crozat 0000 BD Crozat BD Crozat Doc Crozat BD Crozat BD Crozat Doc Crozat BD Vincent IC Vincent BD Vincent 000 IC Vincent 000 BD. Extension THE Définition : THE La clause THE est une extension du LMD permettant de manipuler les objets (scalaires ou enregistrements) dans les collections implémentées sous forme de tables imbriquées. Syntaxe INSERT INTO THE (SELECT...) VALUES (...) DELETE THE (SELECT...) WHERE... UPDATE THE (SELECT...) SET... WHERE... Exemple collection : INSERT d'un scalaire ou d'un enregistrement dans une INSERT INTO tintervenant (pknom, prenom, bureau, ltelephones, lspecialites) VALUES ( 'Dumas', 'Leonard', typbureau('r','c',), typlistetelephones(0), typlistespecialites()

Théorie : RO, SQL, tables imbriquées, tables objets, passage UML vers RO 0 INSERT INTO THE (SELECT i.ltelephones FROM tintervenant i WHERE i.pknom='dumas') VALUES (0 INSERT INTO THE (SELECT i.lspecialites FROM tintervenant i WHERE i.pknom='dumas') VALUES (typspecialite('bd','sgbdr') Remarque L'emploi de typlistespecialites() permet de déclarer une collection imbriquée vide dans tintervenant. La collection ne contient aucun élément initialement, ils peuvent être ajoutés ultérieurement grâce à l'instruction INSERT INTO THE. Exemple DELETE THE (SELECT i.ltelephones FROM tintervenant i WHERE i.pknom='dumas') nt WHERE nt.column_value=0; Exemple : DELETE d'un objet dans une collection : UPDATE d'un objet dans une collection UPDATE THE (SELECT i.lspecialites FROM tintervenant i WHERE i.pknom='dumas') nt SET nt.technologie='sgbdro' WHERE nt.domaine='bd'; 0. Insertion de collections à partir de requêtes SELECT Les constructeurs d'objets sont utilisables dans les instructions de type INSERT... VALUES, mais ne peuvent être utilisés dans les instructions de type INSERT... SELECT. Pour ces dernières une autre méthode de construction est nécessaire. Syntaxe : Insérer une collection d'objets depuis une table Soient les tables tro et t définies par le schéma RO ci-après. type col : collection de <string> tro(a_obj:col) t(a:string) L'instruction suivante permet d'insérer le contenu de l'attribut a pour tous les enregistrements de t dans un seul attribut a_obj d'un seul enregistrement de tro sous la forme d'une collection. INSERT INTO tro (a_objet) VALUES (CAST(MULTISET(SELECT a FROM t ) AS col) L'instruction CAST (...) AS <type> permet de renvoyer un type donné à partir d'une expression. L'instruction MULTISET (...) permet de renvoyer une collection à partir d'une liste de valeurs.

Théorie : RO, SQL, tables imbriquées, tables objets, passage UML vers RO Méthode : Approche générale Soit la table tro définie par le schéma RO ci-après. Elle contient un attribut clé (pk_id) et un attribut qui est une collection (a_obj). type col : collection de <string> tro(#pk_id:string, a_obj:col) Soit la table tr définie par le schéma relationnel ci-après. tr(a:string, b:string) a b a b a b a b a b Tableau Extrait de tr Si l'on souhaite insérer le contenu de tr dans tro de telle façon que les valeurs de a correspondent à pk_id et celles de b à obj_a, en insérant une ligne pour chaque valeur ax et que tous les bx correspondant soient stockés dans la même collection, il faut exécuter une requête INSERT... SELECT qui fait appel aux instructions CAST et MULTISET. 0 a a INSERT INTO tro (pk_id, a_obj) SELECT a, CAST( MULTISET( SELECT b FROM tr tr WHERE tr.a= tr.a) AS col) FROM tr tr; (b, b, b) (b, b) Tableau Extrait de tro après exécution de la requête INSERT D. Les tables objets dans le modèle relationnel-objet Objectifs Connaître l'extension du LDD pour déclarer des tables objets Connaître l'extension du LMD pour naviguer des tables objets

Théorie : RO, SQL, tables imbriquées, tables objets, passage UML vers RO. Définition de tables objets (modèles et LDD) Définition Une table peut être définie en référençant un type de données plutôt que par des instructions LDD classiques. On parle alors de table objet. Synonymes : table-objet, table d'objets Syntaxe : Modèle logique nom_table de nom_type (#attributs_clés) Syntaxe : LDD SQL CREATE TABLE nom_table OF nom_type ( PRIMARY KEY(attribut), attribut NOT NULL, UNIQUE (attribut) FOREIGN KEY (attribut) REFERENCES... Il est possible, sur une table ainsi définie, de spécifier les mêmes contraintes que pour une table créée avec une clause CREATE TABLE (contraintes de table). Ces contraintes doivent être spécifiées au moment de la création de la table, et non au moment de la création du type (bien que la définition de type permet de spécifier certaines contraintes, comme NOT NULL). Fondamental : OID Les enregistrements d'une table-objet peuvent être identifiés par un OID Fondamental : Méthodes Des méthodes peuvent être associées à une table-objet. Complément : Héritage Cette modalité de définition de schéma permet de profiter de l'héritage de type pour permettre l'héritage de schéma de table. Exemple 0 CREATE OR REPLACE TYPE typintervenant AS OBJECT( pknom varchar(0), prenom varchar(0) CREATE TABLE tintervenant OF typintervenant ( PRIMARY KEY(pknom), prenom NOT NULL. Les OID (identificateurs d'objets) Le modèle relationnel-objet permet de disposer d'identificateurs d'objet (OID ).

Théorie : RO, SQL, tables imbriquées, tables objets, passage UML vers RO Une table objet dispose d'un OID pour chacun de ses tuples. Caractéristiques L'OID est une référence unique pour toute la base de données qui permet de référencer un enregistrement dans une table objets. L'OID est une référence physique (adresse disque) construit à partir du stockage physique de l'enregistrement dans la base de données. Avantages Permet de créer des associations entre des objets sans effectuer de jointure (gain de performance). Fournit une identité à l'objet indépendamment de ses valeurs (clé artificielle). Fournit un index de performance maximale (un seul accès disque). Permet de garder en mémoire des identificateurs uniques dans le cadre d'une application objet, et ainsi gérer la persistance d'objets que l'on ne peut pas garder en mémoire, avec de bonnes performances (alors que sinon il faudrait exécuter des requêtes SQL pour retrouver l'objet). Inconvénient Plus de séparation entre le niveau logique et physique. L'adresse physique peut changer si le schéma de la table change (changement de la taille d'un champ par exemple) Manipulation des données plus complexes, il faut un langage applicatif au dessus de SQL pour obtenir, stocker et gérer des OID dans des variables. Méthode : Cadre d'usage L'usage d'oid est pertinent dans le cadre d'applications écrites dans un langage objet, manipulant un très grand nombre d'objets reliés entre eux par un réseau d'associations complexe. En effet si le nombre d'objets est trop grand, les objets ne peuvent tous être conservés en mémoire vive par l'application objet qui les manipule. Il est alors indispensable de les faire descendre et remonter en mémoire régulièrement. Or dans le cadre d'un traitement portant sur de très nombreux objets, la remonté en mémoire d'un objet est un point critique en terme de performance. A fortiori si l'identification de l'objet à remonter demande une interrogation complexe de la BD, à travers de nombreuses jointures. Le fait d'avoir conservé en mémoire un OID permet de retrouver et de recharger très rapidement un objet, sans avoir à le rechercher à travers des requêtes SQL comportant des jointures et donc très couteuses en performance. Remarque : Débat La communauté des BD est plutôt contre les OID, qui rompent avec la séparation entre manipulation logique et stockage physique des données. La communauté objet est à l'origine de l'intégration des OID dans SQL, en tant qu'ils sont une réponse au problème de persistance dans les applications objets.. Références entre enregistrements avec les OID Les OID peuvent être une alternative aux clés étrangères pour référencer des 0

Théorie : RO, SQL, tables imbriquées, tables objets, passage UML vers RO enregistrements. Syntaxe : Modèle logique Dans une définition de table ou de type : attribut =>o nom_table_d_objets Syntaxe : LDD SQL CREATE TYPE type_objet AS OBJECT... CREATE TABLE table OF type_objet... CREATE TABLE table (... clé_étrangère REF type_objet, SCOPE FOR (clé_étrangère) IS table, Remarque : SCOPE FOR Renforce l'intégrité référentielle en limitant la portée de la référence à une table particulière (alors que REF seul permet de pointer n'importe quel objet de ce type) Exemple 0 CREATE OR REPLACE TYPE typcours AS OBJECT( pkannee number(), pknum number(), titre varchar(0), type char(), refintervenant REF typintervenant, debut date, MEMBER FUNCTION fin RETURN date CREATE TABLE tcours OF typcours ( CHECK (pkannee>000 and pkannee<00), type NOT NULL, CHECK (type='c' or type='td' or type='tp'), refintervenant NOT NULL, SCOPE FOR (refintervenant) IS tintervenant, PRIMARY KEY(pkannee, pknum). Insertion de références par OID (INSERT) Pour faire une référence avec un OID, il est nécessaire de récupérer l'oid correspondant à l'enregistrement que l'on veut référencer. L'OID est accessible grâce à la syntaxe REF en SQL. Syntaxe : REF SELECT REF(alias) FROM nom_table alias

Théorie : RO, SQL, tables imbriquées, tables objets, passage UML vers RO 000000DB0EF0AFFA0BDE0BCBABEA AF0C0000000 Syntaxe : Insertion de données en SQL INSERT INTO table (champs,..., clé_étrangère) SELECT 'valeur',..., REF(alias) FROM table alias WHERE clé_table='valeur'; Syntaxe : Insertion de données en PLSQL 0 DECLARE variable REF type_objet; BEGIN SELECT REF(alias) INTO variable FROM table alias WHERE clé_table='valeur'; INSERT INTO tcours (champs,..., clé_étrangère) VALUES ('valeur',..., variable END; Exemple 0 DECLARE refi REF typintervenant; BEGIN INSERT INTO tintervenant (pknom, prenom) VALUES ('CROZAT', 'Stéphane' SELECT REF(i) INTO refi FROM tintervenant i WHERE pknom='crozat'; INSERT INTO tcours (pkannee, pknum, titre, type, debut, refintervenant) VALUES ('00',, 'Introduction','C', '0-JAN-00', refi INSERT INTO tcours (pkannee, pknum, titre, type, debut, refintervenant) VALUES ('00',, 'Modélisation','TD', '0-JAN-00', refi END;. Manipulation d'oid (SELECT) Syntaxe : Navigation d'objets La référence par OID permet la navigation des objets sans effectuer de jointure, grâce à la syntaxe suivante : SELECT t.reference_oid.attribut_table FROM table t;

Théorie : RO, SQL, tables imbriquées, tables objets, passage UML vers RO Exemple SELECT c.pkannee, c.pknum, c.refintervenant.pknom FROM tcours c PKANNEE PKNUM REFINTERVENANT.PKNOM ------- ----- -------------------00 CROZAT 00 CROZAT. Méthodes de table objet Définition : Méthodes de table Si le type sur lequel s'appuie la création de la table définit des méthodes, alors les méthodes seront associées à la table (méthodes de table). Il sera possible d'accéder à ces méthodes de la même façon que l'on accède aux attributs (projection, sélection...). Syntaxe : Accès aux méthodes d'une table objet SELECT t.m(), t.m()... FROM table t... Attention L'utilisation d'un alias est obligatoire pour accéder aux méthodes. Exemple 0 CREATE OR REPLACE TYPE BODY typcours IS MEMBER FUNCTION fin RETURN DATE IS BEGIN RETURN SELF.debut + ; END; END; SELECT c.pkannee, c.pknum, c.fin() FROM tcours c;. Méthodes et SELF SELF Lorsque l'on écrit une méthode on a généralement besoin d'utiliser les attributs propres (voire d'ailleurs les autres méthode), de l'objet particulier que l'on est en train de manipuler. On utilise pour cela la syntaxe SELF qui permet de faire référence à l'objet en cours.

Théorie : RO, SQL, tables imbriquées, tables objets, passage UML vers RO Syntaxe : SELF self.nom_attribut self.nom_méthode(...) Exemple 0 : Total d'une facture MEMBER FUNCTION total RETURN number IS t number; BEGIN SELECT sum(f.qte) INTO t FROM facture f WHERE f.num=self.num; RETURN t; END total; Remarque : SELF implicite Dans certains cas simples, lorsqu'il n'y a aucune confusion possible, SELF peut être ignoré et le nom de l'attribut ou de la méthode directement utilisé. Il est toutefois plus systématique et plus clair de mettre explicitement le self. Exemple : Exemple de SELF implicite MEMBER FUNCTION adresse RETURN varchar IS BEGIN RETURN num rue ville; END;. Héritage et réutilisation de types Définition : Héritage de type Un type de données utilisateur peut hériter d'un autre type de données utilisateur. Syntaxe Type sous_type hérite de type : < attributs et méthodes spécifiques > Remarque : Héritage de schéma de table Pour qu'une table hérite du schéma d'une autre table, il faut définir les tables depuis des types. L'héritage entre les types permet ainsi l'héritage entre les schémas de table. Attention L'héritage de schéma de table n'est utile que dans les cas de transformation de l'héritage au niveau conceptuel par un héritage par les classes filles au niveau logique.

Théorie : RO, SQL, tables imbriquées, tables objets, passage UML vers RO E. Le passage conceptuel vers relationnel-objet Objectifs Savoir déduire un modèle logique relationnel-objet depuis un modèle conceptuel E-A ou UML. Intégrer les apports du modèle relationnel-objet par rapport au relationnel dans ce processus. Cette partie permet de traiter la traduction d'un modèle conceptuel UML ou E-A en modèle relationnel-objet. Le modèle E-A étendu est bien plus adapté au relationnel-objet que le modèle E-A classique.. Classe Pour chaque classe (ou entité), créer un type d'objet avec les attributs de la classe (ou entité). Créer une table d'objets de ce type pour instancier la classe (ou entité), en ajoutant les contraintes d'intégrité. Remarque : Table d'objet La fait d'instancier la classe (l'entité) via une table d'objets plutôt qu'une relation classique, permet l'accès à l'héritage de type, à l'implémentation des méthodes et éventuellement à l'usage d'oid à la place de clés étrangères classiques. Si aucun de ces aspects n'est utilisé, il est possible d'instancier directement la classe (l'entité) en table. Mais le passage par un type est a priori plus systématique. Remarque : Mapping des méthodes Si le modèle conceptuel autorise l'expression de méthodes (UML ou extension de E-A ), alors on ajoute la définition de ces méthodes sur le type d'objet créé pour de chaque classe (ou entité).. Un film classe Question [Solution n p ] Proposer un modèle RO correspondant au modèle UML. Film (classe)

Théorie : RO, SQL, tables imbriquées, tables objets, passage UML vers RO. Attributs et méthodes Attributs composites Pour chaque type d'attribut composé, créer un type d'objet. Attributs multi-valués Pour chaque attribut multi-valué créer une collection du type de cet attribut. Remarque : Attributs composites multi-valués Si l'attribut multi-valué est composite, alors créer une collection d'objets. Attributs dérivés te méthodes Pour chaque attribut dérivé et chaque méthode créer une méthode associée au type d'objet de la classe (l'entité).. Un film avec des attributs Question [Solution n p ] Proposer un modèle RO correspondant au modèle UML. Film (attribut multi-valué). Un film méthodique Question [Solution n p ] Proposer un modèle RO correspondant au modèle UML. Film (méthode). Un film vraiment méthodique Question [Solution n p ] Proposer une implémentation SQL sous Oracle correspondant au modèle UML. La méthode DureeTournage sera implémentée de façon à retourner un nombre entier de jours.

Théorie : RO, SQL, tables imbriquées, tables objets, passage UML vers RO Film (méthode) Indices : On pourra utiliser une fonction duree(debut,fin) qui retourne le nombre de jours entre deux dates. On fera un usage explicite de SELF.. Association :N et : Les associations :N et : sont gérées comme en relationnel. On peut néanmoins favoriser l'usage d'objets pour les clés étrangères composées de plusieurs attributs, ainsi que pour les attributs des classes d'association. Il est aussi possible de gérer la clé étrangère avec un OID à la place d'une clé étrangère classique.. Un film associatif Question [Solution n p ] Proposer un modèle RO correspondant au modèle UML, en utilisant les OID. Film (association :N). Association N:M Les associations N:M peuvent être gérées comme en relationnel. Il est aussi possible de gérer ces relations, en utilisant une collection de références (une collection de clés étrangères) (NB : on favorise ainsi une des deux relations). Il est aussi possible de gérer ces relations en utilisant un OID comme clé étrangère. Il est aussi possible de gérer ces relations en utilisant une collection de référence OID. Remarque : Collection de clés étrangères Oracle n'autorise pas (à ma connaissance...) la spécification de contraintes

Théorie : RO, SQL, tables imbriquées, tables objets, passage UML vers RO d'intégrité référentielle dans une table imbriquée. Ce qui limite l'utilisation de telles tables pour gérer des relations N:M avec des collections de clés étrangères. Par contre cela fonctionne avec des références à des OID. 0. Un film très associatif Question [Solution n p ] Proposer un modèle RO correspondant au modèle UML, en utilisant les OID, mais pas de table imbriquée. Film (association M:N). Un film très associatif, le retour Question [Solution n p ] Proposer un modèle RO correspondant au modèle UML, en utilisant les OID et en utilisant une table imbriquée. Film (association M:N) Indice : Les films étant le centre de notre BD, c'est dans cette table que l'on imbriquera les références.

Théorie : RO, SQL, tables imbriquées, tables objets, passage UML vers RO. Composition En RO, les compositions sont gérées avec le modèle imbriqué, à l'instar des attributs composés et multi-valués : en effet par définition l'élément composant ne peut être partagé par plusieurs composites, le modèle imbriqué n'introduit donc pas de redondance.. Créer un type correspondant au schéma de la table des composants. Créer une collection de ce type. Imbriquer cette collection dans la table des composites. Un film bien composé Question [Solution n p ] Proposer un modèle RO correspondant au modèle UML. Film (composition). Héritage L'héritage est géré comme en relationnel classique. En cas d'héritage par les classes filles, l'on peut profiter de l'héritage de type pour éliminer la redondance dans la définition des schémas.. RO sans fil [0 minutes] L'on souhaite réaliser une base de données permettant de gérer tous les relais Wifi sur un site d'entreprise. Chaque relais est identifié par une coordonnée géographique (de type CooT, dont le code est fourni ci-après) et fait référence à un modèle. On associe également à chaque relais son prix d'achat. Chaque modèle est décrit par une marque et un type et possède une puissance. CREATE TYPE CooT AS OBJECT ( latitude real, longitude real Question [Solution n p ] Proposez une implémentation RO SQL sous Oracle exploitant les tables-objets et le modèle imbriqué (vous pouvez faire un MCD et un MLD préalablement pour vous aider).

Théorie : RO, SQL, tables imbriquées, tables objets, passage UML vers RO Question [Solution n 0 p ] Insérer les données suivantes dans votre base de données : Un modèle de marque SuperWif et de type X, puissance mw Deux relais de ce modèle respectivement aux coordonnées (. ;.) et (. ;.0), achetés chacun 00. Question [Solution n p ] Écrivez deux requêtes permettant de renvoyer respectivement : La puissance du relais situé à la coordonnée (. ;.) La moyenne des prix des relais pour chaque modèle (type et marque) 0

Application : Relationnel-Objet II - II Zoologie Des voitures et des hommes Passage conceptuel logique 0 Super-héros relationnels-objets A. Zoologie [ minutes] Un zoologue souhaite réaliser une base de données pour l'étude des chaînes alimentaires. Il souhaite étudier deux populations d'animaux : les carnivores et les herbivores, sachant que les carnivores ne mangent que des herbivores et que les herbivores, évidemment, ne mangent pas d'animaux. La base gère donc des espèces d'animaux, identifiées par leur nom (Lion, Biches, etc.). Les carnivores et les herbivores sont étudiés selon deux paramètres communs : taille moyenne et poids moyen. Pour les herbivores, on étudie en plus le poids moyen de végétaux mangé par jour. Bien entendu le zoologue souhaite connaître également le poids moyen mangé par jour pour chaque espèce de carnivore et pour chaque espèce d'herbivore qu'il mange. Il souhaite enfin pouvoir obtenir très facilement le poids total mangé par un carnivore par jour (donc en sommant le poids de chaque herbivore mangé par jour). On fera apparaître cette opération sur le modèle. Question [Solution n p ] Réalisez le modèle conceptuel du problème posé. Question [Solution n p ] Réalisez le modèle logique relationnel-objet du problème (on utilisera les OID pour toutes les tables référencés). Question [Solution n p ] Implémentez le modèle relationnel-objet en SQL sous Oracle (sans implémenter de méthode).

Application : Relationnel-Objet Question [Solution n p ] Implémentez la méthode permettant de calculer le poids total d'herbivore mangé par un carnivore par jour. Question [Solution n p ] Écrivez une requête qui permet de retourner tous les carnivores, triés par leur poids, avec le poids total d'herbivore qu'ils mangent par jour. Question [Solution n p ] Proposez et implémentez une solution d'optimisation pour améliorer les performances de la requête précédente. Justifiez votre choix et expliquez, éventuellement à l'aide d'un petit schéma ou d'un exemple, pourquoi l'exécution sera améliorée. B. Des voitures et des hommes [0 minutes] Soit le diagramme de classe UML suivant : Image Des voitures... Question [Solution n p ] A partir de ce modèle conceptuel établissez un modèle logique en relationnel-objet, sachant que le cœur du problème concerne la gestion des voitures. Indice : On utilisera des OID pour disposer de clés artificielles.

Application : Relationnel-Objet Question [Solution n p ] Proposer une implémentation sous Oracle de votre modèle logique. C. Passage conceptuel logique [ minutes] Image Modèle UML On pose que l'héritage est exclusif (un B ne peut pas être aussi un C) et que A est une classe abstraite (il n'existe pas de A qui ne soit ni un B ni un C) Question [Solution n 0 p 0] Proposez un modèle logique relationnel correspondant au modèle conceptuel UML. Question [Solution n p ] Si vous avez fait le bon choix de traduction de la relation d'héritage, une des classes du modèle conceptuel ne doit pas apparaître dans le modèle relationnel. Proposez malgré tout l'opération relationnelle qui permet de calculer la vue de cette classe. Question [Solution n p ] Proposez le code SQL permettant l'implémentation du modèle relationnel. Question [Solution n p ] Proposez le code SQL permettant l'implémentation de la vue. Question Proposez un modèle conceptuel UML. logique relationnel-objet [Solution n p ] correspondant au modèle

Application : Relationnel-Objet On utilisera les OID. NB : On notera que la création de la vue est identique au cas relationnel, aussi l'on ne s'en préoccupera plus pour la suite de cet exercice. Question [Solution n p ] Proposez le code SQL permettant l'implémentation du modèle relationnel-objet. NB : On utilisera les OID et les collections seront implémentées sous forme de NESTED TABLE. D. Super-héros relationnels-objets [0 minutes] Modèle UML Figurines GARVEL Question [Solution n p ] Transformer le modèle UML en modèle relationnel-objet. On utilisera les OID et le nested model. Question [Solution n p ] Donner, en SQL, la liste de tous les personnages qui sont basés au repaire "La Ratcave". Question [Solution n p ] Donner, en SQL, la couleur des torses des personnages habitant la "GARVEL Tower", pilotant des véhicules aquatiques et ayant comme mentor Superman.