geti2101 : systèmes dinformation et informatique règles de traduction dun diagramme declasses vers...
TRANSCRIPT
Geti2101 : Systèmes d’Information et Informatique
• Règles de traduction d’un 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
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 !!!
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
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..*
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
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}
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
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
Exercice• Construire le modèle relationnel correspondant au
diagramme de classe suivant:
Exercice: Solution
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.’
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
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
Exercice : la base de données ClientProduit
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
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");
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/__");
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");