16 janv. 2018

EFM - SGBD II , Examen Base de données / SQL II

 EFM - SGBD II 
 Examen Base de données / SQL 
La durée de l'examen : 2H
Développement Informatique/Digitale

Partie 1 Théorique ( 10 points ) : 

  1. Qu'est-ce qu'une table dans une base de données et quelle est son rôle ?
  2. Comment crée-t-on une nouvelle table dans une base de données à l'aide de SQL ?
  3. Quels sont les différents types de données que l'on peut stocker dans une table SQL ?
  4. Qu'est-ce qu'une contrainte de clé primaire et comment l'ajoute-t-on à une table SQL ?
  5. Comment ajoute-t-on une nouvelle colonne à une table SQL existante à l'aide de la commande ALTER TABLE ?
  6. Qu'est-ce qu'un ensemble en théorie des ensembles et comment est-il utilisé dans les bases de données SQL ?
  7. Comment réaliser le produit cartésien entre deux tables SQL ?
  8. Qu'est-ce qu'une relation dans une base de données SQL et comment est-elle représentée ?
  9. Quelles sont les différences entre une jointure interne et une jointure externe en SQL ?
  10. Comment réaliser une jointure en utilisant la commande JOIN en SQL ?

 

Partie 2 Pratique 30 points 

Schéma de la base de données :

  • Table Personne : id_personne (clé primaire), nom, prenom, date_naissance, adresse, personne_type
  • Table Assurance : id_assurance (clé primaire), nom_assurance, date_validite, id_personne (clé étrangère vers la table Personne)
  • Table Opération : id_operation (clé primaire), description, date_operation, id_patient (clé étrangère vers la table Personne)
  • Table Attestation : id_attestation (clé primaire), description, date_attestation, id_medecin (clé étrangère vers la table Personne), id_patient (clé étrangère vers la table Personne)
  • Table Facture : id_facture (clé primaire), montant, date_facture, id_patient (clé étrangère vers la table Personne)
  • Table Devis : id_devis (clé primaire), montant, date_devis, id_patient (clé étrangère vers la table Personne)
  • Table PersonneType : id_type (clé primaire), libelle
  1. Écrivez une requête SQL pour afficher les noms et prénoms de tous les patients de la base de données.
  2. Écrivez une requête SQL pour afficher toutes les opérations effectuées par un patient donné.
  3. Comment ajouter une nouvelle assurance à un patient donné en utilisant une clé étrangère ?
  4. Écrivez une requête SQL pour afficher tous les patients qui ont une assurance expirant dans les 30 prochains jours.
  5. Comment supprimer toutes les attestations effectuées par un médecin donné ?
  6. Écrivez une requête SQL pour afficher toutes les factures émises entre deux dates données.
  7. Comment modifier le libellé d'un type de personne dans la table PersonneType ?
  8. Écrivez une requête SQL pour afficher toutes les opérations effectuées par un patient et les montants des factures associées.
  9. Comment ajouter une nouvelle opération à un patient donné en utilisant une clé étrangère ?
  10. Écrivez une requête SQL pour trouver les noms et prénoms des personnes qui ont une assurance expirée.
  11. Comment ajouter une nouvelle attestation pour un patient donné, avec un médecin également donné ?
  12. Écrivez une requête SQL pour trouver le montant total des factures émises pour un patient donné.
  13. Comment ajouter une nouvelle opération pour un patient donné, avec une description et une date données ?
  14. Écrivez une requête SQL pour trouver le nombre total d'opérations effectuées par un patient donné.
  15. Comment supprimer toutes les attestations pour un patient donné ?
  16. Écrivez une requête SQL pour trouver le nombre total de devis émis pour un patient donné, ainsi que le montant total de ces devis.
  17. Comment ajouter une nouvelle assurance pour une personne donnée, avec une date de validité donnée ?
  18. Écrivez une requête SQL pour trouver tous les patients qui ont une attestation signée par un médecin dont le nom commence par 'D' et l'assurance expire dans 2 mois
  19. Comment supprimer une opération pour un patient donné en utilisant une clé étrangère ?
  20. Qu'est-ce qu'un index dans une base de données et comment est-il utilisé pour améliorer les performances des requêtes ?
  21. Comment déterminer quels champs devraient être inclus dans un index pour optimiser les requêtes d'une table donnée ?
  22. Qu'est-ce que le partitionnement dans une base de données et comment peut-il améliorer les performances des requêtes ?.
  23. Comment choisir le bon type de partitionnement pour une table donnée en fonction de ses besoins en termes de performance et de gestion des données ? 
  24. Comment pouvez-vous utiliser un trigger pour ajouter automatiquement une entrée à la table Assurance chaque fois qu'une nouvelle personne est ajoutée à la table Personne ?
  25. Comment pouvez-vous utiliser une procédure stockée pour supprimer tous les enregistrements de la table Assurance pour une personne donnée lorsqu'elle est supprimée de la table Personne ?
  26. Comment pouvez-vous utiliser un trigger pour mettre à jour la date de validité de toutes les assurances d'une personne donnée chaque fois que sa date de naissance est modifiée dans la table Personne ?
  27. Comment pouvez-vous utiliser une procédure stockée pour ajouter une nouvelle attestation à la table Attestation pour un patient donné ?
  28. Comment pouvez-vous utiliser un trigger pour supprimer automatiquement toutes les attestations associées à un patient lorsqu'il est supprimé de la table Personne ?
  29. Comment pouvez-vous utiliser une procédure stockée pour calculer le montant total de toutes les factures pour un patient donné ?
  30. Comment pouvez-vous utiliser un trigger pour ajouter automatiquement un enregistrement à la table Devis chaque fois qu'un patient demande un devis ?