« STIC:STIC II - exercice 11 (Nestor-Pixel) » : différence entre les versions

De EduTech Wiki
Aller à la navigation Aller à la recherche
 
(14 versions intermédiaires par le même utilisateur non affichées)
Ligne 1 : Ligne 1 :
{{stic12}}
{{stic_archive}}
== Enoncé de l'exercice 11 ==
== Enoncé de l'exercice 11 ==


Ligne 8 : Ligne 8 :
=== Tâche ===
=== Tâche ===


* 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 une application (hypothétique) qui nécessite une base de données relationnelle à 2-4 tables (donc 2 entités au moins).
* Définir ces tables avec SQL dans un seul fichier *.sql
* Définir ces tables avec SQL dans un seul fichier *.sql
* Créer les tables dans une base de données MySQL
* Créer les tables dans une base de données MySQL
* Créer une page d'accueil/rapport ici:
* Créer une page d'accueil/rapport ici:
  /etu-maltt/nestor/<login>/stic/ex11/
  /etu-maltt/nestor/<login>/stic/ex11/
Ce rapport '''doit contenir un lien vers le fichier *.sql'''
* Contribution wiki


=== Outils ===
=== Outils ===
Ligne 26 : Ligne 28 :


* Thème en rapport avec MALTT (à synchroniser peut-être avec un autre enseignement MALTT)
* Thème en rapport avec MALTT (à synchroniser peut-être avec un autre enseignement MALTT)
* A rendre '''avant''' la période 5.


'''Le rapport''':
'''Le rapport''':
* Titre, auteur et date
* Titre, auteur et date
* Liens vers le résulat:  
* Liens vers le résulat:  
** Lien vers le fichier SQL
** Lien vers le fichier *.sql
* Objectifs de l'application: Elle servirait à quoi / quelle population ?
* Objectifs de l'application: Elle servirait à quoi / quelle population ?
* Design de la structure de base données (tables, colonnes, types de données, etc.) ('''Important'''!!!)
* Design de la structure de base données (tables, colonnes, types de données, etc.) ('''Important'''!!!)
Ligne 42 : Ligne 45 :
* Qualité de l'architecture par rapport aux objectifs, définition appropriée des champs, etc.
* Qualité de l'architecture par rapport aux objectifs, définition appropriée des champs, etc.
* Le fichier SQL marche (avec MySQL)
* Le fichier SQL marche (avec MySQL)
* Contribution wiki
* Note: Surtout la qualité compte pas besoin de faire trop (3 tables suffisent !)
* Note: Surtout la qualité compte pas besoin de faire trop (3 tables suffisent !)


Ligne 50 : Ligne 54 :
Note: Faites attention lorsque vous copier/collez du SQL à partir de fichiers PDF. Les quotes SQL sont droits: <nowiki>"</nowiki> et <nowiki>'</nowiki>, et '''pas''' du genre: <nowiki>´</nowiki>
Note: Faites attention lorsque vous copier/collez du SQL à partir de fichiers PDF. Les quotes SQL sont droits: <nowiki>"</nowiki> et <nowiki>'</nowiki>, et '''pas''' du genre: <nowiki>´</nowiki>


<pre>
Exemple table pour données de sondage:
CREATE TABLE demo1 (
<source lang="sql">
CREATE TABLE demo1 (
   id int(10) NOT NULL auto_increment,
   id int(10) NOT NULL auto_increment,
   login char(10) DEFAULT '' NOT NULL,
   login varchar(10) NOT NULL default '',
   password char(100),
   password varchar(100) default NULL,
   fullname char(40) DEFAULT '' NOT NULL,
   fullname varchar(40) NOT NULL default '',
   url char(60) DEFAULT '' NOT NULL,
   url varchar(60) NOT NULL default '',
   food int(11) DEFAULT '0' NOT NULL,
   food int(11) NOT NULL default '0',
   work int(11) DEFAULT '0' NOT NULL,
   work int(11) NOT NULL default '0',
   love int(11) DEFAULT '0' NOT NULL,
   love int(11) NOT NULL default '0',
   leisure int(11) DEFAULT '0' NOT NULL,
   leisure int(11) NOT NULL default '0',
   sports int(11) DEFAULT '0' NOT NULL,
   sports int(11) NOT NULL default '0',
   PRIMARY KEY (id),
   PRIMARY KEY (id),
   KEY login (login)
   KEY login (login)
);
);
</pre>
</source>


