CORRIGES
CONTROLE DE CONNAISSANCES :
1. Une base de données est une collection de données structurées et organisées qui, après avoir été saisies une seule fois, sont accessibles aux différents utilisateurs.
- Une table est un ensemble de données relatives à un même sujet (ou entité) et structurées sous forme de tableau. On l’appelle aussi relation.
- Dans une table, un attribut est une colonne correspondant à une propriété élémentaire de l'objet décrit par cette table. On l’appelle aussi champ.
2. Il existe plusieurs modèles de base de données :
-Modèle hiérarchique
-Modèle en réseau
-Modèle orienté objet
-Modèle relationnel
3. C’est le modèle relationnel
4. C’est la clé primaire
5. C’est une contrainte d’intégrité
6. C’est une colonne d’une table fille qui se trouve être clé primaire dans une autre table dite table mère.
Son rôle est d’assurer le lien entre les deux tables.
EXERCICE I:.
1-Code-film pour la table FILM
-N°Salle pour la table SALLE
-Code_film, N°Salle, pour la table SEANCE (ici la clé primaire est composée)
2. Liens entre les tables
- FILM → est lié à SEANCE par Code_film (clé étrangère dans SEANCE).
- SALLE → est lié à SEANCE par N°Salle (clé étrangère dans SEANCE).
→ Cela forme deux relations 1,n :
- Un film peut avoir plusieurs séances.
- Une salle peut accueillir plusieurs séances
3.
EXERCICE II:
1-Non
//La colonne Qualification est un attribut simple de la table EMPLOYE, donc un seul champ par employé.
→ Si un employé pouvait avoir plusieurs qualifications, on aurait une relation à part comme :
EMPLOYE_QUALIFICATION (NumEmp, Qualification)
2 – non
//Dans PROJET, il y a un champ NumEmp, ce qui signifie que chaque projet est affecté à un seul employé, mais un employé n’est pas lié à plusieurs projets dans ce sens.
→ Pour gérer plusieurs employés sur un projet, on aurait une table intermédiaire :
PARTICIPATION(NumEmp, NumProjet)
3 –oui :
//Dans la table SERVICE, le champ Responsable (probablement une référence à NumEmp) n’est pas unique, donc un même NumEmp peut apparaître dans plusieurs lignes.
→ Donc un même employé peut être responsable de plusieurs services.
4 – non
//Le champ Responsable est un attribut unique par service, donc un seul responsable par service est prévu.
→ Pour gérer plusieurs responsables, il faudrait une relation :
RESPONSABILITE(NumEmp, NomService)
EXERCICE III :
1)
2)
2-1 oui
//L’association Enseigne (CodeProf, CodeMat) permet à un même CodeProf d’apparaître avec plusieurs CodeMat → un prof peut enseigner plusieurs matières
2-2 non
//Le champ Libellé est un attribut de Matière, donc chaque matière à un seul libellé.
La ligne "Libelle_matiere(libellé)" semble redondante ou confuse, à moins qu’elle soit une entité séparée (ce qui n’est pas clair ici).
2-3 oui
//L'association Enseigne permet que plusieurs CodeProf soient liés à un même CodeMat.
Donc plusieurs professeurs peuvent enseigner la même matière.
EXERCICE IV:
1. Une contrainte d'intégrité est une règle appliquée à une colonne ou à une table et qui doit être toujours vérifiée.
2. Le service 40 n’est pas créé, l’employé 456 et 123 se trouvent deux fois chacun dans la clé primaire, Tounsi est dans deux services différents.
3.a-le système de gestion des bases de données.
b- Le SGBD est constitué de deux composantes principales : un moteur et une interface.
c- Un SGBD a pour rôle de :
-Permettre l’accès aux données.
-Autoriser un accès aux informations à des multiples utilisateurs.
-Manipuler les données présentes dans la base de données (insertion, suppression, modification, etc.)
Il permet ainsi à l'utilisateur de manipuler une ou plusieurs bases de données dans des termes abstraits, sans tenir compte de la façon dont l'ordinateur les maintient.
d-Fonctions de définition de définition des données
-Fonctions de manipulation des données
-Fonctions de contrôle des données
EXERCICE V:
1-Incohérences :
- Pour la classe de 3M3, le nombre d’élèves diffèrent pour les élèves 28 et 30.
-le matricule Mat0055 est attribué à deux élèves différents ada et bisseck.
Redondance : lorsque plusieurs élèves font la même classe, il y a beaucoup de répétitions qui occupent inutilement la place dans les supports de stockage.
Transitivité : il n’y a pas dépendance directe entre le numéro de l’élève (clé primaire) et le nombre d’élèves par exemple.
2-Il faut éclater cette table en deux
ELEVES (N°Elève, Nom,Prénom,Date de naissance, code_Classe)
CLASSE (Code_Classe , Désignation,Nombre_d’eleves)
EXERCICE VI :
1-Langage de manipulation des données (LMD)
2-Système de Gestion des Bases de Données,
Access, MySQL, Oracle, SQL server, Inter base, Sybase, PostgreSQL, etc.
3-Avantages :
-les données ne sont pas redondantes
- Les données sont structurées
- L’accès distant aux données par réseau ou Cloud
- L’accès aux mêmes données par plusieurs utilisateurs simultanément
- Contrôler l’intégrité entre plusieurs utilisateurs et la confidentialité des données
- Assurer l’indépendance entre les données et les traitements
- Assurer la sécurité des accès aux données
- La possibilité d’actualiser les données
4-SELECT (Etablissement) FROM EXAMENS WHERE Décision= « ADMIS » ;
EXERCICE VII :
1-AKOA
2-SELECT (nom, prenom, classe, age) FROM candidat WHERE Nom=”FOTSO” ;
3-a) cette requête crée une table nommée client contenant les colonnes Numero, Nom, ville et Sexe.
b)Client
|
Numéro |
Nom |
Ville |
Sexe |
|
1 |
Eboutou Yvan |
Yaoundé |
homme |
|
2 |
EmboloValerie |
Mbalmayo |
Femme |
|
3 |
Fossi Alain |
Bafoussam |
homme |
|
4 |
Kesseng Laure |
Yaounde |
femme |
c)
SELECT (nom, ville,sexe,) FROM candidat WHERE Nom =”Kesseng Laure ” ;
EXERCICE VIII:
1. Select Num_Chambre
From Chambre
Where Confort = 'TV' ;
2. Select Num_Chambre, Nbr_Pers
From Chambre ;
3. Select Sum(Nbr_Pers)
From Chambre ;
4. Select Prix/Nbr_Pers, Num_Chambre
From Chambre
Where Equ = 'TV'
5. Select Num_Chambre, Num_Client
From Réservation
Where Date_Arr = '25/12/2006'
6. Select Num_Chambre
From Chambre
Where Prix<='80' Or (Confort='bain' And Prix <='120');
7. Select Nom
From Client
Where Nom like 'RA%';
8. Select Count(Num_Chambre)
From Chambre
Where Prix between 85 and 120;
9. Select Nom
From Reservation R, Client C
Where Date_Dep is Null And R.Num_Client = R. Num_Client
EXERCICE IX:
PARTIE A :
1-INSERT INTO client
(code_client, nom_client, prenom_client, adr_client, tel_client, email_client, chiffre_affaire_année_encours, cumul_chiffre_affaire)
VALUES (1000,'NDENDE', 'Paul','BP 123 Yaoundé',
676 14 00 34, ‘ndende@gmail.com‘, 0, 0);
Remarque : il faut tenir compte de l’ordre des colonnes.
2-Compte tenu du fait que chaque colonne de la table Client, reçoit une valeur et que l'ordre de ces valeurs est le même que celui des colonnes, on aurait pu dans ce cas omettre de préciser ces colonnes. La commande devient :
Code SQL :
INSERT INTO Client
VALUES (1000,'NDENDE', 'Paul','BP 123 Yaoundé',
676 14 00 34, ‘ndende@gmail.com ‘, 0, 0);
3-INSERT INTO client (nom_client, code_client, adr_client)
VALUES ('SCB Cameroun',1020, 'BP 345 Douala');
Remarque : Les colonnes, de la table Client, qui sont absentes ne sont soumises à aucune des contraintes d'intégrité. Ces colonnes recevront une valeur NULL au moment de l'insertion de la ligne.
4-. Code SQL :
INSERT INTO client (nom_client, prenom_client, code_client)
VALUES ('Tatio','Alphonse',1040);
Remarque : Cette commande ne peut pas être exécutée à cause de la contrainte d'intégrité
NOT NULL pour la colonne Adr_client qui n'a pas été respectée ici.
5- INSERT INTO client (nom_client, adr_client)
VALUES ('Socsuba SA','BP 2367 Yaoundé’);
Remarque : Cette commande ne peut pas être exécutée à cause de la contrainte d'intégrité
PRIMARY KEY qui est violée. Les attributs constituant la clé primaire doivent obligatoirement être présents.
6- INSERT INTO client (nom_client, code_client, adr_client)
VALUES ('BICEC’, 1040, 'BP 987 Yaoundé');
Remarque : Cette commande ne peut pas être exécutée à cause de la contrainte d'intégrité d'unicité de la clé primaire qui n'a pas été respectée. Le code client 1040 à été déjà attribué.
7- UPDATE client
SET prenom_client= « Pierre-Alphonse »
WHERE code_client=1040 ;
PARTIE B :
1- Code SQL :
SELECT code_client, nom_client, prenom_client
FROM client ;
2- Code SQL :
SELECT *FROM client ;
3- SELECT code_client 'Code Client', nom_client 'Nom Client',prenom_client 'Prénom Client'
FROM client;
4- SELECT chiffre_affaire _annee_encours
FROM client;
5- SELECT DISTINCT chiffre_affaire _année_encours
FROM Client;
6- SELECT *FROM Client
WHERE cumul_chiffre_affaires
BETWEEN 500000 AND 800000;
EXERCICE X :
PARTIE A :
1- SELECT des_art 'Désignation Produit', PU 'Prix Unitaire', Qte_stock 'Quantité Stock', PU*Qte_stock 'Valeur Stock'
FROM Article;xemple 6marque
Remarque : La colonne résultat, relative à la valeur du stock, sera calculée à partir du prix unitaire et la quantité en stock.
2- SELECT date_comm, code_art,
FROM commande c, article a
WHERE (c.ref_art = a.code_art);
PARTIE B
1-SELECT COUNT(*)
FROM article
WHERE qte_stock > 1000;
2-. SELECT SUM (qte_stock)
FROM article;
3-SELECT MIN (qte_stock) 'stock Min',
MAX (qte_stock) 'stock Max',
AVG (qte_stock) 'stock Moyen'
FROM article;