Vous êtes sur la page 1sur 11

Accueil

Geek

Html | JavaScipt | Css

Examen fin Formation

SQL

Examen Passage

Envoyez Nos un Cours/TP/EFM

ADO

ASP

Concours | Licence

Poser Une Question

UML

Rapports

Merise

Projets

C#

Curriculum Vitae

Acheter un Projet de fin formation 200 DH

Rseau

Ar|Fr|Ang

Adresses Stage

Contactez-nous

Gestion de Projet

Les Demandes

Recherche d'emploi

EFM 1er Anne

propos de nous

tdiway site de Dveloppement Informatique

Four Year Colleges


Search multiple engines for four year colleges

Examen de fin module : SGBD II Avec Correction


3

2P 0O 1 S 4 T

Like

Share

E 0 D 7S

:Q B 5 L Y 0 _

: C D 0 O E0 N V

T A RT M OD

LI

OFPPT

Direction Rgionale Tensift Atlantique


Etablissement : Ista Ntic Syba
Marrakech
Examen de fin module : SGBD II
2011/2012
Filire:TDI
Niveau : 2me anne
Dure :2h30

Groupe(s):
TDI2GE
Formateur : OUATOUCH Abdeljalil
Barme: /20

Partie I : Programmation TSQL : (4 pts)


1) En utilisant les fonctions :
-

ascii(caractre) permet de renvoyer le code ascii du caractre prcis en paramtre.


char (int) permet dafficher le caractre dont le code ascii est lentier prcis en paramtre.

Afficher tous les alphabets (majuscule et minuscule) en prcisant pour chacun le code ascii. (1 pt).

converted by Web2PDFConvert.com

2) On considre la table :

Livre (IdL int primary key, Titre varchar (4))


Crer un programme TSQL permettant de remplir cette table par 100 enregistrement sachant que :
(1 pt)
-

Le champ IdA est un compteur qui sincrmente automatiquement,


Le champ Titre respecte le masque suivant : Ti avec i est un entier compris entre 0 et 99.

3) On rajoute sur la mme base la table :

Livre_Old (IdL int primary key, Titre varchar (3))


On dsire remplir cette table par le contenu de la table initiale en respectant les contraintes suivantes :
(2 pts)
o Un enregistrement ne doit pas figurer la fois dans les deux tables.
o Une fois la table Livre_Old est remplie la table Livre doit tre vide.
o Si lopration de transfert de donnes a gnr un problme, elle sera compltement
annule et on veillera afficher un message pour lutilisateur. gestion derreurs

Partie II : Procdures stockes et Triggers (16 pts)


On considre lexemple de la base de donnes suivante :
Cinma (nomCinma, numro, rue, ville)
Salle (nomCinma, noSalle, capacit, climatise)
Horaire (idHoraire, heureDbut, heureFin, Dure)
Sance (idFilm, nomCinma, noSalle, idHoraire, tarif)
Film (idFilm, titre, anne, genre, rsum)
Acteur (idActeur, nom, prnom, DateNaissance)
Rle (idActeur, idFilm, nomRle)
1) Raliser la base de donnes sous le nom Projections. (1,5 pt)
2) Remplir les tables avec des donnes correctes. (1,5 pt)
3) Triggers : (6 pts)
a.
Chaque suppression dun enregistrement de la table Cinma ne doit pas seffectuer mais
saffiche plutt un message indiquant cela.
b. Le champ Nom de la mme table doit tre en majuscule pour tous les champs de la table et le
Prnom doit commencer par une lettre majuscule. (Acteur)
c. Crer un (des) trigger(s) qui supprime (nt) en cascade aprs la suppression d'une cinma
d. La Dure doit se remplir automatiquement.
e. Le Tarif de chaque sance ne doit pas dpasser 1000 DH.
f.
Crer un trigger qui affiche le type de chaque opration sur la table ainsi que le nombre des
enregistrements concerns.
4) Procdures : (7 pts)
a. Ecrire une Procdure stocke qui, tant donn un acteur, affiche le nombre de films auxquels il a
particip, utiliser un paramtre de sortie.
b.
Raliser une procdure stocke qui permet de remplir la colonne Dure pour tous les
enregistrements de la table en procdant aux vrifications suivantes :
i. Lheure de dbut doit tre infrieure celle de fin
ii. La dure maximale est de 5 heures ; en cas de non respect de cette condition, il
faut afficher un message qui demande lutilisateur de ressaisir les donnes de
lenregistrement en question.
c.
Afficher sous forme de phrases le nombre de cinmas de chaque ville avec leurs salles. (Ordre
croissant des villes)
converted by Web2PDFConvert.com

