Exams LST INFO.pdf
Télécharger PDFUniversité Sultane Moulay Slimane
FST- Beni Mellal
Filière : Licence Informatique
Module : Base des Données
Exercice I: Dépendance fonctionnelle et Normalisation
La relation suivante décrit des commandes faites par des clients, avec les produits et quantités commandés par client.
Commandes (NumCom, DateCom, NumCli, AdrCli, NumProd, Prix, Qte)
- Quelle est la clé de cette relation?
- En quelle forme normale elle est ?
- La mettre en 3FN le cas échéant.
Exercice II: Modèle E/A, Passage au relationnel Dépendance fonctionnelle et Normalisation
On voudrait créer une base de données pour la gestion du personnel d'une compagnie organisée comme suit:
- La compagnie est constituée d'un ensemble de départements.
- Un département est constitué d'un ensemble d'employés, mène un ensemble de projets et possède un ensemble de bureaux.
- Pour chaque employé, on a l'historique des emplois qu'il a occupé, et pour chacun de ces emplois, on a l'historique des salaires perçus dans le cadre de cet emploi.
- Chaque bureau possède un ensemble de postes téléphoniques.
La BD doit contenir les informations :
- Pour chaque département: un numéro de département unique, le budget, l'étage où il est situé et le numéro d'employé du chef de département.
- Pour chaque employé: un numéro d'employé unique, un nom et prénom, le numéro du projet sur lequel il travaille actuellement, le numéro de bureau ainsi que le n° téléphone.
- On a aussi, le titre de chaque emploi que l'employé a tenu, avec la date et le salaire pour chaque salaire différent perçu pour cet emploi.
- Pour chaque projet: un numéro de projet unique et le budget alloué au projet.
- Pour chaque bureau: un numéro de bureau unique, une superficie en mètre2 et les numéros des postes téléphoniques dans ce bureau.
- Quelle est la liste des données élémentaires et quelles sont les dépendances fonctionnelles qui les lient?
- Donner un schéma E/A.
- En déduire un schéma de relations.
- Montrer que ce schéma est en 3FN, sinon le normaliser.
Exercice III: Formalisation en algèbre relationnelle de requêtes
On suppose qu'une bibliothèque gère une base de données dont le schéma est le suivant (les clés primaires des relations sont soulignées) :
Emprunt(Personne, Livre, DateEmprunt, DateRetourPrevue, DateRetourEffective)
Retard(Personne, Livre, DateEmprunt, PénalitéRetard)
Exprimer, lorsque cela est possible, les requêtes suivantes en algèbre relationnelle, puis en SQL.
- Quelles sont les personnes ayant emprunté le livre "Recueil Examens BD"?
Exercice IV: Traduction de requêtes en langue naturelle
Un organisme de gestion de spectacles, de salles de concert et de vente de billets de spectacles gère une base de données dont le schéma relationnel est le suivant :
Spectacle(Spectacle_ID, Titre, DateDéb, Durée, Salle_ID, Chanteur)
Concert (Concert ID, Date, Heure, Spectacle ID)
Salle (Salle ID, Nom, Adresse, Capacité)
Billet (Billet ID, Concert_ID, Num_Place, Catégorie, Prix)
Vente (Vente_ID, Date_Vente, Billet_ID, MoyenPaiement)
Les attributs soulignés sont les attributs appartenant à la clé primaire. Ils sont de type entier.
L'attribut Salle ID de la relation Spectacle est une clé étrangère qui fait référence à l'attribut de même nom de la relation Salle. L'attribut Spectacle_ID de la relation Concert est une clé étrangère qui fait référence à l'attribut de même nom de la relation Spectacle. L'attribut Concert_ID de la relation Billet est une clé étrangère qui fait référence à l'attribut de même nom de la relation Concert.
L'attribut Billet_ID de la relation Vente est une clé étrangère qui fait référence à l'attribut de même nom de la relation Billet.
Questions:
Traduit les requêtes suivantes en langage naturelle
- ΠDateConcert(Chanteur='Corneille'(Spectacle) × σNom='Zenith'(Salle))
- ΠChanteur(Spectacle) - ΠChanteur(Spectacle ▷ σ(Nom='Cygate')(Salle))
- ΠChanteur, Salle_ID(Spectacle × Salle) ÷ ΠSalle_ID(Salle)
- ID(Vente)
- D'abord R1 = ΠBillet_ID(Billet) - ΠBillet_ID(Vente)
- SELECT Concert_ID, Date FROM Concert t WHERE NOT EXISTS (SELECT * FROM Billet u WHERE u.Concert_ID = t.Concert_ID AND NOT EXISTS (SELECT * FROM Vente v WHERE u.Billet_ID = v.Billet_ID))
Exercice V: Modèle entités-relations
Gestion d'une cinémathèque : Une cinémathèque stocke des bobines de films qu'elle loue à des ciné-clubs abonnés. Chaque ciné-club abonné, qui a un nom et une adresse, a un numéro d'identification.
Chaque film a une référence, un titre, une durée et un nombre d'exemplaires disponibles. Les films sont classés en catégories, un film n'appartenant qu'à une seule catégorie. Une catégorie a un numéro et un intitulé.
Un ciné-club ne peut pas emprunter plus de 3 films simultanément. A chaque location de film, la date du jour est enregistrée. Une location est concédée pour un certain nombre de jours qui peut varier suivant les abonnés.
Chaque film a un réalisateur et un ou plusieurs acteurs principaux. Un réalisateur a un numéro, un nom, un prénom et une nationalité. Un acteur a un numéro, un nom et un prénom.
Un film peut avoir été primé lors de certaines manifestations (Palme d'or au Festival de Cannes, Ours d'argent au festival de Berlin, ...). Dans ce cas, la ville, l'intitulé et l'année de la récompense sont mémorisés et un numéro est attribué à cette récompense. Une récompense peut ne pas être attribuée, être attribuée à un seul film ou être attribuée à deux films ex-aequo.
- Identifier les différentes entités et leurs propriétés pour cette gestion
- Préciser les différentes associations entre les entités et ajouter les propriétés pour les associations porteuses de propriétés.
- Donner le schéma du modèle E/A en précisant les cardinalités pour les différentes associations.
- Passer au Modèle Relationnel en précisant pour chaque table la clé primaire.
Exercice VI: Formalisation en algèbre relationnelle de requêtes
On considère les deux relations suivantes où les clés sont soulignées :
LESFILMS (titre, pays, année, réalisateur, durée)
La relation donne pour chaque film identifié par son titre, le pays, l'année de sortie, le réalisateur et la durée.
LESACTEURS (titre, acteur)
La relation donne pour chaque film l'ensemble des principaux acteurs.
Les attributs ont les significations et les types suivants
- titre : titre du film (chaîne 50 caractères)
- pays : pays d'où le film est originaire (chaîne 10 caractères)
- année : année de sortie du film (entier 4 chiffres)
- réalisateur: nom du réalisateur du film (chaîne 20 caractères)
- durée : durée du film en mn (entier 3 chiffres)
- acteur : nom d'un acteur (chaîne 20 caractères)
A l'aide de l'algèbre relationnelle exprimer les requêtes suivantes :
- Faire une liste de tous les films sortis depuis 90
- Donner les années de sortie des films dans lesquels Gabin joue.
- Donner les acteurs qui jouent dans tous les films de Truffaut (Que Truffaut a fait jouer dans tous ses films)
- Trouver tous les réalisateurs qui ont été acteurs uniquement dans des films qu'ils ne réalisaient pas eux-mêmes.
Exercice VII: Elaboration de MCD
Une agence de location de maisons et d'appartements désire gérer sa liste de logements. Elle voudrait en effet connaître l'implantation de chaque logement (nom de la commune et du quartier) ainsi que les personnes qui les occupent (les signataires uniquement).
Le loyer dépend d'un logement, mais en fonction de son type (maison, studio, T1, T2...) l'agence facturera toujours en plus du loyer la même somme forfaitaire à ses clients. Par exemple, le prix d'un studio sera toujours égal au prix du loyer + 30 DH de charges forfaitaires par mois.
Pour chaque logement, on veut disposer également de l'adresse, de la superficie ainsi que du loyer. Quant aux individus qui occupent les logements (les signataires du contrat uniquement), on se contentera de leurs noms, prénoms, date de naissance et numéro de téléphone.
Pour chaque commune, on désire connaître le nombre d'habitants ainsi que la distance séparant la commune de l'agence.
L'agence désire gérer l'historique de l'occupation des logements par les individus, pour chaque location, on enregistre la date de début et la date de fin.
On considèrera de plus qu'un individu peut être signataire de plusieurs contrats de location. On précise aussi qu'un logement peut faire l'objet de plusieurs locations disjointes dans le temps.
L'unité géographique commune possède Dans un seul schéma : retenue pour la gestion des logements est le quartier et on considère que chaque commune possède au moins un quartier.
- Identifier les différentes entités et leurs propriétés pour cette gestion.
- Préciser les différentes associations entre les entités et ajouter les propriétés pour les associations porteuses de propriétés.
- Préciser les cardinalités pour les différentes associations.
Exercice VIII: SQL
Soit la base de données GestionCours, contenant les relations :
Etudiant (NurnEtud : Numérique, Nom : Texte, Prenom : Texte, Age: Numérique)
Enseignant (NumEnse: Numérique, Nom : Texte, Prenom : Texte)
Cours (NumCours: Numérique, Intitule: Texte, #NumEnse: Numérique, NombreHeures: Numérique)
Inscription (#NumEtud : Numérique, #NumCours: Numérique)
Les clés primaires sont soulignées et les clés étrangères commencent par un #.
Avant de procéder à la création des requêtes, on vous conseille de tracer le MLD qui correspond à cette base de données.
Ecrire les requêtes SQL permettant :
- La création de la base de données GestionCours.
- La création des tables << Etudiant >> et << Cours >>, sachant que tous les attributs de ces deux tables ne doivent pas être vides.
- L'insertion de l'étudiant (12045', 'Alami','Amine';19) et de cours (17, 'Base de Données', 15, 85), respectivement, dans les tables Etudiant et Cours.
- L'inscription de l'étudiant ('12045','Alami', 'Amine', 19) dans le cours (17. 'Base de Données', 15, 85).
- L'affichage de nom et de prénom de tous les étudiants de moins de 20 ans.
- L'affichage de nom et de prénom de l'enseignant responsable du cours de 'Microbiologie'.
- L'affichage de nom et de prénom de tous les étudiants inscrits au cours de 'Probabilités'.
Exercice IX: Java
Un pharmacien souhaite automatiser la gestion de son stock de médicaments en utilisant un ordinateur. Chaque médicament est identifié par les informations suivantes: Code, Nom, Prix unitaire, Type (Sirop, Comprimé, Injection, ...etc), Composants (Produits constituant le médicament), Patient (Personnes qui peuvent utiliser ce médicament : Enfant, Adolescent ou Adulte) et Quantité (Nombre de boites) dans le stock.
La gestion de la pharmacie s'effectue à l'aide des classes suivantes :
- Ecrire une classe Medicament contenant :
- Le code du médicament (code: int).
- Le nom du médicament (nom: String).
- Le prix unitaire du médicament (prix : double).
- La type du médicament (type: String).
- Le nombre de produits constituant le médicament (nb : int).
- Les produits constituant le médicament (comp[]: String).
- Le patient qui va consommer le médicament (pat: String).
- La quantité du médicament dans le stock (quan : int).
- Un constructeur Medicament() qui prend en paramètre le code du médicament.
- Une méthode clavier() pour saisir et retourner une chaîne de caractères.
- Une méthode lecture() permettant la saisie du reste des informations (nom, prix, type, nb, comp, pat et quan).
- Une méthode affichage() pour afficher toutes les informations du médicament.
- Tester la classe Medicament en écrivant une application JAVA (dans une autre classe) capable de créer un objet de type Medicament, de saisir et d'afficher les informations de l'objet crée.
- Ecrire une classe Pharmacie répondant au cahier des charges suivant:
- Le nombre maximum des médicaments (max: int).
- Un tableau des médicaments (table[]: Medicament ).
- Le nombre des médicaments enregistrés (nbe: int).
- Un constructeur qui prend en paramètre deux entiers pour initialiser le nombre maximum des médicaments que peut contenir la pharmacie et le nombre des enregistrements.
- Une méthode boolean ajouteMedicament(Medicament m) qui ajoute un médicament au tableau « table », la méthode renvoie true si l'ajout s'est correctement effectué, false sinon. Dans le cas où le médicament existe dans le tableau « table », il faut faire une mise à jour dans la quantité et le prix (en cas de changement du prix, il faut retenir le nouveau prix).
- Une méthode afficher(Medicament[] ph,int d) qui permettra d'afficher l'ensemble des médicaments enregistrés dans un tableau de type Medicament.
- Modifier l'application JAVA pour tester la classe Pharmacie.
- Enrichir la classe Pharmacie d'une méthode float total_prix() qui calcule et retourne le prix total des médicaments enregistrés dans le tableau « table ».
- Ajouter à la classe Pharmacie une méthode Medicament[] supprime_Medicaments(String cpt)
FAQ
1. Qu'est-ce qu'une clé primaire dans une base de données?
Une clé primaire est un attribut ou un ensemble d'attributs qui identifie de manière unique chaque enregistrement dans une table de base de données.
2. Qu'est-ce qu'une clé étrangère dans une base de données?
Une clé étrangère est un attribut ou un ensemble d'attributs qui crée un lien entre les données de deux tables différentes.
3. Qu'est-ce que la normalisation dans une base de données?
La normalisation est le processus de structuration d'une base de données pour réduire la redondance et améliorer l'intégrité des données.