Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion docs/tp/databases/modelisation/01-fan-de-rock.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,9 @@ Exercice de modélisation de base de données relationnelle.
- Formalisez le dictionnaire des données
- Répérez les dépendances fonctionnelles
- Modélisez le diagramme *entité-association* (MCD)
- Créer le script de création de la base de données
- Créer et insérer un jeu d'essai cohérent
- Implémentez les requêtes SQL demandées

## Contexte

Expand All @@ -25,7 +28,7 @@ On traitera successivement deux hypothèses :

**Etablir le dictionnaire des données, le MCD et le MLD pour les 2 deux cas.**

Lorsque vous avez validé votre travail avec votre formateur, créer un fichier SQL contenant les instructions pour créer la base de données pour les cas N°2.
Lorsque vous avez validé votre travail avec votre formateur, créer un fichier SQL contenant les instructions pour créer la base de données pour le cas N°2.


## Jeu d'essai
Expand Down
17 changes: 16 additions & 1 deletion docs/tp/databases/modelisation/02-comite-entreprise.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,8 @@ Exercice de modélisation de base de données relationnelle.
- Répérer les dépendances fonctionnelles
- Modéliser le diagramme *entité-association* (MCD)
- Créer le script de création de la base de données
- Créer un jeu d'essai cohérent
- Créer et insérer un jeu d'essai cohérent
- Implémentez les requêtes SQL demandées

## Contexte

Expand All @@ -34,3 +35,17 @@ Pour cela, établir le dictionnaire des données, le MCD et le MLD.
Ensuite, implémenter le script de création de la base de données et insérer le jeu d'essai du tableau ci-dessus.

> Valider votre travail avec vos formateurs avant de passer à la suite

## Requêtes SQL à implémenter

1. Sélectionner tous les employés (nom, prénom, numéro de téléphone)

2. Sélectionner tous les employés triés par nom et par ordre décroissant

3. Sélectionner tous les employés avec, pour chaque employé, le nombre d'enfant

4. Sélectionner les employés sans enfant

4. Sélectionner les enfants (prénom, âge) triés par âge du plus jeune au plus agé. Pour chaque enfant, Le nom et prénom de son parent est également affiché.

> Valider votre travail avec vos formateurs avant de passer à la suite
13 changes: 7 additions & 6 deletions docs/tp/databases/modelisation/03-casse-auto.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,8 @@ Exercice de modélisation de base de données relationnelle.
- Répérer les dépendances fonctionnelles
- Modéliser le diagramme *entité-association* (MCD)
- Créer le script de création de la base de données
- Créer un jeu d'essai cohérent
- Créer et insérer un jeu d'essai cohérent
- Implémentez les requêtes SQL demandées

## Contexte

Expand Down Expand Up @@ -60,14 +61,14 @@ Ensuite, créer le script permettant l'insertion du jeu d'essai ci-dessous :

Créer un fichier SQL contenant les requêtes suivantes :

1. Afficher toutes les voitures
1. Sélectionner toutes les voitures

2. Afficher toutes les voitures produites après 2020.
2. Sélectionner toutes les voitures produites après 2020.

3. Afficher toutes les pièces détachées triées par prix du moins cher au plus cher.
3. Sélectionner toutes les pièces détachées triées par prix du moins cher au plus cher.

4. Afficher les pièces détachées de la catégorie "Carrosserie" dont le prix hors taxes est inférieur à 100€.
4. Sélectionner les pièces détachées de la catégorie "Carrosserie" dont le prix hors taxes est inférieur à 100€.

5. Afficher toutes les pièces détachées pour la marque Volkswagen.
5. Sélectionner toutes les pièces détachées pour la marque Volkswagen.

> Valider votre travail avec vos formateurs avant de passer à la suite
13 changes: 7 additions & 6 deletions docs/tp/databases/modelisation/04-club-select.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,8 @@ Exercice de modélisation de base de données relationnelle.
- Répérer les dépendances fonctionnelles
- Modéliser le diagramme *entité-association* (MCD)
- Créer le script de création de la base de données
- Créer un jeu d'essai cohérent
- Créer et insérer un jeu d'essai cohérent
- Implémentez les requêtes SQL demandées

## Contexte

Expand Down Expand Up @@ -66,14 +67,14 @@ Compléter le fichier SQL en prenant en compte les éléments suivants :

Créer un fichier SQL contenant les requêtes suivantes :

1. Afficher les informations de tous les membres triés par date d'adhésion (le membre le plus ancien apparait en 1er)
1. Sélectionner les informations de tous les membres triés par date d'adhésion (le membre le plus ancien apparait en 1er)

