VA
Comment lire ce livre ? Qui sommes nous ?
I. PAGES WEB
II. SERVEUR WEB
III. BASES DE DONNEES
IV. INTERACTION FRONT-BACK
Annexe I. ENSEIGNEMENT NSI
Annexe II. LES FRAMEWORKS

Ressources pour Enseigner NSI en Terminale

Ce chapitre commence par rappeler le programme NSI . Il traite ensuite de la progression pédagogique en exploitant les chapitres de ce livre et en précisant l'alignement avec le programme. Il termine enfin par discuter des mises en oeuvre et propose plusieurs projets qu'il est possible de donner aux élèves.

Programme NSI

Le programme NSI est défini pour l'année de première et pour l'année de terminale.

Pour ce qui est de la programmation d'applications web, le programme de l'année de première se focalise sur HTML, le protocole HTTP et l'exploitation de Javascript dans le navigateur. Le programme pour l'année de terminale s'intéresse quant à lui aux bases de données.

Le Tableau 11.1 montre la correspondance entre les chapitres de ce livre et les deux années du programme NSI.

On peut voir que, pour l'année de première, les premiers chapitres de ce livre (1, 2, 4 et 5) ainsi que le chapitre 9 correspondent au programme. Il faut noter que CSS (chapitre 3) n'est pas au programme. Pour l'année de terminale, les chapitres 6, 7 et 8 traitent des bases de données. Les concepts avancés de session et de cookie que nous développons dans ce livre ne sont pas au programme NSI.

Chapitre NSI Première NSI Terminale
Chapitre 1 : Serveur de Pages Web X
Chapitre 2 : HTML et les pages Web X
Chapitre 3 : Style CSS
Chapitre 4 : Mode statique et mode dynamique X
Chapitre 5 : Le protocole HTTP X
Chapitre 6 : Le modèle relationnel X
Chapitre 7 : Les requêtes X
Chapitre 8 : Lien entre serveur et base de données X
Chapitre 9 : Gestion des événements en Javascript X
Chapitre 10 : Session et compte utilisateur

Tableau 11.1 : Correspondance entre les chapitres de ce livre et les années NSI.

Le programme de NSI pour la classe de terminale est composé de six rubriques. Parmi celles-ci la rubrique bases de données est lié au développement des applications web. La description de cette rubrique est la suivante :

Le développement des traitements informatiques nécessite la manipulation de données de plus en plus nombreuses. Leur organisation et leur stockage constituent un enjeu essentiel de performance. Le recours aux bases de données relationnelles est aujourd’hui une solution très répandue. Ces bases de données permettent d’organiser, de stocker, de mettre à jour et d’interroger des données structurées volumineuses utilisées simultanément par différents programmes ou différents utilisateurs. Cela est impossible avec les représentations tabulaires étudiées en classe de première. Des systèmes de gestion de bases de données (SGBD) de très grande taille (de l’ordre du pétaoctet) sont au centre de nombreux dispositifs de collecte, de stockage et de production d’informations. L’accès aux données d’une base de données relationnelle s’effectue grâce à des requêtes d’interrogation et de mise à jour qui peuvent par exemple être rédigées dans le langage SQL (_Structured Query Language_). Les traitements peuvent conjuguer le recours au langage SQL et à un langage de programmation. Il convient de sensibiliser les élèves à un usage critique et responsable des données.

Le programme NSI précise quatre contenus pour la rubrique bases de données. Chaque rubrique est présentée avec une liste des capacités attendues et des commentaires. Le Tableau 12.2 rappelle ces contenus.

Contenus Capacités attendues Commentaires
Modèle relationnel : relation, attribut, domaine, clef primaire, clef étrangère, schéma relationnel. Identifier les concepts définissant le modèle relationnel. Ces concepts permettent d’exprimer les contraintes d’intégrité (domaine, relation et référence).
Base de données relationnelle. Savoir distinguer la structure d’une base de données de son contenu. Repérer des anomalies dans le schéma d’une base de données. La structure est un ensemble de schémas relationnels qui respecte les contraintes du modèle relationnel. Les anomalies peuvent être des redondances de données ou des anomalies d’insertion, de suppression, de mise à jour. On privilégie la manipulation de données nombreuses et réalistes.
Système de gestion de bases de données relationnelles. Identifier les services rendus par un système de gestion de bases de données relationnelles : persistance des données, gestion des accès concurrents, efficacité de traitement des requêtes, sécurisation des accès. Il s’agit de comprendre le rôle et les enjeux des différents services sans en détailler le fonctionnement.
Langage SQL : requêtes d’interrogation et de mise à jour d’une base de données. Identifier les composants d’une requête. Construire des requêtes d’interrogation à l’aide des clauses du langage SQL : SELECT, FROM, WHERE, JOIN. Construire des requêtes d’insertion et de mise à jour à l’aide de : UPDATE, INSERT, DELETE. On peut utiliser DISTINCT, ORDER BY ou les fonctions d’agrégation sans utiliser les clauses GROUP BY et HAVING.