Simple relation avec 2 tables et qqs. données
Simple relation avec 2 tables (étudiants et exercices). Contient une foreign key et qqs. données
<pre>
<source lang="sql">
-- MySQL example with foreign keys.
-- Needs the InnoDB engine (see the table definitions)
--
-- Table 'student'
--
DROP TABLE IF EXISTS student;
DROP TABLE IF EXISTS student;
DROP TABLE IF EXISTS exercice;
CREATE TABLE IF NOT EXISTS student (
CREATE TABLE student (
  id int(10) NOT NULL AUTO_INCREMENT,
id int(10) NOT NULL auto_increment,
  name varchar(40) NOT NULL DEFAULT '',
name char(40) DEFAULT '' NOT NULL,
  first_name varchar(40) NOT NULL DEFAULT '',
first_name char(40) DEFAULT '' NOT NULL,
  PRIMARY KEY (id)
PRIMARY KEY (id)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8;
);
 
--
INSERT INTO student VALUES (NULL,'Testeur','Bill');
-- Data for table 'student'
INSERT INTO student VALUES (NULL,'Testeur','Joe');
--
INSERT INTO student VALUES (NULL,'Testeuse','Sophie');
 
INSERT INTO student (id, name, first_name) VALUES
CREATE TABLE exercice (
(1, 'Testeur', 'Bill'),
id int(10) NOT NULL auto_increment,
(2, 'Testeur', 'Joe'),
title char(40) DEFAULT '' NOT NULL,
(3, 'Testeuse', 'Sophie'),
student_id int(10) NOT NULL,
(4, 'Player', 'Jim');
comments varchar(128),
url char(60) DEFAULT '' NOT NULL,
--
PRIMARY KEY (id),
-- Table 'exercise'
KEY student_id (student_id)
--
);
INSERT INTO exercice VALUES (NULL,"Exercice 1",'1',"pas de commentaire",'http://tecfa.unige.ch/');
DROP TABLE IF EXISTS exercise;
INSERT INTO exercice VALUES (NULL,"Exercice 2",'1',"pas de commentaire",'http://tecfa.unige.ch/');
CREATE TABLE IF NOT EXISTS exercise (
</pre>
  id int(10) NOT NULL AUTO_INCREMENT,
  title varchar(40) NOT NULL DEFAULT '',
  student_id int(10) NOT NULL,
  comments varchar(128) DEFAULT NULL,
  url varchar(60) NOT NULL DEFAULT '',
  PRIMARY KEY (id),
  KEY student_id (student_id),
  FOREIGN KEY (student_id) REFERENCES student(id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
--
-- Table 'exercise'
--
INSERT INTO exercise (id, title, student_id, comments, url) VALUES
(1, 'Exercise 1', 1, 'small comment', 'http://tecfa.unige.ch/'),
(2, 'Exercise 2', 1, 'no comment', 'http://tecfa.unige.ch/'),
(3, 'exe four', 2, 'No comment', 'http://localhost/'),
(4, 'exe four', 2, 'No comment', 'http://localhost/');
</source>


== Liens ==
== Liens ==
; Texte
: [[:en:SQL_and_MySQL_tutorial|SQL and MySQL tutorial]] (Edutechwiki anglais)


; Transparents
; Transparents
: http://tecfa.unige.ch/guides/tie/html/mysql-intro/mysql-intro.html  
: http://tecfa.unige.ch/guides/tie/html/mysql-intro/mysql-intro.html (français, qq. détails sont à améliorer, il faudrait notamment utiliser "varchar" au lieu de "char"...)
: http://tecfa.unige.ch/guides/te/files/mysql-intro.pdf (Anglais)


; PhpMyAdmin
; PhpMyAdmin
Ligne 106 : Ligne 140 :
:[[:en:SQL]] (liens)
:[[:en:SQL]] (liens)
:[[:en:MySQL]] (liens)
:[[:en:MySQL]] (liens)
[[Category: STIC]]

Dernière version du 7 février 2011 à 18:55

Cette page fait partie des archives des cours Cours STIC (STIC I, STIC II,STIC III,STIC IV)

Enoncé de l'exercice 11

Cet exercice du cours STIC II vous permet:

  • de vous familiariser avec les bases de données "typiques"
  • d'apprendre les bases du langage SQL

Tâche

  • Définir une application (hypothétique) qui nécessite une base de données relationnelle à 2-4 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
  • Créer une page d'accueil/rapport ici:
/etu-maltt/nestor/<login>/stic/ex11/

Ce rapport doit contenir un lien vers le fichier *.sql

  • Contribution wiki

Outils

Outils
Un simple éditeur pour définir le fichier SQL
phpMyAdmin: http://tecfa.unige.ch/admin/phpMyAdmin/
Deployment
  • Sur le serveur MySQL de TECFA

Contraintes

  • Thème en rapport avec MALTT (à synchroniser peut-être avec un autre enseignement MALTT)
  • A rendre avant la période 5.

Le rapport:

  • Titre, auteur et date
  • Liens vers le résulat:
    • Lien vers le fichier *.sql
  • Objectifs de l'application: Elle servirait à quoi / quelle population ?
  • Design de la structure de base données (tables, colonnes, types de données, etc.) (Important!!!)
  • La production: bref résumé de la démarche
  • Difficultés, auto-évaluation, remarques
  • Ressources utilisées, bibliographie.

Evaluation

  • Qualité du rapport (surtout discussion des objectifs/besoins et de l'architecture de la base de données)
  • Qualité de l'architecture par rapport aux objectifs, définition appropriée des champs, etc.
  • Le fichier SQL marche (avec MySQL)
  • Contribution wiki
  • Note: Surtout la qualité compte pas besoin de faire trop (3 tables suffisent !)

Activités en classe

Modifier le code suivant et importer dans un serveur MySQL avec un outil comme PhPMyAdmin.

Note: Faites attention lorsque vous copier/collez du SQL à partir de fichiers PDF. Les quotes SQL sont droits: " et ', et pas du genre: ´

Exemple table pour données de sondage:

 CREATE TABLE demo1 (
  id int(10) NOT NULL auto_increment,
  login varchar(10) NOT NULL default '',
  password varchar(100) default NULL,
  fullname varchar(40) NOT NULL default '',
  url varchar(60) NOT NULL default '',
  food int(11) NOT NULL default '0',
  work int(11) NOT NULL default '0',
  love int(11) NOT NULL default '0',
  leisure int(11) NOT NULL default '0',
  sports int(11) NOT NULL default '0',
  PRIMARY KEY  (id),
  KEY login (login)
);

Simple relation avec 2 tables (étudiants et exercices). Contient une foreign key et qqs. données

-- MySQL example with foreign keys.
-- Needs the InnoDB engine (see the table definitions) 
 
--
-- Table 'student'
--
 
DROP TABLE IF EXISTS student;
CREATE TABLE IF NOT EXISTS student (
  id int(10) NOT NULL AUTO_INCREMENT,
  name varchar(40) NOT NULL DEFAULT '',
  first_name varchar(40) NOT NULL DEFAULT '',
  PRIMARY KEY (id)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8;
 
--
-- Data for table 'student'
--
 
INSERT INTO student (id, name, first_name) VALUES
(1, 'Testeur', 'Bill'),
(2, 'Testeur', 'Joe'),
(3, 'Testeuse', 'Sophie'),
(4, 'Player', 'Jim');
 
--
-- Table 'exercise'
--
 
DROP TABLE IF EXISTS exercise;
CREATE TABLE IF NOT EXISTS exercise (
  id int(10) NOT NULL AUTO_INCREMENT,
  title varchar(40) NOT NULL DEFAULT '',
  student_id int(10) NOT NULL,
  comments varchar(128) DEFAULT NULL,
  url varchar(60) NOT NULL DEFAULT '',
  PRIMARY KEY (id),
  KEY student_id (student_id),
  FOREIGN KEY (student_id) REFERENCES student(id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 
--
-- Table 'exercise'
--
 
INSERT INTO exercise (id, title, student_id, comments, url) VALUES
(1, 'Exercise 1', 1, 'small comment', 'http://tecfa.unige.ch/'),
(2, 'Exercise 2', 1, 'no comment', 'http://tecfa.unige.ch/'),
(3, 'exe four', 2, 'No comment', 'http://localhost/'),
(4, 'exe four', 2, 'No comment', 'http://localhost/');

Liens

Texte
SQL and MySQL tutorial (Edutechwiki anglais)
Transparents
http://tecfa.unige.ch/guides/tie/html/mysql-intro/mysql-intro.html (français, qq. détails sont à améliorer, il faudrait notamment utiliser "varchar" au lieu de "char"...)
http://tecfa.unige.ch/guides/te/files/mysql-intro.pdf (Anglais)
PhpMyAdmin
http://tecfa.unige.ch/admin/phpMyAdmin/
Liens techniques
en:SQL (liens)
en:MySQL (liens)