Vous êtes sur la page 1sur 7

Institut Supérieur des Études Technologiques de Radès

Département Technologies de l'informatique


Épreuve : Bases de Données
Date :Janvier 2019
Enseignantes: I.Msakni,N. Abidi, J. Dhiab, L.Gatri.

Documents :Non autorisés Durée :1H :30min


Classes :L2 Nombre de
DSI,RSI et SEM CORRECTION pages: 7

Exercice1 (5 pts) :
Un centre aéré souhaite créer sa base de données afin de gérer ses activités et ses animateurs.
Pour cela, la relation R suivante est créée :

R (Num_E, Nom_E, Prenom_E, Num_Gpe, Nom_Gpe, Nom_Animateur, Jour, Num_Act, Type_Act)

Un n-uplet de la relation R a pour signification que :


L’enfant de numéro Num_E, de nom Nom_E et de prénom Prenom_E, appartient au groupe de
numéro Num_Gpe, de nom Nom_Gpeencadré par l’animateur de nom Nom_Animateur.
Ce groupe participe le jour « Jour » à l’activité de numéroNum_Act qui est de Type_Act (football,
danse, bricolage, …) sachant qu’un groupe ne peut participer qu’à une seule activité par jour.

Une analyse de la situation, nous fournit un ensemble initial de dépendances fonctionnelles :

(1) Num_E → Nom_E


(2) Num_E → Nom_Animateur
(3) Num_Gpe, Jour → Num_Act
(4) Num_E → Prenom_E
(5) Num_Gpe → Nom_Gpe
(6) Num_E, Jour → Nom_Gpe
(7) Num_E → Num_Gpe
(8) Num_Gpe → Nom_Animateur
(9) Num_Act → Type_Act
Répondre aux questions suivantes, en justifiant vos réponses.
1- Identifier les redondances éventuelles dans les dépendances fonctionnelles de la relation R.
(1pts)
(5)Num_Gpe → Nom_Gpe
(6) Num_E, Jour → Nom_Gpe : redondant on peut le déduire à partir de(5) et (7)

(7) Num_E → Num_Gpe


1/7
Ne Rien Ecrire Ici

/****/

(2) Num_E → Nom_Animateur : redondant on peut le déduire à partir de(8) et (7)

(8)Num_Gpe → Nom_Animateur
(7) Num_E → Num_Gpe

2- Trouver la ou les clés possible(s) de R. (1pts)


(bien sûr après l’élimination des redondances)
La liste des DFs élémentaires  est :
(1)Num_E → Nom_E
(3)Num_Gpe, Jour → Num_Act
(4)Num_E → Prenom_E
(5)Num_Gpe → Nom_Gpe
(7)Num_E → Num_Gpe
(8)Num_Gpe → Nom_Animateur
(9)Num_Act → Type_Act

Donc la clé de la relation R est (Num_E,jour)

3- Donner la forme normale de R. (1pts)


La relation R est en 1FN car il ya des DFS qui dépendants d’une partie de la clé
4- Proposer une décomposition de R en troisième forme normale.(2pts=0.5*4)

Enfant(Num_E , Nom_E , Prenom_E ,Num_Gpe)


Groupe(Num_Gpe , Nom_Gpe, Nom_Animateur)
Activité(Num_Act , Type_Act)
Groupe_Activite(Num_Gpe, Jour ,Num_Act)
2/7
Ne Rien Ecrire Ici

Exercice2 :(15pts)

On souhaite mettre en place une base de données pour gérer l'ensemble des journaux édités en
Tunisie. Cette base est définie par le schéma suivant :

Journaliste (Id_Journaliste, nom, prénom, adresse, téléphone)

Un journaliste est identifié d'une manière unique par un Id_Journaliste. Il est caractérisé par un
nom, un prénom, une adresse et un téléphone.

Journal(NomJournal, type, éditeur, Id_Directeur)

Un journal est identifié d'une manière unique par un nom. Il est caractérisé par un type (quotidien,
hebdomadaire, …), une maison d'édition (éditeur) et un directeur (Id_Directeur). (Id_Directeur) est
une clé étrangère qui référence (Id_Journaliste) de la relation Journaliste.

Numéro (Numéro, NomJournal, Date_Parution, Nb_Pages)

Un numéro d'un journal est identifié d'une manière unique par un numéro et le nom du journal
(numero, nomJournal) et est caractérisé par une date de parution et un nombre de pages.
NomJournal est une clé étrangère qui référence NomJournal de la relation Journal.

Article(Titre,Numéro, NomJournal, type)

Un article est identifié d'une manière unique par un titre, le numéro et le nom du journal auquel
l'article appartient. Il est caractérisé par un type (politique, société, sport, …). (Numéro,
NomJournal) est une clé étrangère qui référence (Numéro, NomJournal) de la relation Numéro.

Ecriture (Titre, Numéro, NomJournal, Id_Auteur)

