Tutoriel de Bases de Données Relationnelles

Tutoriel de Bases de Données Relationnelles

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

Corrigé du contrôle pour les EI 05/06

Institut National des Télécommunications

Contrôle des connaissances





Bases de données

Code : BD21

Date : 08/11/2005

Durée : 1h30

Coordonnateur : C. Lecocq et S. Tata

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 : 4 points (Q2.1 = 2 pts, Q2.2 = 2 pts)

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

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

Question 5 : 1,5 point (Q5.1 = 1pt, Q5.2 = 0,5pt)


Une ludothèque souhaite organiser les jeux proposés aux enfants en fonction de leur but pédagogique et des compétences développées. Afin de proposer des activités adéquates aux enfants clients de cette ludothèque, le schéma de base de données suivant est défini :

FamilleJeux (nomFamille, butPedagogique)

Jeux (nomJeux, prix, description, ageMini, ageMaxi, nomFamilleJeux)

Accessoire (nomJeux, nomAccessoire, prix)

Compétence (nomCompetence, description, ageMiniAdapte, ageMaxiAdapte)

Developper (nomJeux, nomCompetence)

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

La sémantique des diverses relations est la suivante :

FamilleJeux (nomFamille, butPedagogique) : une famille de jeux est identifiée par son nom « nomFamille ». Les seules valeurs possibles de nomFamille sont : « jeux de société », « loisirs créatifs », « jeux d’imitation ». Le but pédagogique « butPedagogique » de cette famille est associé.

Jeux (nomJeux, prix, description, ageMini, ageMaxi, nomFamilleJeux) : un jeux est identifié par son nom « nomJeux ». Il est décrit par son prix « prix », une description textuelle « description », un age minimum « ageMini », un age maximum « ageMaxi » et le nom de la famille de jeux auquel il appartient « nomFamilleJeux »; clé étrangère sur la relation « FamilleJeux ».

Accessoire (nomJeux, nomAccessoire, prix) : un accessoire est identifié par son nom « nomAccessoire » et le nom du jeux auquel il doit être associé « nomJeux ». Il possède un prix « prix ». « nomJeux » est une clé étrangère sur la relation « Jeux ».

Compétence (nomCompetence, description, ageMiniAdapte, ageMaxiAdapte) : une compétence est identifiée par son nom « nomCompétence » (« motricité fine », « stratégie », « socialisation » par exemple). Une compétence est décrite par un attribut « description », un âge minimum « ageMiniAdapte » avant lequel cette compétence ne peut pas être développée, un âge maximum « ageMaxiAdapte » après lequel cette compétence est acquise et n’a plus à être développée.

Developper (nomJeux, nomCompetence) : le jeux de nom « nomJeux » développe la compétence de nom « nomCompetence ». « nomJeux » est une clé étrangère sur la relation « Jeux ». « nomCompetence » est une clé étrangère sur la relation « Competence ».

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.

Question 2

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

(Q2.1) Quels sont les jeux (nom de jeux et prix) qui coûtent moins de 20 Euro ?

SELECT nomJeux, prix

FROM Jeux

WHERE prix < 20

 

(Q2.2) Quels sont les noms des jeux et les noms des accessoires de jeux qui développent la compétence « motricité fine » ? La compétence développée par un accessoire est la même que celle du jeux auquel il est rattaché.

SELECT nomJeux

FROM Developper D

WHERE D.nomCompetence =’motricité fine’

UNION

SELECT nomAccessoire

FROM Developper D, Accessoire A

WHERE D.nomJeux = A.nomJeux

AND D.nomCompetence =’motricité fine’

Question 3

Exprimer les 3 questions suivantes en SQL :

(Q3.1) Pour chaque famille de jeux, donner le nom de la famille, le nombre de jeux appartenant à cette famille et le prix moyen des jeux de cette famille.

SELECT nomFamilleJeux, COUNT(*) , AVG (prix)

FROM Jeux J

GROUP BY nomFamilleJeux

(Q3.2) Donner le nom des jeux et leur prix chacun des accessoires est plus cher que le jeux lui-même (le minimum du prix des accessoires est supérieur au prix du jeux).

SELECT nomJeux, prix

FROM Jeux J

WHERE prix <= ALL

                (SELECT prix

                FROM Accessoire A

                WHERE A.nomJeux = J. nomJeux)

2ème solution

SELECT  nomJeux, prix

FROM Jeux J

WHERE prix <=

                (SELECT MIN(prix)

                FROM Accessoire A

                WHERE A.nomJeux = J. nomJeux)

(Q3.3) Quel est le jeux développant le maximum de compétences ?

SELECT nomJeux

FROM Developper D

GROUP BY nomJeux

HAVING COUNT(*) >=

                SELECT MAX(COUNT(*))

                FROM Developper

                GROUP BY nomJeux)

Question 4

Exprimer les 2 questions suivantes en algèbre relationnelle ou en SQL :

(Q4.1) Quels sont les jeux (nom de jeux) développant toutes les compétences ?

SELECT nomJeux

FROM Developper

GROUP BY nomJeux

HAVING COUNT(*) = select COUNT(*) FROM Competence

(Q4.2) Quels sont les jeux (nom de jeux et description) qui ne sont pas de la famille « jeux d’imitation » ?

SELECT nomJeux, description

FROM Jeux

Minus

SELECT nomJeux, description

FROM Jeux

WHERE nomFamilleJeux=’jeux d’imitation’

2ème solution

SELECT DISTINCT nomJeux, description

FROM Jeux

WHERE nomFamilleJeux<>’jeux d’imitation’

 

Question 5

(Q5.1) Ecrire l’ordre de création de la relation « FamilleJeux » en SQL. Cette création doit contenir la définition des contraintes d’intégrité (contrainte de clé, clé étrangère, contraintes de domaine …).

Vous considérerez pour cela que l’attribut « nomFamille » est une chaîne de 16 caractères et que dont les valeurs possibles sont : « jeux de société », « loisirs créatifs », « jeux d’imitation ». L’attribut « butPedagogique » est une chaîne de 30 caractères.

CREATE TABLE FamilleJeux (

nomFamille CHAR(16) PRIMARY KEY CHECK (nomFamille IN (‘jeux de société’,’loisirs créatifs’,’jeux d’imitation’)),

butPedagogique CHAR(30)) ;

(Q5.2) Que doit faire le formulaire suivant ?

<html>

<body>

<hr>

<form name="titi" action="http://www-inf.int-evry.fr/cgi-bin/mowi_sql.cgi" method="POST">

<input type="hidden" name="uid" value="titi/titi@TANNA">

<input type="hidden" name="mode" value="NOR">

<input type="hidden" name="table" value="JEUX">

<input type="hidden" name="sqlstatement" value="Select nomJeux, COUNT(*) From Jeux J, accessoire A where J.nomJeux= A.nomJeux group by nomJeux">

<input type="button" value="GO!" onClick="titi.submit();">

</form>

</body>

</html>

Interrogation du nombre d’accessoire par jeux. Le compte interrogé est sur l’instance de base de données TANNA. Le login est titi et le mot de passe titi.

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