d. Ajouter une table Grp_Cin (code, description) contenant les groupes de familles comme suit :
Grp 1 :
Nombre de salles < = 1
Grp 2 : 1 < Nombre de salles < = 3
Grp 3 : 3 < Nombre de salles < = 5
Grp 4 : 5 < Nombre de salles
Crer une procdure stocke permettant de remplir cette table comme suit : ((1, Groupe1), (2,
Groupe2))
e.
Ajouter une colonne CodeG comme cl trangre dans la table cinma ; puis raliser une
procdure stocke permettant de remplir cette colonne.
f.

Ajouter une table Cinmas_Salles qui a un schma relationnel rsultat de la combinaison du


schma de la 1re et de la 2me sans rptition des champs. Raliser une procdure stocke qui
permet de remplir cette table.

g.

Raliser une procdure stocke qui permettra dafficher ltat actuel dun cinma (pass en
argument) en affichant les lments suivants :
i. Le plus court, le plus long et le plus cher film projet ce cinma.
ii. Lacteur qui a apparu le plus dans ce cinma.
iii. La dure totale de toutes les projections de ce cinma.

Remarque :
Le script des rponses doit tre lisible, comment et enregistr sur le bureau dans un dossier qui porte
votre nom et votre groupe
Correction

Create Database FEM_SGBDII


use FEM_SGBDII
/* Partie I : Programmation TSQL : (4 pts) */
--1
select char(65+32)
declare @i int
declare @t table (AlphaMaG varchar,ASCIIMaG int, AlphaMin varchar,ASCIIMin int)
set @i = 65
while(@i < 91)
begin
insert into @t values (CHAR(@i), @i,CHAR(@i+32), @i+32)
set @i = @i+1
end
select * from @t
--2
create table Livre(
IdL int primary key,
Titre varchar (4)
)
delete from Livre
converted by Web2PDFConvert.com

declare @i int
set @i=0
while @i < 100
begin
insert into Livre values (@i+1,'T'+cast(@i as varchar(25)))
set @i = @i + 1
end
select * from Livre
--3
create table Livre_OLD(
IdL int primary key,
Titre varchar (4)
)
declare old cursor for (select * from Livre)
open old
declare @id int, @titre varchar(255)
fetch next from old into @id ,@titre
while @@FETCH_STATUS = 0
begin
if not exists(select * from Livre_OLD where IdL=@id and Titre = @titre)
begin
begin tran a
insert into Livre_OLD values (@id,@titre)
delete from Livre where IdL=@id and Titre = @titre
commit a
end
fetch next from old int @id,@titre
end
xs

/* Partie II : Procdures stockes et Triggers */


create table Cinma (
nomCinma varchar(255) primary key,
numro int,
rue varchar(255),
ville varchar(255)
)
create table Salle (
nomCinma varchar(255),
noSalle int,
capacit int,
climatise int
primary key (noSalle)
)
converted by Web2PDFConvert.com

insert into Salle values('s',1,1,1)


