20
Geti2101 : Systèmes d’Information et Informatique Règles de traduction d’un diagramme declasses vers un diagramme relationnel Requêtes SQL

Geti2101 : Systèmes dInformation et Informatique Règles de traduction dun diagramme declasses vers un diagramme relationnel Requêtes SQL

Embed Size (px)

Citation preview

Page 1: Geti2101 : Systèmes dInformation et Informatique Règles de traduction dun diagramme declasses vers un diagramme relationnel Requêtes SQL

Geti2101 : Systèmes d’Information et Informatique

• Règles de traduction d’un diagramme declasses vers un diagramme relationnel

• Requêtes SQL

Page 2: Geti2101 : Systèmes dInformation et Informatique Règles de traduction dun diagramme declasses vers un diagramme relationnel Requêtes SQL

1. Règle1: présence de la cardinalité (?..1) d’un côté de l’association

– Chaque classe se transforme en une table– Chaque attribut de classe se transforme en un champs de table– L’identifiant de la classe qui est associée à la cardinalité (?..1) (ex:

Livre) devient le clé étrangère de l’autre classe (ex: Exemplaire)

Contrainte d’intégrité référentielle: CléEtrangère CléPrimaireEx: Exemplaire.Code-Livre Livre.Code-Livre

Livre

Code-LivreAuteurTitreEdition

Exemplaire

N°-ExemplaireLocalisation0..n1..1 0..n1..1

a l'exemplaireest un exemplaire du

Page 3: Geti2101 : Systèmes dInformation et Informatique Règles de traduction dun diagramme declasses vers un diagramme relationnel Requêtes SQL

Règle1 - Exemple

Livre Code-Livre Auteur Titre Edition 1 Chirac Titre1 Edition 1 2 Clinton Titre2 Edition 2 3 Eltsin Titre3 Edition 3 4 Blair Titre4 Edition 4 Exemplaire N°-Exemplaire Localisation Code-Livre 10 Localisation 1 1 20 Localisation 2 1 30 Localisation 1 2 40 Localisation 3 3 50 Localisation 4 5 ! ! !

Contrainte d’intégrité référentielle : Exemplaire.Code-Livre Livre.Code-Livre

•Quel est l’auteur de l’exemplaire dont le N°Exemplaire est 30 ?

•Quels sont les exemplaires (N°Exemplaire) du livre dont le CodeLivre est 1 ?

•Quel est l’auteur de l’exemplaire dont le N°Exemplaire est 50 ?

pas de sens !!!

Page 4: Geti2101 : Systèmes dInformation et Informatique Règles de traduction dun diagramme declasses vers un diagramme relationnel Requêtes SQL

2. Règle2: présence de (?..N) des deux côtés de l’association

– Chaque classe se transforme en une table– Chaque attribut de classe se transforme en un champs de table– L’association se transforme en une table. Cette table a comme

champs l’identifiant de chacune des deux classes, plus d’éventuels autres attributs.

Emprunte.Code-Personne Personne.Code-Personne Emprunte.Code-Livre Livre.Code-Livre

Personne

Code-PersonneNomPrenomAdresse

Livre

Code-LivreAuteurTitreEdition

0..n0..n

EmprunteEst emprunté par

0..n0..n

Emprunte

Code-EmprunteDateDate-De-Retour

Page 5: Geti2101 : Systèmes dInformation et Informatique Règles de traduction dun diagramme declasses vers un diagramme relationnel Requêtes SQL

2. Règle2: présence de (?..N) des deux côtés de l’association (idem sans la classe association)

T_Eleve.IdEleve T_0.IdEleve T_AnneeEtude.IdAnneeEtude T_0.IdAnneeEtude

EleveIdEleveNomPrenom

AnneeEtudeIdAnneeEtudeNom1..nn

suivre

1..nn

T_AnneeEtudeIdAnneeEtude : SMALLINTNom : SMALLINT

<<PK>> PK_T_AnneeEtude1()

T_0IdAnneeEtude : SMALLINTIdEleve : SMALLINT

<<PK>> PK_T_02()<<FK>> FK_T_00()<<FK>> FK_T_01()<<Index>> TC_T_00()<<Index>> TC_T_01()

10..* 10..*

T_EleveIdEleve : SMALLINTNom : SMALLINTPrenom : SMALLINT

<<PK>> PK_T_Eleve0()

1 0..*1 0..*

Page 6: Geti2101 : Systèmes dInformation et Informatique Règles de traduction dun diagramme declasses vers un diagramme relationnel Requêtes SQL

