Définir une application (hypothétique) qui nécessite une base de données relationnelle à 2-3 tables (donc 2 entités au moins).
Définir ces tables avec SQL dans un seul fichier *.sql
Créer les tables dans une base de données MySQL
Dans le cadre de mes études à TECFA, 10 mars 2008
Lien vers le résultat, serveur TECFA, BDD: mon login Unix
Objectifs de l'application:
L'application qui utiliserait une base de données serait basée sur l'exercice 7. Comme on peut le voir sur la page d'entrée de cet exercice, il s'agit d'un module d'exercice de la multiplication pour des élèves de la scolarité obligatoire. L'objectif de mon application serait de proposer un suivi pour l'élève qui viendrait s'exercer en ligne.Une fois l' exercice accompli, l'élève aurait le choix d'enregistrer sa performance en rajoutant deux champs input: un login et un mot de passe. L'exercice (données et réponses) aurait été enregistré auparavant dans un fichier texte et l'élève aurait le choix, une fois logué, de laisser une trace de son travail dans une base de données en effectuant une requête d'insertion de ces données dans les différentes tables de cette base.
Design de la structure de la base de données (tables, colonnes, types de données, etc.):
Voici le schéma des tables de la base de données (réalisé avec SQL Designer):
La production: bref résumé de la démarche
Comme on peut le voir sur le schéma ci-dessus, j'ai pris le parti de créer 5 tables relationnelles:
1) La table "users" qui permet à l'utilisateur (l'élève) de se loguer avec un pseudonyme et un mot de passe. Il faudrait vérifier que la personne qui se logue pour la première fois utilise un pseudonyme UNIQUE non encore utilisé. La clé primaire devient clé étrangère dans la deuxième table "dates_user".
2) La table "dates_users" contiendrait les enregistrements des dates de visites de l'utilisateur et pour chaque date l'heure (si il y a plusieurs visites le même jour). Cette table est liée à la première par la clé "users_id" qui correspond à l'id de l'utilisateur dans "users". Chaque visite est incrémentée de manière unique pour chaque utilisateur grâce au champ id AUTOINCREMENT et PRIMARY KEY.
3)et 4) Les tables "fact_1_date" et "fact_2_date" contiendront pour chaque visite respectivement le premier et le second facteur de la multiplication liés chacun à la date de visite unique de la table "dates_users".
5) La table "reponses" contiendra les réponses données par l'élève liées aux deux facteurs des deux tables précédentes.
Difficultés:
La principale difficulté fut de concevoir plusieurs tables liées par des clés. Il est parfois difficile de s'y retrouver dans les différentes relations entre les tables, sans les tester concrètement.
Auto-évaluation:
Je trouve que l'utilisation d'une interface graphique (SQL Designer) est pratique pour illustrer les relations entre les tables, néanmoins la définition des types de champs des tables est assez limité et la seule façon que j'ai trouvé pour mettre à disposition le schéma fut de faire une copie d'écran. Je pense avoir compris l'avantage du XML en utilisant la fonction import/export de SQL Designer.
Remarques:
Temps consacré: 10h
Ressources:
PHP 5, CampusPress, Leon Atkinson, décembre 2003.
PHP 5 & MySQL 5, Micro Application, collectif, juin 2006.
Introduction à MySQL, documents du cours STIC II, TECFA.