Vous êtes sur la page 1sur 4

LYCÉE HMIDA BAKIR MNIHLA DEVOIR DE CONTROLE N° 1

MATIÈRE : STI CLASSE : 4ème Sciences de l’Informatique

Enseignant : Mme Briki ASMA Année Scol. :2022/23

Exercice 1 ( 3 points)
Dans un contexte de base de données relationnelle, compléter des mots de cette liste :
ON DELETE CASCADE, NOT NULL, SELECTION, CHECK, ON UPDATE CASCADE,
PROJECTION, BETWEEN, UNIQUE, NULL, DEFAULT, DISTINCT
N° Clause/terme Utilité
1 ON UPDATE Pour modifier automatiquement la valeur d’une clé étrangère dans une table fille à
CASCADE la suite de la modification de la valeur de la clé primaire de la table mère
correspondante
2 NOT NULL Pour garantir l’obligation de la saisie d’une valeur dans une colonne
3 CHECK Pour garantir que la valeur d’une colonne soit conforme à une contrainte
4 PROJECTION Recherche de colonnes à partir d’une table
5 DISTINCT Eviter les résultats en doubles pour une même colonne
6 DEFAULT Affecter une valeur à une colonne si cette première n’est pas saisie par l’utilisateur

Exercice 2 ( 11 points)
Afin de mieux gérer les différentes locations des panneaux publicitaires, le responsable informatique
d'une agence publicitaire propose d’utiliser la base de données simplifiée intitulée "Gestion_Panneaux"
décrite par le schéma textuel suivant :
Panneau ( IdPanneau , AdresseP , PrixLocJour )
Client ( IdClient , NomCli , PrenomCli , email )
SpotPub ( IdSpot , Description , idClient# )
Location ( IdPanneau # , IdSpot# , DateLoc , NbJours )
A) 1/ Compléter la représentation textuelle de la base de données par les clés primaires et/ou
étrangères nécessaires en tenant compte des règles suivantes :
R1 : Un spot publicitaire ne concerne qu’un seul client
R2 : Un client peut avoir plusieurs spots publicitaires
R3 : Un panneau peut être réservé à plusieurs spots publicitaires durant des dates différentes
R4 : Un spot publicitaire peut être affiché sur plusieurs panneaux.
2/Donner les commandes SQL permettant de :

a/ Créer les tables Panneau et SpotPub en respectant les types et les propriétés cités dans la
description ( voir tableau de la page suivante)
CREATE TABLE SpotPub (
CREATE TABLE Panneau(
IdSpot VARCHAR(4) PRIMARY KEY ,
IdPanneau VARCHAR(4) PRIMARY KEY ,
Description VARCHAR(100),
Adresse VARCHAR(50) NOT NULL ,
idClient VARCHAR(4) REFERENCES client( idClient)
PrixLocJour DECIMAL(7,3) CHECK (PrixLocJour>=100)
);
);

Page 1 / 4
Description des colonnes des tables de cette base de données :
Nom Description Type Taille Contrainte
IdPanneau Identifiant d'un panneau Texte 4
AdresseP Adresse d'un panneau Texte 50 obligatoire
PrixLocJour Prix de location journalier exprimé en DT Decimal 7,3 > =100
IdClient Identifiant d'un client Texte 4
NomCli Nom d'un client Texte 50 obligatoire
PrenomCli Prenoom d'un client Texte 100 obligatoire
Email Email du client Texte 50
IdSpot Identifiant d'un spot publicitaire Texte 4
Description Description d'un spot publicitaire Texte 100
DateLoc Date de début de location d'un panneau pour un S potPub Date Null interdit
NbJours Nombre de jours de location d'un panneau pour un S potPub Entier 3

b/ Pour contacter un client, il est préférable d’utiliser son numéro de téléphone plutôt que de lui
envoyer un email. Ecrire la(les) instruction(s) nécessaires pour supprimer la colonne email et de la
remplacer par la colonne Tel (de type entier, de taille 8 et ne pouvant pas être vide)
ALTER TABLE Client
DROP Email ;

ALTER TABLE Client


ADD Tel INT(8) NOT NULL ;
c/ Ajouter une contrainte nommée Cnj permettent de garantir que le nombre de jours de location
d'un panneau soit au moins égal à 1.
ALTER TABLE Location
ADD CONSTRAINT cnj CHECK( NbJours>=1) ;

d/ On présente le contenu des tables suivantes :


Panneau Client
IdPanneau AdresseP PrixLocJour IdClient NomClient PrenomCli
P001 Carthage 100 CL01 ZRIBI Adnen
P002 Béja 180 CL02 LOUMI Zied
P003 Ariana 190 CL03 SELMI Latifa

e/ Insérer les lignes suivantes dans la table SpotPub en utilisant une seule instruction SQL
INSERT INTO SpotPub ( IdSpot , idClient, Description )
SpotPub
VALUES (‘SP01’, ‘CL01‘, ‘Yaourt’),
IdSpot IdClient Description
(‘SP01’, ‘CL02‘, ‘Fromage’), SP01 CL01 Yaourt
SP01 CL02 Fromage
(‘SP03’, ‘CL04‘, ‘Tomate’),
SP03 CL04 Tomate
NB : L’ordre des colonnes dans ce tableau n’est pas celui de la
représentation textuelle

SpotPub ( IdSpot , Description , idClient# )

f/ Lors de l’exécution de l’instruction d’insertion, un message d’erreur est affiché. Identifier (en
l’expliquant) l’origine de cette erreur.
La valeur SP01 de la clé primaire (IdSpot) est la même pour la 1ère et la 2ème ligne alors qu’elle
doit être unique  Contrainte d’intégrité de table
La valeur CL04 de la clé étrangère (IdClient) n’existe pas dans la colonne IdClient (clé primaire
de la table mère Client)  Contrainte d’intégrité référentielle
Page 2 / 4
3/ Ecrire des requêtes SQL permettant de :
a/ Afficher (dans l’ordre décroissant de leur PrixLocJour), les identifiants et les adresses
des panneaux publicitaires situés à Béja.

SELECT IdPanneau, AdresseP

FROM Panneau

WHERE Adresse=’Béja’

ORDER BY PrixLocJour DESC ;

b/ Diminuer de 10% le prix de location journalier des différents panneaux ci ce dernier est
compris entre 150 et 200
UPDATE Panneau

SET PrixLocJour = PrixLocJour *0.9

WHERE PrixLocJour BETWEEN 150 AND 200 ;

 BETWEEN s’applique pour un intervalle d’entiers, de réels, de caractères ou de chaines


de carctères
c/ Afficher l’identifiant, le nom et le numéro de téléphone de chaque client dont le nom
commence par A ou le prénom se termine par R

SELECT IdCli, NomCli, Tel

FROM Client

WHERE ( NomCi LIKE ‘A%’ ) OR (PrenomCli LIKE ‘%R’) ;

d/ Afficher (en utilisant des alias), le plus haut ainsi que le plus bas prix de location
journalier des différents panneaux

SELECT MAX(PrixLocJour) As Prix_Max , Min(PrixLocJour) As Prix_Min


FROM Panneau ; As est optionnel

Exercice 3 (2 points)
Cocher la bonne réponse :
a) onLoad [ ] S'exécute lorsque l’utilisateur télécharge un fichier multimédia
[ ] S'exécute lorsque le navigateur charge la page en cours
[ ] S'exécute lorsque l’utilisateur clique sur le bouton de type Submit

b) onblur [ ] Se déclenche lors d’un clic sur l’élément.


