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 ) :
- Qu'est-ce qu'une table dans une base de données et quelle est son rôle ?
- Comment crée-t-on une nouvelle table dans une base de données à l'aide de SQL ?
- Quels sont les différents types de données que l'on peut stocker dans une table SQL ?
- Qu'est-ce qu'une contrainte de clé primaire et comment l'ajoute-t-on à une table SQL ?
- Comment ajoute-t-on une nouvelle colonne à une table SQL existante à l'aide de la commande ALTER TABLE ?
- Qu'est-ce qu'un ensemble en théorie des ensembles et comment est-il utilisé dans les bases de données SQL ?
- Comment réaliser le produit cartésien entre deux tables SQL ?
- Qu'est-ce qu'une relation dans une base de données SQL et comment est-elle représentée ?
- Quelles sont les différences entre une jointure interne et une jointure externe en SQL ?
- 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
- Écrivez une requête SQL pour afficher les noms et prénoms de tous les patients de la base de données.
- Écrivez une requête SQL pour afficher toutes les opérations effectuées par un patient donné.
- Comment ajouter une nouvelle assurance à un patient donné en utilisant une clé étrangère ?
- Écrivez une requête SQL pour afficher tous les patients qui ont une assurance expirant dans les 30 prochains jours.
- Comment supprimer toutes les attestations effectuées par un médecin donné ?
- Écrivez une requête SQL pour afficher toutes les factures émises entre deux dates données.
- Comment modifier le libellé d'un type de personne dans la table PersonneType ?
- Écrivez une requête SQL pour afficher toutes les opérations effectuées par un patient et les montants des factures associées.
- Comment ajouter une nouvelle opération à un patient donné en utilisant une clé étrangère ?
- Écrivez une requête SQL pour trouver les noms et prénoms des personnes qui ont une assurance expirée.
- Comment ajouter une nouvelle attestation pour un patient donné, avec un médecin également donné ?
- Écrivez une requête SQL pour trouver le montant total des factures émises pour un patient donné.
- Comment ajouter une nouvelle opération pour un patient donné, avec une description et une date données ?
- Écrivez une requête SQL pour trouver le nombre total d'opérations effectuées par un patient donné.
- Comment supprimer toutes les attestations pour un patient donné ?
- É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.
- Comment ajouter une nouvelle assurance pour une personne donnée, avec une date de validité donnée ?
- É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
- Comment supprimer une opération pour un patient donné en utilisant une clé étrangère ?
- 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 ?
- Comment déterminer quels champs devraient être inclus dans un index pour optimiser les requêtes d'une table donnée ?
- Qu'est-ce que le partitionnement dans une base de données et comment peut-il améliorer les performances des requêtes ?.
- 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 ?
- 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 ?
- 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 ?
- 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 ?
- Comment pouvez-vous utiliser une procédure stockée pour ajouter une nouvelle attestation à la table Attestation pour un patient donné ?
- Comment pouvez-vous utiliser un trigger pour supprimer automatiquement toutes les attestations associées à un patient lorsqu'il est supprimé de la table Personne ?
- Comment pouvez-vous utiliser une procédure stockée pour calculer le montant total de toutes les factures pour un patient donné ?
- Comment pouvez-vous utiliser un trigger pour ajouter automatiquement un enregistrement à la table Devis chaque fois qu'un patient demande un devis ?