Pour concevoir les schémas de base de données, nous utiliserons WWW SQL Designer.
1.1 Nous allons construire un sytème basique avec une seule table polls
qui contient les informations suivantes:
id
(int) - identifiant unique de l'enregistrementtitle
(string) - titre du sondagedescription
(string) - description du sondagecreated_at
(datetime) - date de création du sondageupdated_at
(datetime) - date de mise à jour du sondage
Un sondage peut avoir plusieurs questions, mais une question ne peut appartenir qu'à un seul sondage.
1.2 Ajoutons des utilisateurs à notre application. Nous allons créer une table users
qui contient les informations suivantes:
id
(int) - identifiant unique de l'enregistrementname
(string) - nom de l'utilisateuremail
(string) - email de l'utilisateurcreated_at
(datetime) - date de création de l'utilisateurupdated_at
(datetime) - date de mise à jour de l'utilisateur
Un sondage appartient à un utilisateur. Un utilisateur peut créer plusieurs sondages.
1.3 Ajoutons des questions à notre application. Nous allons créer une table questions
qui contient les informations suivantes:
id
(int) - identifiant unique de l'enregistrementtitle
(string) - titre de la questiondescription
(string) - description de la questioncreated_at
(datetime) - date de création de la questionupdated_at
(datetime) - date de mise à jour de la question
Une question appartient à un sondage. Un sondage peut avoir plusieurs questions. Une question peut avoir plusieurs réponses.
1.4 Ajoutons des réponses à notre application. Nous allons créer une table answers
qui contient les informations suivantes:
id
(int) - identifiant unique de l'enregistrementtitle
(string) - titre de la réponsedescription
(string) - description de la réponsecreated_at
(datetime) - date de création de la réponseupdated_at
(datetime) - date de mise à jour de la réponse
Une réponse appartient à une question. Une question peut avoir plusieurs réponses. Une réponse peut avoir plusieurs votes.
1.5 Ajoutons des votes à notre application. Nous allons créer une table votes
qui contient les informations suivantes:
id
(int) - identifiant unique de l'enregistrementcreated_at
(datetime) - date de création du voteupdated_at
(datetime) - date de mise à jour du vote
Un vote appartient à une réponse. Une réponse peut avoir plusieurs votes. Un vote appartient à un utilisateur. Un utilisateur peut avoir plusieurs votes.
- Un sondage appartient à un utilisateur
- Un sondage peut avoir plusieurs questions
- Une question peut avoir plusieurs réponses
- Une réponse peut avoir plusieurs votes
- Un vote appartient à une réponse
- Un vote appartient à un utilisateur
1.7. Quand un utilisateur répond à une question, il ne peut choisir qu’une seule réponse. Comment pouvez-vous implémenter cela dans votre base de données?
Ex: Pour un sondage: "Les capitales du monde", à la question: "Quelle est la capitale de la France ?", nous avons les réponses: "Paris", "Bruxelles", "Amsterdam". Nous voulons faire sorte qu'un utilisateur puisse choisir qu'une seule réponse à la question.
2.1 Nous allons construire un sytème basique avec une seule table boards
qui contient les informations suivantes:
id
(int) - identifiant unique de l'enregistrementtitle
(string) - titre du tableaudescription
(string) - description du tableaucreated_at
(datetime) - date de création du tableauupdated_at
(datetime) - date de mise à jour du tableau
2.2 Ajoutons des utilisateurs à notre application. Nous allons créer une table users
qui contient les informations suivantes:
id
(int) - identifiant unique de l'enregistrementname
(string) - nom de l'utilisateuremail
(string) - email de l'utilisateurcreated_at
(datetime) - date de création de l'utilisateurupdated_at
(datetime) - date de mise à jour de l'utilisateur
Un tableau appartient à un utilisateur. Un utilisateur peut créer plusieurs tableaux.
2.3 Ajoutons des listes à notre application. Nous allons créer une table lists
qui contient les informations suivantes:
id
(int) - identifiant unique de l'enregistrementtitle
(string) - titre de la listedescription
(string) - description de la listecreated_at
(datetime) - date de création de la listeupdated_at
(datetime) - date de mise à jour de la liste
Une liste appartient à un tableau. Un tableau peut avoir plusieurs listes. Une liste peut avoir plusieurs tâches. Une tâche ne peut appartenir qu'à une seule liste. Un utilisateur peut créer plusieurs listes. Une liste appartient à un utilisateur. Un utilisateur peut créer plusieurs listes.
2.4 Ajoutons des tâches à notre application. Une tâche peut être liée à une autre tâche. Par exemple, une tâche peut être une sous-tâche d'une autre tâche. Nous allons créer une table tasks
qui contient les informations suivantes.
id
(int) - identifiant unique de l'enregistrementtitle
(string) - titre de la tâchedescription
(string) - description de la tâchecreated_at
(datetime) - date de création de la tâcheupdated_at
(datetime) - date de mise à jour de la tâche
Une tâche appartient à une liste. Une liste peut avoir plusieurs tâches. Une tâche peut avoir plusieurs utilisateurs. Un utilisateur peut avoir plusieurs tâches. Une tâche peut avoir plusieurs commentaires. Un commentaire ne peut appartenir qu'à une seule tâche. Une tâche peut avoir plusieurs pièces jointes. Une pièce jointe ne peut appartenir qu'à une seule tâche.
2.5 Ajoutons des commentaires à notre application. Nous allons créer une table comments
qui contient les informations suivantes:
id
(int) - identifiant unique de l'enregistrementcontent
(string) - contenu du commentairecreated_at
(datetime) - date de création du commentaireupdated_at
(datetime) - date de mise à jour du commentaire
Un commentaire appartient à un utilisateur. Un utilisateur peut créer plusieurs commentaires. Un commentaire appartient à une tâche. Une tâche peut avoir plusieurs commentaires.
2.6 Ajoutons des pièces jointes à notre application. Nous allons créer une table attachments
qui contient les informations suivantes:
id
(int) - identifiant unique de l'enregistrementname
(string) - nom de la pièce jointepath
(string) - chemin de la pièce jointecreated_at
(datetime) - date de création de la pièce jointeupdated_at
(datetime) - date de mise à jour de la pièce jointe
Une pièce jointe appartient à un utilisateur. Un utilisateur peut créer plusieurs pièces jointes. Une pièce jointe appartient à une tâche. Une tâche peut avoir plusieurs pièces jointes.
- Un tableau appartient à un utilisateur
- Un utilisateur peut créer plusieurs tableaux
- Une liste appartient à un tableau
- Un tableau peut avoir plusieurs listes
- Une liste peut avoir plusieurs tâches
- Une tâche ne peut appartenir qu'à une seule liste
- Un utilisateur peut créer plusieurs listes
- Une liste appartient à un utilisateur
- Une tâche appartient à une liste
- Une tâche peut avoir plusieurs utilisateurs
- Un utilisateur peut avoir plusieurs tâches
- Une tâche peut avoir plusieurs commentaires
- Un commentaire ne peut appartenir qu'à une seule tâche
- Une tâche peut avoir plusieurs pièces jointes
- Une pièce jointe ne peut appartenir qu'à une seule tâche
- Un commentaire appartient à un utilisateur
- Un utilisateur peut créer plusieurs commentaires
- Un commentaire appartient à une tâche
- Une pièce jointe appartient à un utilisateur
- Un utilisateur peut créer plusieurs pièces jointes
- Une pièce jointe appartient à une tâche
- Une tâche peut avoir des sous-tâches (tâches liées)
- Un lecteur peut emprunter plusieurs livres
- Un livre peut être emprunté par plusieurs lecteurs
- Un livre peut avoir plusieurs auteurs
- Un auteur peut avoir plusieurs livres
- Un livre peut avoir plusieurs catégories
- Une catégorie peut avoir plusieurs livres
- Les adhérents ont un nom, un prénom et une date de naissance. Ces informations sont consultables par les gestionnaires des emprunts, mais ils ne peuvent les modifier ou les supprimer.
- La bibliothèque comprend un ensemble de documents et un ensemble d’adhérents.
- Au niveau de la bibliothèque, les adhérents sont inscrits ou désinscrits sur une simple demande. Il est possible de retrouver la date d'inscription et la date de désinscription.
- De nouveaux documents sont ajoutés régulièrement à la bibliothèque.
- Ces documents sont soit des journaux, soit des volumes.
- Les volumes sont soit des dictionnaires, soit des livres, soit des BD.
- Les documents sont caractérisés par un titre, une date d'achat.
- Les volumes ont en plus un auteur. Les BD ont en plus une désignation du public (enfant, junior, adulte) destinataire.
- Les journaux ont, outre les caractéristiques des documents, une date de parution.
- Seuls les livres sont empruntables.
- Les adhérents peuvent emprunter des livres (et uniquement des livres) et on doit pouvoir savoir à tout moment quels sont les livres empruntés par un adhérent.
- La date de restitution d’un livre emprunté est fixée au moment du prêt. Cette date peut être prolongée sur demande.
- Un livre emprunté peut être prolongé une seule fois.
- Un bibliothécaire peut emprunter un livre.
- Il est possible de savoir quel bibliothécaire a authorisé un emprunt.
Nous avons créer une base de données permettant les emplois du temps des professeurs d'une école.
-
Écrivez une requête pour récupérer les noms de tous les enseignants et les noms des cours qu'ils ont enseignés dans la table
lessons
, triés par ordre alphabétique du nom de l'enseignant. -
Écrivez une requête pour récupérer les noms de tous les cours, les noms des UE auxquels ils appartiennent et le nombre d'évaluations de chaque UE dans les tables
courses
etues
. -
Écrivez une requête pour récupérer les noms de tous les créneaux et les noms des emplacements où des cours sont planifiés dans les tables
slots
etlocations
. -
Écrivez une requête pour compter le nombre de cours enseignés dans chaque emplacement, trié par le nombre de cours par ordre décroissant.
-
Écrivez une requête pour récupérer les noms de tous les enseignants et le nombre total d'heures qu'ils ont enseignées dans des interventions et des cours dans les tables
teachers
,interventions
etlessons
, trié par le nombre total d'heures par ordre décroissant.
Vous êtes en train de créer un modèle de base de données pour une entreprise de vente en ligne. L'entreprise vend des produits de différentes catégories (par exemple, vêtements, électronique, jouets, etc.), et chaque produit est décrit par un nom, une description, un prix et une image.
Les clients peuvent s'inscrire sur le site pour créer un compte, et ils peuvent effectuer des achats en utilisant leur carte de crédit ou leur compte PayPal. Chaque client est décrit par un nom, un prénom, une adresse e-mail et une adresse postale.
Les commandes sont enregistrées dans la base de données, ainsi que les détails de chaque commande (produits achetés, quantités, prix total, etc.).
Votre tâche consiste à créer un schéma de base de données qui représente ces données de manière efficace. Vous devrez déterminer quelles tables seront nécessaires et comment elles seront liées entre elles.