[ ] Se déclenche au moment où l'élément obtient le focus.
[ ] Se déclenche au moment où l'élément perd le focus

c) prompt() [ ] Affiche un message dans une boîte de dialogue.


[ ] Affiche une boite de dialogue avec une zone de saisie.
[ ] Affiche un message directement dans le document HTML.

d) ch.trim() [ ] Supprime le premier et le dernier espace de ch.


[ ] Supprime tous les espaces existant dans ch.
[ ] Supprime tous les espaces existant au début et à la fin de ch.

Page 3 / 4
Exercice 4 (4 points)

Soit la page Calcul.html contenant le formulaire cicontre :


Le clic sur le bouton « calculer » fait appel à une fonction
JavaScript intitulée calculer permettant :

 de vérifier si le prix d’une nuit est un réel positif,


sinon
 calculer et afficher dans la zone Prix Total le prix
sachant que :
prix total = Prix d’une nuit*Nombre de nuits +
frais supplémentaires

NB : Les zones de texte sont identifiées respectivement


par : T1, T2, T3 et T4
Travail demandé : Compléter les codes HTML et JS suivants sachant que :

a/ la fonction calculer et contenue dans le fichier contrôle.js

<head>
<script language=’’javascript’’ scr =’’contrôle.js’’> </script>
</head>

b/ L’appel de la fonction calculer() est effectué en cliquant sur le bouton Calculer

<input type="Button " value="Calculer" onclick ="calculer()">

c/ La déclaration de la fonction calculer()

function calculer() {

prix = document.getElementById("T1").value ; // récupérer le prix d’une nuit


if (isNaN(prix) || (prix<0)) { //on accepte aussi isNaN(prix) || Number(prix<0)

alert("Le prix doit etre > 0");

} else

{ nb = document.getElementById("T2").value; //récupérer le nombre de nuits

s = document.getElementById("T3").value; //récupérer les frais supplémentaires

//calculer le prix total

document.getElementById("T4").value=prix*nb+s ;

Page 4 / 4

Vous aimerez peut-être aussi