2. Afficher le nom, prénom et email de tous les membres incluant le nombre de conférences dans lesquelles ils ont participé.
2. Sélectionner le nom, prénom et email de tous les membres incluant le nombre de conférences dans lesquelles ils ont participé.

3. Afficher toutes les informations des membres fondateurs.
3. Sélectionner toutes les informations des membres fondateurs.

4. Afficher toutes les informations des conférences qui ont lieu en soirée (après 18h) et dont la durée est strictement supérieure à 1 heure.
4. Sélectionner toutes les informations des conférences qui ont lieu en soirée (après 18h) et dont la durée est strictement supérieure à 1 heure.

5. Afficher le nom, prénom, date de naissance et date d'adhésion de tous les membres avec le nom et prénom du parrain 1 et l'adresse email du parrain 2. Les membres sans parrain ne doivent pas aparaitre dans les résultats.
5. Sélectionner le nom, prénom, date de naissance et date d'adhésion de tous les membres avec le nom et prénom du parrain 1 et l'adresse email du parrain 2. Les membres sans parrain ne doivent pas aparaitre dans les résultats.

> Valider votre travail avec vos formateurs avant de passer à la suite
3 changes: 2 additions & 1 deletion docs/tp/databases/modelisation/05-aquarium.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,8 @@ Exercice de modélisation de base de données relationnelle.
- Répérer les dépendances fonctionnelles
- Modéliser le diagramme *entité-association* (MCD)
- Créer le script de création de la base de données
- Créer un jeu d'essai cohérent
- Créer et insérer un jeu d'essai cohérent
- Implémentez les requêtes SQL demandées

## Contexte

Expand Down
9 changes: 5 additions & 4 deletions docs/tp/databases/modelisation/06-parcours-combattant.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,8 @@ Exercice de modélisation de base de données relationnelle.
- Répérer les dépendances fonctionnelles
- Modéliser le diagramme *entité-association* (MCD)
- Créer le script de création de la base de données
- Créer un jeu d'essai cohérent
- Créer et insérer un jeu d'essai cohérent
- Implémentez les requêtes SQL demandées

## Contexte

Expand Down Expand Up @@ -128,12 +129,12 @@ Le soldat N°3 a effectué le parcours 1 fois et a obtenu les notes suivantes :

Créer un fichier SQL contenant les requêtes suivantes :

1. Afficher toutes les informations des soldats triés par âge (le plus jeune aparait en 1er).
1. Sélectionner toutes les informations des soldats triés par âge (le plus jeune aparait en 1er).

2. Afficher toutes les informations des obstacles triés par difficulté (le plus difficile aparait en 1er).
2. Sélectionner toutes les informations des obstacles triés par difficulté (le plus difficile aparait en 1er).

3. Le soldat N°2 refait le parcours et obtient les mêmes notes sauf pour les 3 derniers obstacles où il obtient respectivement les notes : **9**, **8** et **11**.

4. Certains soldats ont déjà fait le parcours. Pour certains des obstacles, ils n'ont pas atteint la note minimum. Afficher tous les obstacles que les soldats doivent repasser pour tenter d'améliorer leur note. Le résultat doit afficher : le nom de l'obstacle, la note minimale pour l'obstacle, le grade, nom et prénom du soldat ainsi que sa meilleure note obtenue sur cet obstacle. (*Attention, la requête est plus difficile qu'elle n'y parait*).

> Valider votre travail avec vos formateurs avant de passer à la suite
> Valider votre travail avec vos formateurs avant de passer à la suite
13 changes: 7 additions & 6 deletions docs/tp/databases/modelisation/07-ticket-de-caisse.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,8 @@ Exercice de modélisation de base de données relationnelle.
- Répérer les dépendances fonctionnelles
- Modéliser le diagramme *entité-association* (MCD)
- Créer le script de création de la base de données
- Créer un jeu d'essai cohérent
- Créer et insérer un jeu d'essai cohérent
- Implémentez les requêtes SQL demandées

## Contexte

Expand Down Expand Up @@ -97,14 +98,14 @@ Toutes les lignes possédant le même "ID Ticket" correspondent au même ticket

Créer un fichier SQL contenant les requêtes suivantes :

1. Afficher toutes les consommations triées par prix du plus cher au moins cher.
1. Sélectionner toutes les consommations triées par prix du plus cher au moins cher.

2. Afficher les serveurs ayant servi au moins 2 tables différentes
2. Sélectionner les serveurs ayant servi au moins 2 tables différentes

3. Afficher les serveurs avec, pour chaque serveur, le **nombre** total de consommations qu'il a servies.
3. Sélectionner les serveurs avec, pour chaque serveur, le **nombre** total de consommations qu'il a servies.

