You are on page 1of 6

Examen avec corrigé d’Informatique Appliquée

Economie et Gestion - S6

Une agence immobilière gère la location (type meublée ou vide) des appartements et des
maisons pour le compte des propriétaires à travers une base de données dont le schéma
simplifié est ci-dessous :

➢ Chaque propriétaire remet en gestion à l’agence plusieurs appartements ou maisons


par le biais d’un contrat, identifié par une durée et un pourcentage, propre à chaque
bien.
➢ Chaque type de bien (appartement ou maison) est donné en location par un bail pour
une durée déterminée à un locataire contre un prix mensuel, et le même locataire peut
louer le même bien à des dates différentes.

I- Questions

1. Donner la définition de : Base de données, table, enregistrement, cl& primaire,


requête de sélection…
Voir cours
2. Expliquer l’utilité d’appliquer l’intégrité référentielle entre les tables
« Proprietaire » et « Contrat ».

L’intégrité référentielle évite les incohérences, alors en l’activant entre les tables
Proprietaire et Contrat, Access interdira la création d’un contrat si le propriétaire
n'existe pas au préalable.

3. Que se passe-t-il si on prend le couple (NumBien, IdLocataire) comme clé


primaire de la table « Bail » ? Déterminer la clé primaire de cette table.

Soit l’exemple suivant de deux enregistrements dans la table Bail :


-1-
NumBail NumBien IdLocataire DateBail DuréeBail
1 1 2 2/3/2012 4
2 1 2 2/4/2018 3

De l’exemple, le locataire avec l’Id = 2 a loué le même bien (numéro 1) à deux dates
différentes. Alors si on prend le couple ((NumBien, IdLocataire) comme clé primaire
de la table « Bail », le deuxième enregistrement sera rejeté par Access, parce qu’il
contient une valeur de clé répétée (1,2) et ceci contredit la deuxième règle de gestion
qui dit que le même locataire peut louer le même bien à des dates différentes.
Soit NumBail la clé primaire de la table Bail

4. Donner les relations entre les tables avec intégrité référentielle.

5. Parmi les enregistrements suivants lesquels seront rejetés par le SGBD et


pourquoi ?

Table : Locataire Table : Bail


IdLocataire Nom Prenom Ville NumBail NumBien IdLocataire DateBail DureeBail
1 Amine Casablanca 123 11 2 1/3/2012 3
Salim Rajae Tanger 124 3 4 2/1/2013 5
3 Amine Jamal Agadir 125 1 3 3/1/2013 2
4 Nasri Reda Tanger 124 1 3 1/2/2015 4

✓ Pour table Locataire :


Le 2ème enregistrement car le champ « IdLocataire » étant la clé primaire ne peut pas être
vide ou nulle.

✓ Pour table Bail :


Le 1er enregistrement car aucun locataire n’a l’Id = 2.
Le 4ème enregistrement car il s’agit d’une clé primaire répétée (redondance).

-2-
II- Soit la requête suivante :

Reformuler cette requête en SQL.

Select Bien.NumBien, TypeLocation, NumBail


From Bien Inner Join Bail On Bien.NumBien = Bail.NumBien
Where DateDiff("yyyy",[DateBail],Date()) < 10;
Ou
Select Bien.NumBien, TypeLocation, NumBail
From Bien, Bail
Where Bien.NumBien = Bail.NumBien And DateDiff("yyyy",[DateBail],Date()) <10;

III- Créer les requêtes suivantes en mode QBE ou SQL

a. Afficher le numéro, la ville et le prix de location des appartements meublés sur


Casablanca ou Rabat avec un prix soit inférieur à 5000 ou supérieur à 8000.

En SQL :
Select NumBien, VilleBien, PrixLocation
From Bien
Where (VilleBien="Casa" Or VilleBien="Rabat") And PrixLocation Not between 5000
And 8000 And TypeDeBien="Appartement" And TypeLocation="Meublée";

En QBE:

Ou

-3-
b. Afficher le numéro de bail, de bien et l’Id de locataire pour les bails effectués le
premier ou le dernier jour des mois de Janvier, Avril ou Juin des années 2017 et
2018 (les mois sont exprimés en lettres).

En SQL :
Select NumBail, NumBien, IdLocataire
From Bail
Where (Day(DateBail) In (1,30) And Format(DateBail,"mmmm") In ("Avril","Juin")
And Year(DateBail) In (2014,2015)) Or (Day(DateBail) In (1,31) And
Format(DateBail,"mmmm")="Janvier" And Year(DateBail) In (2014,2015));

En QBE :

Ou

c. Afficher le nom, le prénom des locataires et la durée de leur bail effectué le mois
courant des années 2014 et 2015. Limiter la sélection pour les bails d’une durée
différente de 5 ans.

En SQL :
Select Nom, Prenom, DuréeBail
From Locataire, Bail
Where Locataire.IdLocataire = Bail.IdLocataire And Bail.DuréeBail <>5 And
Month(DateBail) = Month(Date()) And Year(DateBail) In (2014,2015);

-4-
En QBE :

d. Afficher le numéro et la durée des bails ainsi que le nom et le prénom des
locataires ayant loué le bien numéro 2 dans les six dernières années de la date du
jour.

En SQL :
Select NumBail, DuréeBail, Nom, Prenom
From Locataire Inner Join Bail On Locataire.IdLocataire = Bail.IdLocataire
Where NumBien = 2 And DateDiff("yyyy",[DateBail],Date()) <= 6;

En QBE:

e. Afficher le numéro, le type de bien et le prix de location. Limer la sélection pour


les biens meublés mis en location dans une période à déterminer par l’utilisateur.

En SQL :
Select Bien.NumBien, TypeDeBien, PrixLocation
From Bien Inner Join Bail On Bien.NumBien = Bail.NumBien
Where (TypeLocation="Meublée") And (DateBail Between [Entrer date début] And
[Entrer date fin]);

En QBE :

f. Afficher le numéro de contrat, le type de bien, le prix de location et le prix mise à


jour si on donnait une augmentation de 20% pour les biens meublés avec un
contrat moins de 2 ans.
-5-
En SQL :
Select NumContrat, TypeDeBien, PrixLocation, IIf([Duree]< 2 And [TypeLocation] =
"Meublée", [PrixLocation]*1.2, [PrixLocation]) AS PrixMAJ
From Bien Inner Join Contrat On Bien.NumBien = Contrat.NumBien;

En QBE :

g. Afficher le nom, le prénom des locataires et la durée de leurs bails faits les
vendredis du mois de décembre de l’année 2018.

En SQL :
Select Nom, Prenom, DuréeBail
From Locataire Inner Join Bail On Locataire.IdLocataire = Bail.IdLocataire
Where (Format([DateBail],"dddd") = "Vendredi") And (Month([DateBail]) = 12) And
(Year([DateBail]) = 2018);

En QBE :

-6-

You might also like