Geti2101 : Systèmes dInformation et Informatique Règles de traduction dun diagramme declasses vers...

Preview:

Citation preview

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");

Recommended