4. Afficher les serveurs avec, pour chaque serveur, le **montant** total des consommations qu'il a servies.
4. Sélectionner les serveurs avec, pour chaque serveur, le **montant** total des consommations qu'il a servies.

5. Afficher toutes les consommations avec, pour chaque consommation, le nombre d'unités vendues et le montant total correspondant.
5. Sélectionner toutes les consommations avec, pour chaque consommation, le nombre d'unités vendues et le montant total correspondant.

> Valider votre travail avec vos formateurs avant de passer à la suite
13 changes: 7 additions & 6 deletions docs/tp/databases/modelisation/08-concours-menuiserie.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,8 @@ Exercice de modélisation de base de données relationnelle.
- Répérer les dépendances fonctionnelles
- Modéliser le diagramme *entité-association* (MCD)
- Créer le script de création de la base de données
- Créer un jeu d'essai cohérent
- Créer et insérer un jeu d'essai cohérent
- Implémentez les requêtes SQL demandées

## Contexte

Expand Down Expand Up @@ -70,14 +71,14 @@ Une fois votre base de données créée, implémentez un nouveau fichier SQL con

Créer un fichier SQL contenant les requêtes suivantes :

1. Afficher tous les apprentis triés par nom de famille et par ordre croissant.
1. Sélectionner tous les apprentis triés par nom de famille et par ordre croissant.

2. Afficher les tuteurs avec le nombre d'apprentis qu'ils suivent.
2. Sélectionner les tuteurs avec le nombre d'apprentis qu'ils suivent.

3. Afficher les apprentis qui participent à au moins 1 concours avec, pour chaque apprenti le nom du concours auquel il participe.
3. Sélectionner les apprentis qui participent à au moins 1 concours avec, pour chaque apprenti le nom du concours auquel il participe.

4. Afficher tous les apprentis avec, pour chaque apprenti le nom du concours auquel il participe. Si l'apprenti ne participe à aucun concours, afficher la valeur `NULL` à la place du nom du concours.
4. Sélectionner tous les apprentis avec, pour chaque apprenti le nom du concours auquel il participe. Si l'apprenti ne participe à aucun concours, afficher la valeur `NULL` à la place du nom du concours.

5. Afficher tous les concours avec, pour chaque concours, le nombre d'apprentis inscrits ainsi que la meilleure note obtenue.
5. Sélectionner tous les concours avec, pour chaque concours, le nombre d'apprentis inscrits ainsi que la meilleure note obtenue.

> Valider votre travail avec vos formateurs avant de passer à la suite
Binary file added docs/tp/databases/sql/03-faq/faq-mcdmld.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/tp/databases/sql/03-faq/faq.loo
Binary file not shown.
139 changes: 139 additions & 0 deletions docs/tp/databases/sql/03-faq/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,139 @@
---
title: "Foire aux Questions"
serie: "sql"
order: 4
---

Vous êtes en charge de l'implémentation d'une petite base de données pour un logiciel de "foire aux questions" (FAQ).

L'ingénieur du projet s'est chargé de l'analyse du besoin et vous fournit le résultat de son travail.

- Un utilisateur est caractérisé par :
- un identifiant numérique
- un nom
- un prénom
- une adresse email
- Un utilisateur peut ajouter des questions
- Un utilisateur peut modifier les questions qu'il a créé
- Une question est caractérisée par :
- un identifiant numérique
- une date de publication
- la question
- la réponse à la question
- On doit connaitre l'auteur de chaque question/réponse
- Les questions sont classées par catégories
- Une question peut appartenir à une ou plusieurs catégories
- Une catégorie est caractérisée par:
- Un nom de catégorie (identifiant)
- Une description de la catégorie
- On doit pouvoir déterminer dans quel ordre les catégories s'affichent

Votre tâche consiste à créer la base de données correspondante.

## La base de données

**Nom de la base de données à créer**: *mini_faq*.

A partir du dictionnaire des données et des règles de gestion ci-dessous, créer la base de données correspondante.

### Dictionnaire des données

| Mnémonique | Signification | Type | Longueur | Remarques |
| --- | --- | --- | --- | --- |
| user_id | Identifiant de l'utilisateur | Numérique | 11 | Identifiant auto incrémenté |
| user_email | Email de l'utilisateur | Alphanumérique | 128 | Obligatoire, unique, format email |
| user_lastname | Nom de l'utilisateur | Alphabétique | 50 | Obligatoire |
| user_firstname | Prénom de l'utilisateur | Alphabétique | 50 | Obligatoire |
| question_id | Identifiant de la question | Numérique | 11 | Identifiant auto incrémenté |
| question_date | Date de publication de la question | Date | - | Obligatoire, format YYYY-MM-DD |
| question_label | Intitulé de la question | Alphanumérique | 255 | Obligatoire |
| question_response | Réponse à la question | Alphanumérique | 65535 | Obligatoire |
| category_name | Nom de la catégorie | Alphabétique | 30 | Identifiant |
| category_description | Description de la catégorie | Alphanumérique | 255 | Facultatif |
| category_order | Ordre d'affichage de la catégorie | Numérique | 3 | Obligatoire, unique |

