Tutoriel de Bases de Données Relationnelles

Tutoriel de Bases de Données Relationnelles

Accueil  > Supports pédagogiques > Annales > Ingénieurs > EI 08 corrigé

Corrigé du contrôle pour les EI 08/09

TELECOM et Management SudParis

Contrôle des connaissances





Bases de données

Code : CSC4001

Date : 13/11/2008

Durée : 1h30

Coordonnateur : S. Tata et C. Lecocq

Documents autorisés: ceux distribués en cours

 

____________________________________________________

Avertissements

1/ Lisez attentivement le sujet.

2/ Les questions sont indépendantes les unes des autres.

3/ Essayez d'être clair et précis dans vos réponses.

4/ Soignez la présentation, dans la mesure du possible.

5/ Barème indicatif

Question 1 : 5 points (Q1 = 5 pts)

Question 2 : 5 points (Q2.1 = 1 pts, Q2.2 = 2 pts, Q2.3 = 2 pts)

Question 3 : 4 points (Q3.1 = 2 pts, Q3.2 = 2 pts)

Question 4 : 6 points (Q4.1 = 2 pts, Q4.2 = 2 pts, Q4.3 = 2 pts)

Un supermarché souhaite mettre en place une base de données afin de faciliter la gestion de la traçabilité des produits d’agriculture biologique. Le schéma de bases de données est le suivant :

Producteur (num, nom, prenom, region, pays)

ProduitBio (numProducteur, nomProduit, typeAgriculture)

Organisme(num, nom, nomAccrediteur, norme)

Accrediteur(nom, pays)

Certification (numProducteur, nomProduit, numOrganisme)

Les clés sont soulignées et les clés étrangères sont en gras

La sémantique des diverses relations est la suivante :

Producteur (num, nom, prenom, region, pays)

Un producteur est identifié par un numéro (num) et caractérisé par un nom, un prénom, une région et un pays.

ProduitBio (numProducteur, nomProduit, typeAgriculture)    

Un produit biologique est identifié par le numéro (numProducteur) de son producteur et son nom (nomProduit). Un produit est caractérisé par un type d’agriculture pratiquée (typeAgriculture) pour maintenir la productivité des sols et le contrôle des maladies et des parasites, par exemple, « rotation des cultures », « engrais vert », « compostage », « lutte biologique », et « sarclage mécanique ». numProducteur est une clé étrangère qui référence la relation Producteur.

Organisme(num, nom, nomAccrediteur, norme)

Un organisme de contrôle et de certification, par exemple « ECOCERT », est un organisme encadrée par les Pouvoirs Publics et la législation. Il contrôle les procédures de production des agriculteurs et décerne le label AB (agriculture biologique). Un organisme de certification est identifié par un numéro (num) et caractérisé par un nom, un accréditeur (nomAccrediteur) qui contrôle la structure et les procédures de l’organisme de certification, et une norme d’accréditation, par exemple « ISO 65 » qui exige indépendance, compétence et impartialité. nomAccrediteur est une clé étrangère qui référence la relation Accrediteur.

Accrediteur(nom, pays)

Un accréditeur est identifié par un nom, par exemple le « Comité Français d’Accréditation », et caractérisé par un pays.

Certification (numProducteur, nomProduit, numOrganisme)

Un tuple dans la relation certification correspond à l’attribution d’un label « agriculture biologique » à un produit (numProducteur, nomProduit) par un organisme de certification (numOrganisme). (numProducteur, nomProduit) est une clé étrangère qui référence la relation ProduitBio et numOrganisme est une clé étrangère qui référence la relation Organisme.

Question 1

En vous aidant des règles de passage d'une modélisation Entité/Association à une modélisation relationnelle "à l'envers", proposer un schéma Entité/Association équivalent à ce schéma relationnel. Ce schéma devra comporter la description des entités (avec leurs propriétés), des entités faibles (s'il y a lieu), des associations (avec leurs propriétés) ainsi que les cardinalités minimum et maximum des associations binaires.

 

PS : l’attribut norme peut être rattaché à la relation Organisme

Question 2

Exprimer chacune des questions suivantes, d'une part en algèbre relationnelle sous la forme d'un arbre algébrique, et d'autre part en SQL.

