À partir d'une mise en contexte sommaire, vous devez implémenter une base de données qui assure l'intégrité de l'information stockée. Votre livrable est composé de 2 scripts SQL:
init.sql
mise en place la base de données, insertion de données de départ
tests.sql
démontre le fonctionnement des spécifications demandées par diverses requêtes SQL
Une entreprise utilise actuellement un système de gestion de projet rudimentaire avec MySQL et souhaite améliorer sa méthodologie de travail en plus de migrer vers MariaDB.
Voici le modèle visé par l'entreprise(les entitées sous la ligne pointillée sont à implémenter):
+-----------------------------------+ +--------------------------------+
| users | | users_projects |
+-----------------------------------+ +--------------------------------+
| PK id: int | 1 * | PK,FK user_id: int |
| firstname: string(50) +--------------------+ PK,FK project_id: int |
| lastname: string(50) | | join_date: date |
| fullname: string(101) [GENERATED] | +----------------+---------------+
| email: string(50) | |
| password: string(64) [SHA256] | |*
+-------+-------+-------------------+ |
| | |1
| 1 |1 |
| | +------------+-------------+
| | | projects |
| | +--------------------------+
| | | PK id: int |
| | | name: string(50) |
| | | description: string(300) |
| | * | creation_date: date |
| +--------------------------------------------+ FK owner: int |
| | |
| +------------+-------------+
| |
| 1|
| |
+------------------------------------------------------------------------------------------------+
| |
| +----------------------+ |
| | tasks | |
| +----------------------+ |
| | PK id: int | |
| | name: string(50) | |
| | comment: string(300) | |
| | hours_estimate: int | * |
| * | FK project_id: int +---------------+
+--------------------------+ FK user_id: int |
+----------+-----------+
|
| 1
|
| *
|
+-------------+--------------+
| worktimes |
+----------------------------+
| PK id: int |
| message: string(100) |
| begin: datetime |
| end: datetime |
| duration: int [GENERATED] |
| FK task_id: int |
+----------------------------+
Les spécifications requises sont les suivantes:
tests.sql
)J'agirai en tant que chargé de projet pour répondre à vos questions dans le but de préciser l'analyse sommaire fournie et orienter la résolution de vos défis techniques.
ATTENTION
VISIBLE
pour les index.Une pénalité de 10% sera appliquée à la note du travail pour chaque jour de retard à la remise.
Vous devez remettre via LÉA une archive zip contenant vos fichiers init.sql
et tests.sql
.
Table tasks | 0 Â 1 Â 1.5 Â 2 |
Table worktimes | 0 Â 1 Â 1.5 Â 2 |
Insertions de données suffisantes | 0  1  1.5  2 |
Exécution répétée du script d'initialisation | 0    2 |
USERS_PROJECTS: Ajout collaborateur != propriétaire, test | 0  1  1.5  2 |
USERS_PROJECTS: Date inscription collaborateur >= date création, test | 0  1  1.5  2 |
PROJECTS: Date création != futur, test | 0  1  1.5  2 |
PROJECTS: Nom de projet != vide ni espaces, test | 0 Â 1 Â 1.5 Â 2 |
TASKS: Heures estimées >= 1, test | 0  1  1.5  2 |
TASKS: utilisateur membre du projet, test | 0 Â 1 Â 1.5 Â 2 |
TASKS: Recherche textuelle avancée(opérateurs) nom ET commentaire, test | 0  1  1.5  2 |
WORKTIMES: fin > debut, test | 0 Â 1 Â 1.5 Â 2 |
WORKTIMES: durée en heures arrondie à l'heure supérieure, test | 0  1  1.5  2 |
Calcul du temps investi dans un projet par chacun des membres, test | 0 Â 1 Â 1.5 Â 2 |
Sommaire des projets: projet, créateur, utilisateur le plus investi et nombre d'heures, liste des participants, total d'heures travaillées, total d'heures estimées, %complétion(heure travaillées/heures estimées), test | 0  2  3  4 |
Suppression des items associés, test | 0  1  1.5  2 |
Implémentation judicieuse des mécanismes SQL, Qualité de rédaction | 0  1  1.5  2 |
Total | / 36 |
Échelle
0: absent, médiocre | 1: minimal, insatisfaisant | 1.5: bon, satisfaisant | 2: excellent