Règle2 - ExemplePersonne Code-Personne Prénom Nom Adresse 1 David Massart Adr 1 2 Stéphane Faulkner Adr 2 3 Mohamed Dahchour Adr 3 4 Pierre Dupont Adr 4 Livre Code-Livre Titre Auteur Edition 1 Happy Baby Book Kathelyn Ed1 2 LATEX Borceux Ed2 3 Principle of Database Ullman Ed3 Emprunte Code-Personne Code-Livre Date DateDeRetour Code-Emprunte 1 1 1/1/98 1/2/98 1 2 1 1/1/99 1/2/99 2 2 3 10/1/99 20/1/99 3 3 3 1/1/98 10/1/98 4 5 ! ! ! 2 1/6/98 1/7/98 5 4 9 ! ! ! 1/1/98 1/1/99 6

•Qui a emprunté le « Happy baby book » ?•Quels sont les livres (titres) qui sont empruntés par Stéphane Faulkner ?•Qui a emprunté le livre « LaTEX » ? pas de sens•Quels sont les livres (titres) qui sont empruntés par Pierre Dupont ? pas de sens

Contraintes d’intégrité référentielle : Emprunte.Code-Personne Personne.Code-Personne

Emprunte.Code-Livre Livre.Code-Livre

Page 7: Geti2101 : Systèmes dInformation et Informatique Règles de traduction dun diagramme declasses vers un diagramme relationnel Requêtes SQL

3. Règle3: présence d’une généralisation• Méthode 1:

– Créer une table avec tous les attributs des classes– Ajouter un attribut pour distinguer les types des

objets

Personne

Code-PersonneNomPrenomAdresse

Etudiant

NomaNote-Moyenne

Professeur

Salaire

{Professeur, Etudiant}

Page 8: Geti2101 : Systèmes dInformation et Informatique Règles de traduction dun diagramme declasses vers un diagramme relationnel Requêtes SQL

3. Règle3: présence d’une généralisation• Méthode 2:

– Créer une table pour chaque sous type, chaque table se compose des attributs génériques et d’attributs spécifiques

Personne

Code-PersonneNomPrenomAdresse

Etudiant

NomaNote-Moyenne

Professeur

Salaire

Page 9: Geti2101 : Systèmes dInformation et Informatique Règles de traduction dun diagramme declasses vers un diagramme relationnel Requêtes SQL

3. Règle3: présence d’une généralisation• Méthode 3:

– Créer une table par classe et des associations

Personne

Code-PersonneNomPrenomAdresse

Etudiant

NomaNote-Moyenne

Professeur

Salaire

Page 10: Geti2101 : Systèmes dInformation et Informatique Règles de traduction dun diagramme declasses vers un diagramme relationnel Requêtes SQL

Exercice• Construire le modèle relationnel correspondant au

diagramme de classe suivant:

Page 11: Geti2101 : Systèmes dInformation et Informatique Règles de traduction dun diagramme declasses vers un diagramme relationnel Requêtes SQL

Exercice: Solution

Page 12: Geti2101 : Systèmes dInformation et Informatique Règles de traduction dun diagramme declasses vers un diagramme relationnel Requêtes SQL

Requêtes SQL

Page 13: Geti2101 : Systèmes dInformation et Informatique Règles de traduction dun diagramme declasses vers un diagramme relationnel Requêtes SQL

Anatomie d’une requête SQL

SELECT * ou liste de colonnes

FROM nom de table

WHERE prédicats

Exemple :

SELECT Nom_Client, Prénom_Client

FROM Client

WHERE Titre = ‘M.’

Page 14: Geti2101 : Systèmes dInformation et Informatique Règles de traduction dun diagramme declasses vers un diagramme relationnel Requêtes SQL

Client

SELECT Nom_Client, Prénom_Client

FROM Client

WHERE Titre = ‘M.’

Id_Client Nom_Client Prenom_Client Titre

1 Fisichella Giancarlo M.

2 Lopez Jennifer Mrs.

3 Saerens Marco M.

4 Yen Luh Mrs.

5 Trulli Jarno M.

Nom_Client Prenom_Client

Fisichella Giancarlo

Saerens Marco

Trulli Jarno

Output

Page 15: Geti2101 : Systèmes dInformation et Informatique Règles de traduction dun diagramme declasses vers un diagramme relationnel Requêtes SQL

Id_Commande Id_Client Id_Produit

1 3 35000

2 5 32000

