II- Relationnel
14. Correspondance entre UML et relationnel
Modèle UML Modèle relationnel
Classe instanciable Relation
Classe abstraite Rien
Objet Nuplet
Attribut simple Attribut atomique
Attribut composite Ensemble d'attributs
Attribut multivalué Relation
Attribut dérivé Procédure stockée ou contrainte dynamique
Méthode Procédure stockée
Association 1:N Attributs
Association N:M Relation
Association de degré 3 ou supérieur Relation
Composition Attributs
Classe d'association Attributs
Occurence d'une association Nuplet
Héritage Vues
TAB. 12 : SYNTHÈSEUMLVERS RELATIONNEL
Section A5. Pratique du passage UML vers relationnel
Exercice n°8. Gestion de parc informatique
Vous avez en charge la réalisation d'un modèle de base de données pour la gestion d'un parc informatique.
L'analyse des besoins révèlent les informations suivantes : tout matériel informatique est identifié de façon unique par un numéro de série et est décrit par une désignation. Il existe trois types de matériel informatique : les PC, les serveurs et les imprimantes. Pour les PC les informations que l'on veut gérer sont la taille de la mémoire vive et la cadence du micro-processeur, pour les serveurs on veut gérer leur volume de disque dur et pour les imprimante leur résolution maximale d'impression. On veut également gérer les connections réseau sachant que tout PC peut être relié à un ou plusieurs serveur et que chaque serveur sert bien entendu plusieurs PC ; et qu'un PC peut être rélié à une imprimante, qui est également utilisée par plusieurs PC. Quand un PC est relié à un serveur, on veut gérer le quota de disque dont il dispose sur ce serveur.
Question1
Réaliser le modèle conceptuel E-A ou UML de ce problème.
Question2
Réalisez le passage au modèle logique relationnel.
Partie B. Algèbre relationnel
Objectifs pédagogiques
Connaître les fondements du modèle relationnel.
Savoir effectuer le passage d'un schéma conceptuel à un schéma relationnel. Maîtriser l'algèbre relationnelle.
Section B1. Algèbre relationnelle
Concepts manipulatoires
La représentation d'information sous forme relationnelle est intéressante car les fondements mathématiques du relationnel, outre qu'ils permettent une modélisation logique simple et puissante, fournissent également un ensemble de concepts pour manipuler formellement l'information ainsi modélisée.
Ainsi une algèbre relationnelle, sous forme d'un ensemble d'opérations formelles permet d'exprimer des questions, ou requêtes, posées à une représentation relationnelle, sous forme d'expressions algébriques.
L'algèbre relationnelle est composée par les cinq opérateurs de base et les trois opérateurs additionnels suivants : ♦ Opérateurs de base - Union - Différence - Projection - Restriction - Produit cartésien ♦ Opérateurs additionels - Intersection - Jointure - Division
Remarque : Algèbre relationnelle et SQL
Les questions formulées en algèbre relationnelle sont la base du langage SQL, qui est un langage informatique d'expressions permettant d'interroger une base de données relationnelle.
Remarque : Algèbre relationnelle et objet
L'algèbre relationnelle est étendue à une algèbre permettant de manipuler des objets autres, et a priori plus complexes, que des relations. Cette algèbre étendue permet l'interrogation d'informations modélisées sous forme relationnelle-objet.
1. Opérateurs ensemblistes
Attention
Les opérateurs ensemblistes sont des relations binaires (c'est à dire entre deux relations) portant sur des relations de
même schéma.
Union
L'union de deux relations R1 et R2 de même schéma produit une relation R3 de même schéma constituée de l'ensemble des tuples appartenant à R1 et/ou à R2.
Différence
La différence entre deux relations R1 et R2 de même schéma produit une relation R3 de même schéma constituée de l'ensemble des tuples de R1 n'appartenant pas à R2. Notons que la différence entre R1 et R2 n'est pas égale à la différence entre R2 et R1.
Intersection
L'intersection de deux relations R1 et R2 de même schéma produit une relation R3 de même schéma constituée de l'ensemble des tuples appartenant à la fois à R1 et à R2. Notons que l'intersection n'est pas une opération de base, car elle est équivalent à deux opérations de différence successives.
Exemple
Soit les deux relations suivantes :
Homme (Nom, Prénom, Age) Femme (Nom, Prénom, Age)
Soit les tuples suivants pour ces deux relations respectivement :
(Dupont, Pierre, 20) (Durand, Jean, 30) (Martin, Isabelle, 20) (Tintin, Hélène, 30)
Soit l'opération suivante :
R = Union (Homme, Femme)
On obtient alors la relation R composée des tuples suivants :
(Dupont, Pierre, 20) (Durand, Jean, 30) (Martin, Isabelle, 20) (Tintin, Hélène, 30)
La différence entre Homme et Femme (respectivement entre Femme et Homme) renvoie la relation Homme (respectivement Femme), car aucun tuple n'est commun aux deux relations. L'intersection entre Homme est Femme est vide, pour la même raison.
Remarque : Union externe
Il est possible de définir une opération d'union externe, qui permet de réaliser l'union de deux relations de schéma différent, en ramenant les relations aux mêmes schémas, et en les complétant avec des valeurs nulles.
2. Projection
Projection
La projection est une opération unaire (c'est à dire portant sur une seule relation). La projection de R1 sur une partie de ses attributs {A1, A2, ...} produit une relation R2 dont le schéma est restreint aux attributs mentionnés en opérande, comportant les mêmes tuples que R1, et dont les doublons sont éliminés.
Remarque : Elimination des doublons
Après suppression d'une partie des attributs du schéma, la relation peut comporter des doublons. Etant donné que l'on ne pourrait plus identifier ces doublons les uns par rapport aux autres, la seule solution sensée est donc de considérer que deux doublons sont équivalents, et donc de n'en garder qu'un seul dans la relation résultante.
Exemple
Soit la relation suivante :
Personne (Nom, Prénom, Age)
Soit les tuples suivants :
(Dupont, Pierre, 20) (Durand, Jean, 30)
Soit l'opération suivante :
R = Projection (Personne, Nom, Age)
On obtient alors la relation R composée des tuples suivants :
(Dupont, 20) (Durand, 30)
3. Restriction
Restriction
La restriction est une opération unaire (c'est à dire portant sur une seule relation). La restriction de R1, étant donnée une condition C, produit une relation R2 de même schéma que R1 et dont les tuples sont les tuples de R1 vérifiant la condition C.
Exemple
Soit la relation suivante :
Personne (Nom, Prénom, Age)
Soit les tuples suivants :
(Dupont, Pierre, 20) (Durand, Jean, 30)
Soit l'opération suivante :
R = Restriction (Personne, Age>25)
On obtient alors la relation R composée de l'unique tuple restant suivant :
4. Produit
Produit cartésien
Le produit cartésien est une opération binaire (c'est à dire portant sur deux relations). Le produit de R1 par R2 (équivalent au produit de R2 par R1) produit une relation R3 ayant pour schéma la juxtaposition de ceux des relations R1 et R2 et pour tuples l'ensemble des combinaisons possibles entre les tuples de R1 et ceux de R2. ♦ Synonyme : Produit.
Remarque
Le nombre de tuples résultant du produit de R1 par R2 est égal au nombre de tuples de R1 multiplié par le nombre de tuples de R2.
Exemple
Soit les deux relations suivantes :
Homme (Nom, Prénom, Age) Femme (Nom, Prénom, Age)
Soit les tuples suivants pour ces deux relations respectivement :
(Dupont, Pierre, 20) (Durand, Jean, 30) (Martin, Isabelle, 15) (Tintin, Hélène, 40)
Soit l'opération suivante :
R = Produit (Homme, Femme)
On obtient alors la relation R composée des tuples suivants :
(Dupont, Pierre, 20, Martin, Isabelle, 15) (Durand, Jean, 30, Martin, Isabelle, 15) (Dupont, Pierre, 20, Tintin, Hélène, 40) (Durand, Jean, 30, Tintin, Hélène, 40)
5. Jointure
Jointure
La jointure est une opération binaire (c'est à dire portant sur deux relations). La jointure de R1 et R2, étant donné une condition C portant sur des attributs de R1 et de R2, de même domaine, produit une relation R3 ayant pour schéma la juxtaposition de ceux des relations R1 et R2 et pour tuples l'ensemble de ceux obtenus par concaténation des tuples de R1 et de R2, et qui vérifient la condition C.
Exemple
Soit les deux relations suivantes :
Homme (Nom, Prénom, Age) Enfant (Nom, Prénom, Age)
Soit les tuples suivants pour ces deux relations respectivement :
(Dupont, Pierre, 20) (Durand, Jean, 30) (Dupont, Georges, 1) (Dupont, Jacques, 3)
Soit l'opération suivante :
R = Jointure (Homme, Enfant, Homme.Nom=Enfant.Nom)
On obtient alors la relation R composée des tuples suivants :
(Dupont, Pierre, 20, Dupont, Georges, 1) (Dupont, Pierre, 20, Dupont, Jacques, 3)
Remarque : Opération additionnelle
La jointure n'est pas une opération de base, elle peut être réécrite en combinant le produit et la restriction.
6. Jointure naturelle
Jointure naturelle
La jointure naturelle entre R1 et R2 est une jointure pour laquelle la condition est l'égalité entre les attributs de même nom de R1 et de R2. Il est donc inutile de spécifier la condition dans une jointure naturelle, elle reste toujours implicite.
Exemple
Soit deux relations R1 (A, B, C) et R2 (A, D), l'opération Jointure(R1,R2,R1.A=R2.A) est équivalente à l'opération JointureNaturelle(R1,R2).
Remarque
Pour appliquer une jointure naturelle, il faut que les deux relations opérandes aient au moins un attribut ayant le même nom en commun.
7. Jointure externe
La jointure est une opération qui entraîne la perte de certains tuples : ceux qui appartiennent à une des deux relations opérandes et qui n'ont pas de correspondance dans l'autre relation. Il est nécessaire dans certains cas de palier cette lacune, et l'on introduit pour cela la notion de jointure externe.
Jointure externe
La jointure externe entre R1 et R2 est une jointure qui produit une relation R3 à laquelle on ajoute les tuples de R1 et de R2 exclus par la jointure, en complétant avec des valeurs nulles pour les attributs de l'autre relation.
Jointure externe gauche
La jointure externe gauche entre R1 et R2 est une jointure externe pour laquelle on ajoute seulement les tuples de R1 (c'est à dire la relation de gauche) ayant été exclus.
♦ Synonyme : Jointure gauche. Jointure externe droite
La jointure externe droite entre R1 et R2 est une jointure externe pour laquelle on ajoute seulement les tuples de R2 (c'est à dire la relation de droite) ayant été exclus.
Bien entendu une jointure externe droite peut être réécrite par une jointure externe gauche (et réciproquement) en substituant les relations opérandes R1 et R2.
♦ Synonyme : Jointure droite. Exemple
Soit les deux relations suivantes :
Homme (Nom, Prénom, Age) Enfant (Nom, Prénom, Age)
Soit les tuples suivants pour ces deux relations respectivement :
(Dupont, Pierre, 20) (Durand, Jean, 30) (Dupont, Georges, 1) (Martin, Isabelle, 15)
Soit l'opération suivante :
R = JointureExterne (Homme, Enfant, Homme.Nom=Enfant.Nom)
On obtient alors la relation R composée des tuples suivants :
(Dupont, Pierre, 20, Dupont, Georges, 1) (Durand, Jean, 30, Null, Null, Null) (Null, Null, Null, Martin, Isabelle, 15)
Une jointure externe gauche n'aurait renvoyé que les deux premiers tuples et une jointure externe droite n'aurait renvoyée que le premier et le troisième tuple.
8. Division
Division
La division est une opération binaire (c'est à dire portant sur deux relations). La division de R1 par R2, sachant que R1 et R2 ont au moins un attribut commun (c'est à dire de même nom et de même domaine), produit une relation R3 qui comporte les attributs appartenant à R1 mais n'appartenant pas à R2 et l'ensemble des tuples qui concaténés à ceux de R2 donnent toujours un tuple de R1.
Exemple
Soit les deux relations suivantes :
Homme (Nom, Prénom, Métier) Métier (Metier)
Soit les tuples suivants pour ces deux relations respectivement :
(Dupont, Pierre, Ingénieur) (Dupont, Pierre, Professeur) (Durand, Jean, Ingénieur) (Ingénieur)
(Professeur)
Soit l'opération suivante :
R = Division (Homme, Métier)
On obtient alors la relation R composée des tuples suivants :
(Dupont, Pierre)
Remarque : Réponse aux questions : Pour tous les ...
La division permet de répondre aux questions du type : "Donnez toutes les personnes qui pratiquent tous les métiers de la relation métier".
Remarque : Opération additionnelle
La division n'est pas une opération de base, elle peut être réécrite en combinant le produit, la restriction et la différence.
9. Proposition de notations
Il existe plusieurs syntaxes pour écrire des opérations d'algèbre relationnelle, certaines inspirées de l'algèbre classiques, d'autres reposant sur des notations graphiques. Nous proposons une notation fonctionnelle qui a le mérite d'être facile à écrire et d'être lisible. Si cette notation peut parfois perdre en simplicité, lorsqu'elle concerne un nombre élevé d'opérateurs, il est possible de décomposer une opération compliquée afin de l'alléger.
Syntaxe
R = Union (R1, R2) R = Différence (R1, R2) R = Intersection (R1, R2) R = Projection (R1, A1, A2, ...) R = Restriction (R1, condition) R = Produit (R1, R2) R = Jointure (R1, R2, condition) R = JointureNaturelle (R1, R2) R = JointureExterne (R1, R2, condition) R = JointureGauche (R1, R2, condition) R = JointureDroite (R1, R2, condition) R = Division (R1, R2)
Exemple : Notation synthétique
R = Projection( Restriction(R1, A1=1 AND A2=2), A3)
Exemple : Notation décomposée
R' = Restriction(R1, A1=1 AND A2=2) R = Projection (R', A3)
Exercice n°9. Opérateurs de base et additionnels
Réécrivez les opérateurs additionnels suivants, à partir d'opérateurs de base :
Question1
Réécrivez Intersection à partir de Différence
Question2
Réécrivez Jointure à partir de Produit et Restriction
Question3
Réécrivez Division à partir de Produit, Restriction et Difference
Section B2. Pratique de l'algèbre relationnelle
Exercice n°10. Inviter ses amis
Une maîtresse de maison s'est constitué une base de données sur les personnes (probables) qu'elle invite et les plats qu'elle leur sert. Cette base de données est composée de trois relations :
♦ REPAS (date, invité) donne la liste des invités qui ont été reçus et à quelle date ♦ MENU (date, plat) donne le menu servi à chaque date
♦ PREFERENCE (personne, plat) donne pour chaque personne ses plats préférés N.B. : les attibuts "personne" et "invité" ont même domaine.
A l'aide de l'algèbre relationnelle exprimer les requêtes suivantes :
Question1
Quels sont les invités du repas du 01/05/97 ?
Question2
Quels sont les plats qui ont été servis à Alice ?
Question3
Quels sont les invités qui lors d'un repas ont eu au moins un de leur plat préféré ?
Question4
Quelles sont les personnes qui n'ont jamais été invitées ?
Question5
Quels sont les invités qui sont venus à tous les repas ?
Exercice n°11. Faire du Cinéma
On considère les deux relations suivantes :
LESFILMS (TITRE, PAYS,ANNEE, REALISATEUR, DUREE) LES ACTEURS (TITRE, ACTEUR)
où les attibuts ont les significations et les types suivants : ♦ TITRE : titre d'un film (chaîne 50 caractères)
♦ PAYS : pays d'où un film est originaire (chaîne 10 caractères) ♦ ANNEE : année de sortie du film (entier 4 chiffres)
♦ REALISATEUR : nom du réalisateur du film (chaîne 20 caractères) ♦ DUREE : durée du film en minutes (entier 3 chiffres)
♦ ACTEUR : nom d'acteur (chaîne 20 caractères)
La relation LESFILMS donne pour chaque film, identifié par son titre, le pays, l'année de sortie, réalisateur et la durée. La relation LESACTEURS donne pour chaque film l'ensemble des principaux acteurs.
A l'aide de l'algèbre relationnelle exprimer les requêtes suivantes :
Question1
Question2
Donnez les années de sortie des fims où a joué GABIN.
Question3
Trouver les acteurs qui ont tourné avec TRUFFAUT comme réalisateur.
Question4
Trouver tous les acteurs qui ont été partenaires de DENEUVE.
Question5
Lister les films dans lesquels le réalisateur est aussi acteur.
Question6
Lister les réalisateurs n'ayant joué comme acteurs que dans des films qu'ils ne réalisaient pas eux-mêmes.
Question7
Lister les réalisateurs ayant joué comme acteurs dans des fims qu'ils ne réalisaient pas eux-mêmes.
Question8
Donnez les acteurs qui jouent dans tous les fims de TRUFFAUT.
Exercice récapitulatif II. Une usine
Une usine cherche à modéliser sa production de véhicules et de moteurs :
♦ Les véhicules sont identifiés par un numéro d'immatriculation alphanumérique et caractérisés par une couleur, dont la dénomination est une chaîne de caractères. Chaque véhicule peut comporter un unique moteur et/ou un nombre quelconque de pneus.
♦ Chaque moteur est monté sur un et un seul véhicule et est identifié par le numéro d'immatriculation de celui-ci. Un moteur est caractérisé par une puissance, en chevaux.
♦ Tout pneu est monté sur un unique véhicule et est identifié localement par sa position sur ce véhicule (Dn pour les pneus de droite et Gn pour les pneus de gauche). Un pneu est caractérisé par un diamètre et une largeur en pouces.
♦ Les moteurs, les pneus et les véhicules sont fabriqués sous une marque. Les mêmes marques peuvent fabriquer indifféremment des moteurs, des pneus et/ou des véhicules, et un véhicule d'une certaine marque peut comporter un moteur et/ou des pneus de marque différente.
Question1
Réaliser le modèle E-A ou UML de ce problème en faisant apparaître les domaines et les clés candidates, ainsi que les éventuelles entités faibles.
Question2
Réaliser le passage au modèle relationnel, en faisant apparaître les clés primaires et les clés étrangères.
Question3
Ecrivez en algèbre relationnelle la question permettant de connaître les numéros d'immatriculation des voitures rouges sur lesquelles sont montées un moteur et au moins un pneu de même marque que la voiture.
Exercice récapitulatif II. Gestion d'une agence immobilière
Enoncé n°1
Une agence immobilière cherche à créer une base de données pour la gestion des biens immobiliers mis à sa disposition et pour l’exploitation statistique et/ou fiscale des informations accumulées.
Pour chaque logement on possède plusieurs informations comme l'adresse, le nom du propriétaire, le type (maison/appartement), le nombre de pièces, la surface habitable, l’état de l’habitation (neuf, bon état, très bon état, à rénover), l’objectif de gestion (vente, location), le prix de mise en vente ou de location mensuelle, la date de disponibilité, la ville, etc. Chaque propriété peut avoir un ou plusieurs garages. Ces derniers sont caractérisés par le type (box, emplacement numérotés, etc.) et dans certain cas peuvent avoir des adresses différentes de celle de la propriété.
Une personne, qui sera identifiée par son nom et son adresse, peut mettre en location ou en vente un de ses logements auprès de l’agence.
Un logement à vendre (resp. à louer) peut être acheté (resp. loué) par une personne. Pour chaque transaction de vente, l'agence touche une commission qui correspond à un pourcentage du prix de vente (qui est composé d’une valeur fixe à laquelle on additionne entre 3 et 5% en fonction du montant de la transaction et des négociations particulière). Un logement vendu ou loué est rendu indisponible pour d’autres éventuels clients. Un locataire peut donner son préavis, l’agence signalant alors le logement disponible dans un délai de trois mois.
L’agence organise et gère également les visites faites par ses clients (les acheteurs ou locataires potentiels).
Question1.1
Reformuler l'énoncé du problème sous la forme de règles claires afin de poser les connaissances sous une forme littérale. Formuler des hypothèses, si nécessaire, pour compléter les informations manquantes.
Question1.2
Réaliser le modèle Entité-Association du problème.
Repérer le domaine de valeur des propriétés. Repérer les clés. Repérer les entités de type faible. Répérer les attributs dérivés.
Question1.3
Réaliser le modèle relationnel en appliquant les règles de passage E-A vers relationnel. Indiquer les règles appliquées. Expliquer et détailler les cas particuliers.
Utiliser la notation textuelle du modèle relationnel, du type : RELATION (PROP1, PROP2, PROPn). Souligner la clé primaire (les propriétés concernées seront en premier dans la liste). Les clés étrangères seront placées en dernier dans la liste, et l'on indiquera par un "=>" à quelle relation elles font références. Indiquer dans un tableau pour chaque propriété, son domaine de valeur et les contraintes supplémentaires qui la concerne (existentielle, par rapport à d'autres propriétés du tuple, etc.),
Enoncé n°2
L'agence cherche à présent à interroger sa base de données, afin d'en exploiter les informations recueillies. Ecrire à l'aide de l'algèbre relationnelle les requêtes ci-après. On utilisera les notations suivantes : ♦ R = Restriction(Relation, Condition)
♦ R = Projection(Relation, Propriété1, Propriété2, ...) ♦ R = Jointure(Relation1, Relation2, Condition) ♦ R = JointureExterne(Relation1, Relation2, Condition) ♦ R = JointureNaturelle(Relation1, Relation2) ♦ R = Union(Relation1, Relation2) ♦ R = Difference(Relation1, Relation2) ♦ R = Intersection(Relation1, Relation2) ♦ R = Produit(Relation1, Relation2) Question2.1
Pour constituer un fichier client complet, lister toutes les personnes.
Question2.2
Pour relancer les anciens clients de l'agence, lister les noms et prénoms de tous les clients ayant effectué au moins une location ou un achat.
Question2.3
En vue d'une enquête de satisfaction et de suivi par courrier, lister les noms et adresses des propriétaires ayant loué des logements à Lyon avant l'année 2000.
Question2.4
En vue d'optimiser l'organisation du personnel et de préparer le passage aux 35 heures pour l'antenne de Compiègne, lister les jours pendant lesquels il y a eu au moins une visite pour des logements à Compiègne.
Question2.5
Pour répondre à une demande particulière d'un client exigeant, chercher, si cela existe, à quelles adresses on peut trouver des F6 neufs, disponibles avant le 31 novembre 2002, de plus de 150m2, avec garage à la même adresse, rue de la Paix à Paris.
Question2.6
Pour mettre en valeur l'activité de l'agence lors d'un conseil d'administration, préparer la liste de toutes les commissions réalisées pour des ventes supérieures à 500.000 euros.
Question2.7
Pour convaincre un propriétaire d'accepter une proposition d'achat inférieure à son prix de mise en vente, lister toutes les transactions (date, montant, prix de vente, nom du client et nom du propriétaire) pour lesquelles le montant de vente est inférieur de plus de 10% au prix de mise en vente.
Question2.8
Pour vérifier si quelques solutions idéales ne sont pas latentes, chercher les clients toujours en recherche (i.e. n'ayant jamais effectué de transaction) et habitant à une adresse à laquelle se trouve un logement disponible.
Question2.9
Pour leur faire des offres particulières, chercher les personnes qui sont à la fois clients et propriétaires.
Question2.10
Pour occuper votre temps pendant l'inactivité chronique du mois d'août, chercher les rues qui se retrouvent dans toutes les villes.
En résumé...
Schéma relationnel
Un schéma relationnel permet une formalisation d'un modèle logique.
Relation ou table
Sous-ensemble d'un produit cartésien
Clé
Attribut ou
colonne
Prend ses valeurs dans un domaine
Enregistrement
ou ligne
Pose une valeur (y compris la valeur "null"
pour chaque attribut