create table Horaire (
idHoraire int primary key,
heureDbut time,
heureFin time,
Dure float
)
insert into Sance values(1,'alhillal',1,1,100000)
insert into Sance values(101,'alhillal',1,1,100000)
insert into Sance values(100,'alhillal',1,1,100)
create table Sance (
idFilm int foreign key references Film(idFilm),
nomCinma varchar(255) foreign key references Cinma(nomCinma),
noSalle int foreign key references Salle(noSalle),
idHoraire int foreign key references Horaire(idHoraire),
tarif int,
primary key (idFilm,nomCinma,noSalle,idHoraire)
)
create table Film (
idFilm int primary key,
titre varchar(255),
anne int,
genre varchar(255),
rsum varchar(255)
)
insert into Film values (1,'Planet des signe',1995,'Science fiction','Monde des singes')
insert into Film values (2,'Avatar',2010,'Science fiction','autre vie')
insert into Film values (3,'Le petit monde de borweur',2012,'comique','monde de petit')
insert into Film values (4,'La rlit',2005,'drama','la fin de monde')
create table Acteur (
idActeur int primary key,
nom varchar(255),
prnom varchar(255),
DateNaissance date
)
create table Rle (
idActeur int foreign key references Acteur(idActeur),
idFilm int foreign key references Film(idFilm),
nomRle varchar(255)
primary key(idActeur,idFilm)
)
insert into Cinma values('MegaRama',1,'Agdal','Casa')
insert into Cinma values('Arif',2,'Dawdiyat','Marrakech')
insert into Cinma values('Alhillal',3,'Sou9 Arabi3','Rabat')
insert into Cinma values('Mabrouka',4,'Prince','marrakech')
insert into Rle values (1,1,'Pressonage pricipal')
converted by Web2PDFConvert.com

insert into Rle values (2,1,'Scane comique')


insert into Rle values (3,1,'Combat')
insert into Rle values (2,3,'Police')
insert into Salle values ('MegaRama',12,100,0)
insert into Salle values ('MegaRama',5,250,1)
insert into Salle values ('Arif',6,85,0)
insert into Salle values ('Alhillal',10,150,0)
insert into Horaire values (1,'2:0','4:0',NULL)
insert into Horaire values (2,'8:0','1:0',NULL)
insert into Horaire values (3,'1:0','6:0',NULL)
insert into Horaire values (4,'9:0','10:0',NULL)
insert into Sance values (1,'Alhillal',1,1,100)
insert into Sance values (1,'Arif',2,2,150)
insert into Sance values (2,'Alhillal',2,2,80)
insert into Sance values (2,'MegaRama',1,2,200)
insert into Sance values (3,'MegaRama',2,2,600)
insert into Sance values (3,'Alhillal',3,1,100)
insert into Sance values (1,'Mabrouka',3,3,250)
select * from Acteur,Sance,Horaire,Salle,Cinma
insert into Acteur values (12,'hillal',7,'03/11/2010')
insert into Acteur values (2,'shari','anas','15/10/1989')
insert into Acteur values (3,'Zaid','badir','2/2/1991')
insert into Acteur values (4,'Dahamne','brahim','1/6/1198')
delete from Acteur where idActeur=1
/* 3) Triggers */
-- a
create trigger a on Cinma after delete
As
begin
print 'Imposible de supprimer'
rollback
end
-- b
create trigger bb on Acteur after insert
As
begin
declare @nom varchar(255),@prenom varchar(255),@id int
Select @nom = (select nom from inserted), @prenom = (select prnom from inserted)
select @id = (select idActeur from inserted)
update Acteur set nom = upper(@nom), prnom = upper(le (@prenom,1))+lower(right(@prenom,len(@prenom-1))) where
idActeur= @id
commit
end
-- cdelete f
delete from Cinma where
create trigger c on Cinma after delete
As
begin
converted by Web2PDFConvert.com

declare @nomCinma varchar(255)


set @nomCinma = (select nomCinma from deleted)
delete from Salle where nomCinma = @nomCinma
delete from Sance where nomCinma = @nomCinma
commit
end
-- d
create trigger d on Horaire after insert, update
As
begin
declare @heureDbut time, @heureFin time, @Dure float,@idHoraire int
set @heureDbut = (select heureDbut from inserted)
set @heureFin = (select heureFin from inserted)
set @idHoraire = (select idHoraire from inserted)
update Horaire set Dure = (datediff(second,@heureDbut,@heureFin))/3600 where idHoraire = @idHoraire
commit
end
-- e
create trigger ee on Sance after insert, update
As
begin
if (select tarif from inserted) > 1000
begin
print 'Le Tarif ne doit pas dpasser 1000 DH.'
rollback
end
end
/* Procdures : */
--a
alter proc PS_1(@code int, @nbr int output)
As
begin
select @nbr = count(r.idFilm)
from Acteur a, Rle r
where a.idActeur = @code and r.idActeur = a.idActeur
group by a.idActeur
end
declare @a int
exec PS_1 2, @a output
select @a
--b
create proc PS_2
As
begin
declare c cursor for (select * from Horaire)
declare @idHoraire int, @heureDbut time, @heureFin time,@Dure float, @test int
set @test = 1
declare @t table (idHoraire int, heureDbut time, heureFin time,Dure float)
open c
converted by Web2PDFConvert.com

