Photo

Rapport ex11

Christian Gogniat.Etudiant à TECFA, MALTT Volée Nestor 2008.

Se familiariser avec les bases de données "typiques", apprendre les bases du langage SQL

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

Lien vers le fichier sql

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):

image

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.

Travail d'étudiant, Université de Genève, Faculté de Psychologie et des Sciences de l'Education, TECFA, Master MALTT, volée Nestor, 10 mars 2008.
Valid XHTML 1.0 Transitional Valid CSS W3C