• Aucun résultat trouvé

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

Clé primaire

Indentifie de façon unique un enregistrement

Clé étrangère

Référence la clé primaire d'un tuple d'une autre relation

Cours

Documents relatifs