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éPrimaire Ex: Exemplaire.Code-Livre Livre.Code-Livre
Règle1 - Exemple 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 !!! Contrainte d’intégrité référentielle : Exemplaire.Code-Livre Livre.Code-Livre
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
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
Règle2 - Exemple Contraintes d’intégrité référentielle : Emprunte.Code-Personne Personne.Code-Personne Emprunte.Code-Livre Livre.Code-Livre 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
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 {Professeur, Etudiant}
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
Règle3: présence d’une généralisation Méthode 3: Créer une table par classe et des associations
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.’
SELECT Nom_Client, Prénom_Client FROM Client WHERE Titre = ‘M.’ Output
SELECT Nom_Client, Prénom_Client FROM Client, Commande WHERE (Id_Produit = 32000) AND (Client.Id_Client = Commande.Id_Client) Output
Exercice : la base de données ClientProduit
Quel est le prix et numéro produit d’une TV Client N_Client NomClient Adresse Tel 1 Michel Bruxelles 123456 2 David Namur 456298 3 Harold Lieget 876230 4 Kevin Bastogne 937402 5 Louis 384043 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 Commande N_Commande DateCommande N_Client 1 12/09/03 2 16/09/03 3 01/10/03 4 10/10/03 5 11/11/03 5 6 13/11/03 2 Constitution QtProduit N_Commande N_Produit 25 5 100 1 1 200 50 4 400 1 100 20 2 200 Produit N_Produit NomProduit Prix Ordi 800 TV 500 2 3 300 300 Hi Fi 400 400 CD 20 Contraintes d’intégrité référentielle : Commande.N_Client Client.N_Client Constitution.N_Commande Commande.N_Commande Constitution.N_Produit Produit.N_Produit
Solution Quel est le prix et numéro produit TV SELECT Produit.Prix, Produit.N_Produit FROM Produit WHERE Produit.NomProduit = "TV"; Quels sont les clients (nom) qui habitent à Bruxelles et Namur SELECT Client.NomClient FROM Client WHERE Client.Adresse = "Bruxelles" OR Client.Adresse = "Namur"; Ou WHERE 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.Adresse FROM Client, Commande WHERE (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 (Commande.DateCommande NOT LIKE "__/10/__");
Solution Qui (nom et adresse) a acheté un ordi SELECT Client.NomClient, Client.Adresse FROM Client, Commande, Constitution, Produit WHERE (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 Kevin SELECT Produit.NomProduit (Client.NomClient ="Kevin");