(Q2.1) Quelles sont les producteurs (nom et prénom) de la région « Alsace » ?

                SELECT nom, prenom

                FROM Producteur

                WHERE region = ‘Alsace’

 

(Q2.2) Quelles sont les producteurs (nom et prénom) qui produisent au moins un produit biologique pour lequel il pratique la « rotation des cultures » comme type d’agriculture ?

                SELECT P.nom, P.prenom

                FROM Producteur P, ProduitBio PB

                WHERE P.num=PB.numProducteur AND typeAgriculture = ‘rotation des cultures’

 

(Q2.3) Quels sont les organismes de certification (donner leurs numéros et leurs noms) qui sont accrédités par un accréditeur français selon la norme « ISO 65 »?

                SELECT O.num, O.nom

                FROM Organisme O, Accrediteur A

                WHERE O.nomAccrediteur=A.nom AND A.pays = ‘France’ AND norme=‘ISP 65’

 

Question 3

Exprimer les questions suivantes en SQL :

(Q3.1) Donner les noms des organismes de certification qui n’ont donné aucune certification pour un produit biologique.

SELECT nom

FROM organisme

WHERE num IN (

                SELECT num FROM Organisme

                MINUS

                SELECT numOrganisme FROM Certification)

 

2éme solution

SELECT nom

FROM organisme

WHERE num NOT IN (

                SELECT numOrganisme FROM Certification)

 

(Q3.2) Pour chaque producteur, donner le numéro, le nom et le nombre de produits biologiques qu’il cultive.

                SELECT P.num, P.nom, count (nomProduit)

                FROM Producteur P, ProduitBio PB

                WHERE P.num = PB.numProducteur

                GROUP BY P.num, P.nom

 

Question 4

(Q4.1) Quels sont les produits (donner leurs noms et les numéros de leurs producteurs) qui ont obtenu des certifications de tous les organismes de certification ? Exprimer cette question en algèbre relationnelle ou en SQL.

                SELECT numProducteur, nomProduit

                FROM Certification

                GROUP BY numProducteur, nomProduit

                               HAVING count (distinct numOrganisme) = SELECT count (*) FROM Organisme

(Q4.2) Donner la définition complète de la relation ProduitBio dans le langage SQL. Par définition complète, on entend la définition des attributs et de leurs domaines, mais aussi la définition de toutes les contraintes d'intégrité associées. L’attribut numProducteur est de type entier. L’attribut nomProduit est une chaîne d’au plus 50 caractères qui doit être renseignée pour tout produit. L’attribut typeAgriculture est une chaîne d’au plus 24 caractères et de valeurs possibles : ‘rotation des cultures’, ‘engrais vert’, ‘compostage’, ‘lutte biologique’, et ‘sarclage mécanique’. La clé de la relation ProduitBio est composée par les attributs numProducteur et nomProduit.

 

                CREATE TABLE ProduitBio (

                               numProducteur Integer ,

                               nomProduit VARCHAR(50) NOT NULL,

typeAgriculture VARCHAR(24) CONSTRAINT Ctype CHECK (typeAgriculture in  (‘rotation des cultures’, ‘engrais vert’, ‘compostage’, ‘lutte biologique’, et ‘sarclage mécanique’))

                )

                ALTER TABLE ProduitBio add PRIMARY KEY (numProducteur, nomProduit)

                ALTER TABLE ProduitBio add constraint fkProd

                FOREIGN KEY (numProducteur) REFERENCES Producteur(num)

 

(Q4.3) Donner la définition en SQL de la vue Produit (nom, paysOrigine, nombreCertificats) qui donne pour chaque produit le nom, le pays d’origine (le pays de son producteur) et le nombre d’organismes différents qui l’ont certifié.

.               CREATE VIEW Produit (nom, paysOrigine, nombreCertificats) AS

                SELECT PB.nomProduit, P.pays, count (DISTINCT numOrganisme)

                FROM Producteur P, ProduitBio PB, Certification C

                               WHERE C.numProducteur = PB.numProducteur AND C.nomProduit = PB.nomProduit                     AND P.num=PB.numProducteur

                GROUP BY PB.numProducteur, PB.nomProduit, P.Pays

 

[fil RSS du site]
Dernière mise à jour : 09/11/2009