### Règles de gestion

- 1 utilisateur publie 0 ou plusieurs questions.
- 1 question est publiée par 1 utilisateur.
- 1 question est contenue dans 1 ou plusieurs catégories.
- 1 catégorie contient 0 ou plusieurs questions.

### Modèle Logique (textuel)

- **users** = (**<u>user_id</u>**, **user_email**, user_lastname, user_firstname);
- **questions** = (**<u>question_id</u>**, question_date, question_label, question_response, #user_id);
- **categories** = (**<u>category_name</u>**, category_description, **category_order**);
- **categories_questions** = (**<u>#question_id, #category_name</u>**);


## Préparez-vous !

- Créer un répertoire pour le projet (pour stocker vos fichiers SQL).
- Lancer votre serveur SQL depuis Laragon (ou équivalent).
- Connectez vous au serveur de base de données avec MySQL Workbench (ou équivalent).

## Travail à réaliser

1. Créer un 1er script SQL qui contiendra :
- l'instruction pour supprimer la base de données si elle existe
- l'instruction pour créer la base de données
- l'instruction pour sélectionner la base de données
- les instructions pour créer les différentes tables et leurs contraintes
2. Créer un 2ème script SQL qui contiendra les intructions pour insérer le jeu d'essai fourni
3. Créer un 3ème script SQL qui contiendra les requêtes à implémenter

## Jeu d'essai

**Utilisateurs**

| identifiant | nom | prénom | email |
| --- | --- | --- | --- |
| 1 | Rabbit | Zora | zorb@example.com |
| 2 | Patchouli | Édouard | patchouli@example.fr |
| 3 | Satiti | Eva | eva.stt@example.com |

**Catégories**

| nom | description | ordre d'affichage |
| --- | --- | --- |
| Bases de données | Les questions relatives aux bases de données | 2 |
| SQL | Les questions sur le langage SQL | 3 |
| NoSQL | Les questions sur l'approche NoSQL | 4 |
| PHP | Les questions relatives à PHP | 1 |

**Questions**

| identifiant | date de publication | intitulé | réponse | identifiant auteur |
| --- | --- | --- | --- | --- |
| 1 | 2024-11-23 | Dans MySQL, quel type de données permet de stocker des valeurs numériques dont le maximum est 127 ? | Le type **TINYINT** stocke des valeurs numériques comprises entre -128 et 127 | 3 |
| 2 | 2024-11-23 | Quels sont les principaux serveurs SQL gratuits ? | MySQL, MariaDB, PostgreSQL, SQLite | 2 |
| 3 | 2024-11-27 | Que signifie le sigle **SGBDR** ? | Système de Gestion de Bases de Données Relationnelles | 1 |
| 4 | 2024-12-05 | Que signifie le sigle **SQL** ? | Structured Query Language ! | 2 |
| 5 | 2024-12-05 | Que signifie le sigle **noSQL** ? | Not Only SQL ! | 3 |

**Questions --> Catégories**

- La question n°1 appartient aux catégories : *Bases de données* et *SQL*
- La question n°2 appartient aux catégories : *Bases de données* et *SQL*
- La question n°3 appartient à la catégorie : *Bases de données*
- La question n°4 appartient aux catégories : *Bases de données* et *SQL*
- La question n°5 appartient aux catégories : *Bases de données* et *NoSQL*

## Requêtes SQL à implémenter

1. Sélectionner tous les utilisateurs (identifiant, nom, prénom, email).

2. Sélectionner toutes les questions (date, intitulé, réponse, identifiant utilisateur) triées par date de la plus ancienne à la plus récente.

3. Sélectionner les questions (identifiant, date, intitulé, réponse) de l'utilisateur n°2.

4. Sélectionner les questions (date, intitulé, réponse, identifiant utilisateur) de l'utilisateur *Eva Satiti*.

5. Sélectionner les questions (identifiant, date, intitulé, réponse, identifiant utilisateur) dont l'intitulé contient "SQL". Le résultat est trié par le titre et par ordre décroissant.

6. Sélectionner les catégories (nom, description) sans question associée.

7. Sélectionner les questions triées par titre (ordre alphabétique) avec le nom et prénom de l'auteur (*nécessite une jointure*).

8. Sélectionner les catégories (nom) avec, pour chaque catégorie le nombre de questions associées (*nécessite une jointure*).
Loading
Loading