3 2 32000

4 3 35000

5 2 33000

6 1 32000

7 4 33000

Id_Client Nom_Client Prenom_Client Titre

1 Fisichella Giancarlo M.

2 Lopez Jennifer Mrs.

3 Saerens Marco M.

4 Yen Luh Mrs.

5 Trulli Jarno M.

Client

Commande

SELECT Nom_Client, Prénom_Client

FROM Client, Commande

WHERE (Id_Produit = 32000) AND (Client.Id_Client = Commande.Id_Client)

Nom_Client Prenom_Client

Trulli Jarno

Lopez Jennifer

Fisichella Giancarlo

Output

Page 16: Geti2101 : Systèmes dInformation et Informatique Règles de traduction dun diagramme declasses vers un diagramme relationnel Requêtes SQL

Exercice : la base de données ClientProduit

Page 17: Geti2101 : Systèmes dInformation et Informatique Règles de traduction dun diagramme declasses vers un diagramme relationnel Requêtes SQL

Contraintes d’intégrité référentielle : Commande.N_Client Client.N_ClientConstitution.N_Commande Commande.N_CommandeConstitution.N_Produit Produit.N_Produit

•Quel est le prix et numéro produit d’une TV

•Quels sont les clients (nom) qui habitent à Bruxelles et Namur

•Quels sont les clients (nom et adresse) qui ont achetés de produits le 10/10/03

•Quels sont les clients qui n‘ont pas fait d’achat en octobre.

•Qui (nom et adresse) a acheté un ordi

•Quels sont les produits (nomProduit) achetés par Kevin

ClientN_Client NomClient Adresse Tel

1 Michel Bruxelles 1234562 David Namur 4562983 Harold Lieget 8762304 Kevin Bastogne 9374025 Louis Bruxelles 384043

CommandeN_Commande DateCommande N_Client

1 12/09/03 12 16/09/03 13 01/10/03 34 10/10/03 45 11/11/03 56 13/11/03 2

ConstitutionQtProduit N_Commande N_Produit

25 5 1001 1 2002 3 300

50 4 4001 4 100

20 2 200

ProduitN_Produit NomProduit Prix

100 Ordi 800200 TV 500300 Hi Fi 400400 CD 20

Page 18: Geti2101 : Systèmes dInformation et Informatique Règles de traduction dun diagramme declasses vers un diagramme relationnel Requêtes SQL

SolutionQuel est le prix et numéro produit TV

SELECT Produit.Prix, Produit.N_ProduitFROM ProduitWHERE Produit.NomProduit =   "TV";

Quels sont les clients (nom) qui habitent à Bruxelles et Namur

SELECT Client.NomClientFROM ClientWHERE Client.Adresse = "Bruxelles" OR

Client.Adresse = "Namur";Ou

SELECT Client.NomClientFROM ClientWHERE Client.Adresse IN ("Bruxelles", "Namur");

Page 19: Geti2101 : Systèmes dInformation et Informatique Règles de traduction dun diagramme declasses vers un diagramme relationnel Requêtes SQL

Solution

Quels sont les clients (nom et adresse) qui ont achetés des produits le 10/10/03

SELECT Client.NomClient, Client.AdresseFROM Client, CommandeWHERE (Client.N_Client = Commande.N_Client) And

(Commande.DateCommande = "10/10/03");

Quels sont les clients (nom et adresse) qui n’ont pas fait d’achat en octobre

SELECT Client.NomClient, Client.AdresseFROM Client, CommandeWHERE (Client.N_Client = Commande.N_Client) And

(Commande.DateCommande NOT LIKE "__/10/__");

Page 20: Geti2101 : Systèmes dInformation et Informatique Règles de traduction dun diagramme declasses vers un diagramme relationnel Requêtes SQL

SolutionQui (nom et adresse) a acheté un ordi

SELECT Client.NomClient, Client.AdresseFROM Client, Commande, Constitution, ProduitWHERE (Client.N_Client = Commande.N_Client) And

(Commande.N_Commande = Constitution.N_Commande) And (Constitution.N_Produit = Produit.N_Produit) And

(Produit.NomProduit = "ordi");

Quels sont les produits (nomProduit) achetés par KevinSELECT Produit.NomProduitFROM Client, Commande, Constitution, ProduitWHERE (Client.N_Client = Commande.N_Client) And

(Commande.N_Commande = Constitution.N_Commande) And (Constitution.N_Produit = Produit.N_Produit) And (Client.NomClient ="Kevin");