Tableau 11.2 : Les contenus du programme NSI pour la classe de terminale.

Progressions pédagogiques

Le Tableau 12.3 présente une correspondance fine entre les contenus du programme NSI en classe de terminale et les chapitres de ce livre.

Contenus NSI en classe de première Chapitres du livre
Modèle relationnel Chapitre 6
Base de données relationnelle. Chapitre 6
Système de gestion de bases de données relationnelles. Chapitre 8
Langage SQL Chapitres 6 et 7

Tableau 12.3 : Correspondance entre les chapitres de ce livre et le contenu du programme NSI en classe de première.

Pour la progression pédagogique il nous parait important de démarrer par le chapitre 6 et d'expliquer les principes du modèle relationnel. Il est tout à fait envisageable de ne pas présenter la formalisation. L'application de SQL nous parait par contre plus qu'utile. Elle est, de plus, très bien appréciée par les élèves.

Poursuivre vers le chapitre 7 et présenter les requêtes nous semble être la progression classique. La montée en abstraction avec l'algèbre relationnelle n'est pas nécessaire. Il nous parait par contre intéressant de présenter d'abord les requêtes mono-table puis les requêtes multi-tables. Là encore, l'application de SQL nous semble nécessaire.

Les chapitres 6 et 7 couvrent trois contenus sur quatre. Nous avons fait le choix de ne pas détailler les apports des systèmes de gestion de bases de données. Ceux-ci sont vu lors des sessions de manipulation (nous avons fait le choix d'utiliser Postgres).

Notre chapitre 8 n'est pas au programme de NSI. Il nous semble néanmoins intéressant d'illustrer la connexion entre un serveur web et une base de données. Cela permet de rendre les bases de données plus concrètes et de faire un lien avec les applications web. Cela explique aussi le rôle des systèmes de gestion des bases de données.

En résumé, la progression pédagogique que nous proposons se fait en 5 parties :

  1. Principes du modèle relationnel (CREATE, INSERT).
  2. Relation entre les tables (DELETE).
  3. Requêtes mono-table (SELECT, FROM, WHERE, ORDER BY).
  4. Requêtes multi-tables (JOIN).
  5. Lien avec les serveurs web.

Pour coller pleinement au programme, il faudra expliquer le rôle du système de gestion de bases de données. Cela peut se faire lors des sessions de manipulation. Avec Postgres on peut même montrer le modèle physique (les fichiers utilisés pour stocker les données).

Mise en oeuvre et projets

De manière similaire à notre livre, nous proposons l'utilisation de NodeJS et Postgres pour mettre en oeuvre les connaissances. Nous conseillons de déployer Postgres sur chaque poste de travail.

Les questions de cours et les exercices que nous proposons dans les chapitres de ce livre peuvent être repris pour un enseignement en NSI. Il est aussi possible de reprendre le projet de mur d'images. Nous proposons ici d'autres projets facilement déclinables avec notre proposition pédagogique en cinq parties.

IMDB

L'objectif de ce projet est d'exploiter la base de données IMDB.

Celle-ci est détaillée ici.

Les fichiers qui contiennent les données sont téléchargeables ici.

Nous considérons essentiellement trois fichiers :

  • name.basics.tsv.gz qui décrit les noms des personnes impliquées dans les films (acteur, actrice, etc.).
  • title.basics.tsv.gz qui décrit les films.
  • title.principals.tsv.gz qui décrit quelles personnes sont impliquées dans quels films.

Nous proposons une conception avec trois tables et avons construit une base de données qui ne contient qu'une petite partie de toutes les données téléchargeables. Les fichiers SQL qui permettent d'installer cette base de données sont disponibles avec 100 acteurs / actrices ou 500 acteurs / actrices .

Grâce à ces données il est possible de proposer des questions de conception des tables et d'expression des requêtes. Par exemple, il est possible de demander de construire un site web présentant les acteurs / actrices (table names) et qui donne un accès aux films dans lesquels ils / elles apparaissent. La conception de la base est un exercice intéressant car il y a des clés étrangères entre les bases names, titles et principals. L'élaboration des requêtes est aussi un exercice intéressant car il faut faire des jointures et qu'il y a de nombreuses données ce qui pose des problèmes en terme d'affichage.

Nous proposons une réalisation qui met en place deux solutions. La première solution liste tous les acteurs / actrices dans une combo box. La deuxième solution propose à l'utilisateur de taper quelques lettres du nom et réalise l'appel de la requête en Javascript dans le navigateur. Le rendu de ce projet est visible ici.