Un tuple de la relation Ecriture désigne le fait qu'un journaliste (Id_Auteur) a participé à l'écriture


d'un article (titre, numéro, NomJournal). Un article est écrit par un ou plusieurs journalistes.
(Id_Auteur) est une clé étrangère qui référence (Id_Journaliste) de la relation Journaliste. (Titre,
Numéro, NomJournal) est une clé étrangère qui référence (Titre, Numéro, NomJournal) de la
relation Article.

3/7
Ne Rien Ecrire Ici

Travail à faire
A/ Répondre aux requêtes suivantes en utilisant l’algèbre relationnelle (6 pts=1.5*4)
1- Donner les articles (Titre, Numéro et Nom du journal) écrits par «SofièneChourabi »en
2014.

                       

2- Donner les journalistes (Nom et Prénom) qui n’ont jamais écrit des articles.

3- Donner lenom et le prénom du directeur du journal « La liberté ».

4- Donner les journalistes (Nom et Prénom) ayant écrits des articles dans tous les journaux.

B/ Répondre aux requêtes suivantes en utilisant le langage SQL (9 pts= 1pts*9)


1- Afficher le nom et prénom du directeur du journal « La liberté ».
4/7
Ne Rien Ecrire Ici

  SELECT nom, prenom


            FROM Journaliste join Journal on Journaliste.Id_ Journaliste join Journal. Id_Directeur

           where . NomJournal =’liberte’;

2- Donner les journalistes (Id_Journaliste) qui n'écrivent que dans des journaux quotidiens.
  SELECT Id_Journamiste
            FROM Journaliste
Where Id_Journaliste in ( Id_auteur FROM  Journal J, Ecriture E
            WHERE J.nomJournal = E.nomJournal AND type = 'quotidien' )
And Id_Journaliste not in ( Id_auteur FROM  Journal J, Ecriture E
            WHERE J.nomJournal = E.nomJournal AND type <> 'quotidien' );

2 éme version

  SELECT Id_Journamiste
            FROM Journaliste Where Id_Journaliste in ( Id_auteur FROM  Journal J, Ecriture E
            WHERE J.nomJournal = E.nomJournal AND type = 'quotidien' )
Minus
  SELECT Id_Journamiste
            FROM Journaliste where Id_Journaliste not in ( Id_auteur FROM  Journal J, Ecriture E
            WHERE J.nomJournal = E.nomJournal AND type <> 'quotidien' );

3- Donner les articles (Titre, Numéro et Nom du journal) qui sont écrits par au moins deux
journalistes différents.

SELECT titre, numero, nomJournal 


   FROM Ecriture E1, Ecriture E2
            WHERE E1.titre = E2.titre AND E1.numero=E1.numero AND
E1.nomJournal=E2.nomJournal AND   E1.Id_Auteur<> E2. Id_Auteur ;

5/7
Ne Rien Ecrire Ici

4- Donner les articles (Titre,Numéro et Nom du Journal) écrit par le directeur du journal dans
lequel ils ont pru.
SELECT titre, numero, nomJournal 
   FROM Ecriture E, Journal J
            WHERE E.nomJournal=J.nomJournal AND   E.Id_Auteur = J. Id_Directeur ;
5- Pour chaque journal (Nom journal), donner par numéro, le nombre moyen d'articles et le
nombre de journalistes qui ont écrit par numéro.
Select count(titre),count(distinct Id_auteur)
From Ecriture
Group by Numéro, NomJournal ;

6- Donner les journalistes (Id_Journaliste) ayant écrits au moins un article dans le (ou les)
journal dirigé par « Chiheb Ben Salah ».

Select Id_Auteur
from Ecriture
where Id_Auteur in (select Id_auteur from Ecriture join Journal on
Ecriture.nomJournal=Journal.nomJournal Join Journaliste on
Journaliste.Id_journaliste=Journal.Id_directeur
where nom=’Ben Salah’ and prenom=’chiheb’);
7- Ajouter la colonne Sujet à la table Article désignant le sujet d’un article bien donné.
Alter table article Add (Sujet varchar2(50)) ;

8- Ajouter la contrainte nécessaire pour qu’un type d’article ne puisse être que « politique »,
« société », « sport » ou « religion ».
Alter table article Add constraint ck_type check (type in ‘politique ‘, ‘ société ‘, ‘ sport ‘,
‘ religion’) ;
 
6/7
Ne Rien Ecrire Ici

9- Suite à une erreur de saisie, les articles parus après le « 01/09/2018 » dans le journal « La
Liberté » ayant le titre « Devinette » ont été écrits réellement par le journaliste
«SofièneChourabi ». Procéder à la correction de cette erreur.

Update Ecriture
set Id_auteur= (select Id_journaliste from Journaliste
where nom=’chourabi’ and prenom=’sofiene’ )
where nomJournal=(select nomJournal from Aritcle where nomjournal=’liberte’ and
date_parution>’01/09/2018’ and titre=’Devinette’;

7/7

Vous aimerez peut-être aussi