fetch next from c into @idHoraire, @heureDbut, @heureFin,@Dure


while @@fetch_status = 0
Begin
if (datediff(second,@heureDbut, @heureFin)) < 0 or ((datediff(second,@heureDbut, @heureFin)) / 3600) > 5
set @test = @idHoraire
fetch next from c into @idHoraire, @heureDbut, @heureFin,@Dure
end
if @test = 0
print 'les conndtion est faux dans lenregistrement est : '+ cast(@idHoraire as varchar)
else
begin
delete from Horaire
insert into Horaire select * from @t
end
close c
deallocate c
end
--c
create proc PS_3
As
begin
declare c1 cursor for (select c.ville, COUNT(*),COUNT(s.noSalle) from Cinma c, Salle s where c.nomCinma = s.nomCinma
group by c.ville order by c.ville asc)
declare @v varchar(255), @nbrcnima int, @nbrsalle int
open c1
fetch next from c1 into @v, @nbrcnima, @nbrsalle
while @@FETCH_STATUS = 0
begin
print 'la ville est : '+ cast(@v as varchar(255))+'Nbr Cnima '+cast(@nbrcnima as varchar(255))+'Nbr Salle '+cast(@nbrsalle
as varchar(255))
fetch next from c1 into @v, @nbrcnima, @nbrsalle
end
close c1
deallocate c1
end
-- d
create table Grp_Cin (code int , descriptions varchar(255))
alter proc PS_4
As
begin
declare @i int
set @i = 1
while (@i < 5)
begin
insert into Grp_Cin values (@i,'Groupe'+CAST(@i as varchar))
set @i = @i +1
end
end
exec PS_4
select * from Grp_Cin
--e
converted by Web2PDFConvert.com

alter table Cinma add CodeG int


alter proc PS_4
As
begin
declare c2 cursor for (select c.nomCinma,COUNT(s.noSalle) from Cinma c, Salle s where c.nomCinma = s.nomCinma
group by c.nomCinma)
declare @NomC varchar(255), @compt int
open c2
fetch next from c2 into @NomC,@compt
while @@FETCH_STATUS = 0
begin
if @compt <= 1
update Cinma set CodeG = 1 where nomCinma = @NomC
if @compt between 1 and 3
update Cinma set CodeG = 2 where nomCinma = @NomC
if @compt between 3 and 5
update Cinma set CodeG = 3 where nomCinma = @NomC
if @compt > 5
update Cinma set CodeG = 4 where nomCinma = @NomC
fetch next from c2 into @NomC,@compt
end
end
exec PS_4
--f
create table T (
nomCinma varchar(255),
numro int,
rue varchar(255),
ville varchar(255),
noSalle int,
capacit int,
climatise int
)
select * from t
create proc PS_5
As
begin
insert into T select Cinma.nomCinma, numro, rue, ville,noSalle, capacit, climatise from Cinma , salle
end
exec PS_5

converted by Web2PDFConvert.com

Formateur

Directeur Pdagogique

Directeur du

Visa de La DRTA

complexe/Directeur de
l'EFP

Download Free Audiobook


Try Audible with a Free Audiobook. Listen on iPhone, Android or Tablet

Recommander ce contenu sur Google

Article plus rcent

D E R N I R E S

Accueil

Article plus ancien

P U B L I C A T I O N S

27/11/2014
27
Correction Theorique 2013 TDI OFPPT
Cours Ado.net C#
Exemple Demande D'emploi

converted by Web2PDFConvert.com

---Politique de confidentialit--- Copyright 2015 tdiway site de Dveloppement Informatique | Powered by Blogger
Design by Site5 WordPress Themes | Blogger Theme by NewBloggerThemes.com

converted by Web2PDFConvert.com