(1,1) COMPTEUR 0,N NumOrdreCompteur DateInstallation Marque DOSSIER 2 : EXPLOIT
(1,1) COMPTEUR 0,N NumOrdreCompteur DateInstallation Marque DOSSIER 2 : EXPLOITATION DES DONNEES CONCERNANT LES RELEVES DE COMPTEURS D'EAU TRAVAIL À FAIRE 2.1 Présenter le schéma entité-association correspondant au schéma relationnel de la base de données utilisée. ABONNEMENT Ref Date Adresse Cp Ville 0,N 1,1 1,N Posséder CLIENT Id Nom Prenom Adresse Cp Ville Installer Concerner (1,1) RELEVE NumOrdreReleve Date Index D'autres représentations (agrégat d'association ou association d'association) seront également acceptées. TRAVAIL À FAIRE 2.2 Écrire les ordres SQL permettant d'obtenir les résultats suivants : A.Création de la table RELEVE avec toutes les contraintes nécessaires. B.Affichage d’une liste des relevés (date et index) concernant l'abonnement "A2178", triée par dates de relevé décroissantes, quelque soit le compteur. C.Affichage d’une liste des abonnements avec indication du nom du client et du nombre de relevés effectués en 2008. D.Création d'une vue nommée MaxCompteur présentant pour chaque compteur d'eau la référence de l'abonnement, le numéro d'ordre du compteur et l’index maximum relevé. E.Affichage de la consommation totale, tous compteurs confondus, de l'abonnement "A2178" depuis sa souscription, en utilisant la vue précédente. a) CREATE TABLE RELEVE( abonnement CHAR(5), numOrdreCompteur INTEGER, numOrdreReleve INTEGER, date DATETIME, index INTEGER, PRIMARY KEY (abonnement, numOrdreCompteur, numOrdreReleve), FOREIGN KEY (abonnement, numOrdreCompteur) REFERENCES COMPTEUR(abonnement, numOrdreCompteur)) Remarque : On attend une seule contrainte FOREIGN KEY portant sur le couple (abonnement, numOrdreCompteur) b) SELECT date, index FROM RELEVE WHERE abonnement = 'A2178' ORDER BY date DESC c) SELECT RELEVE.abonnement, CLIENT.nom, COUNT(*) FROM RELEVE, ABONNEMENT, CLIENT WHERE RELEVE.abonnement = ABONNEMENT.ref AND CLIENT.id=ABONNEMENT.client AND Year(RELEVE.date) = 2008 GROUP BY RELEVE.abonnement, CLIENT.nom Remarques : On pourra trouver toutes les colonnes relatives aux abonnements. L'emploi d'une clause MAX au lieu de COUNT est faux (cas d'un changement de compteur dans l'année par exemple). d) CREATE VIEW MaxCompteur as SELECT abonnement, numOrdreCompteur, MAX(index) AS maxIndex FROM RELEVE GROUP BY abonnement, numOrdreCompteur On peut trouver le nom des colonnes derrière le nom de la vue. e) SELECT SUM(maxIndex) FROM MaxCompteur WHERE abonnement = 'A2178' uploads/s3/ 730962187-correction-travail-a-rendre.pdf
Documents similaires










-
42
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Attribution requise- Détails
- Publié le Mai 05, 2021
- Catégorie Creative Arts / Ar...
- Langue French
- Taille du fichier 0.1227MB