Document ID: /fineweb-2-swissfilter-quality_10-filterrobots/filtered/07031.jsonl.gz/37

Différences entre les versions de « STIC:STIC I - Atelier technique 4 »

m (→Activité 02)

m (→Activité 03)
|Ligne 152 :||Ligne 152 :|
Vous pouvez assez facilement imaginer que dans votre dispositif il existe une page qui vous permet d'ajouter des informations, normalement structurée par champs (e.g. nouveau post dans [[Word_press]] ou nouvelle page dans [[Mediawiki]]). Quelque parte dans la logique de votre application, il existe un bout de code qui va exécuter la ''query'' <code>INSERT INTO ...</code>.
Vous pouvez assez facilement imaginer que dans votre dispositif il existe une page qui vous permet d'ajouter des informations, normalement structurée par champs (e.g. nouveau post dans [[Word_press]] ou nouvelle page dans [[Mediawiki]]). Quelque parte dans la logique de votre application, il existe un bout de code qui va exécuter la ''query'' <code>INSERT INTO ...</code>.
|+|
|+|
=== Activité 03 ===
=== Activité 03 ===
Version du 22 mars 2020 à 13:06
1 Disponibilité du contenu
Dans l'attente, les intéressés peuvent s'orienter vers la lecture facultative de la page :
2 Introduction
Cet Atelier propose une série d'informations et activités de consolidation à propos d'une technologie très utilisée dans le site web dynamique : la base de données.
Une activité liée à votre projet spécifique est également prévue : la création d'une fiche technique, dans laquelle vous illustrez vos choix par rapport aux technologies utilisées pour votre projet.
2.1 Connaissances/compétences envisagées
À l'issue de cet exercice vous devez avoir acquis les connaissances/compétences suivantes :
- Identifier dans les bases de données l'extension du principe fondamentale de array en programmation : associer à une information un ou plusieurs indexes pour la récupérer
- Comprendre les grandes lignes des fonctions d'une base de données, notamment l'acronyme CRUD (Create, Retrieve, Update, Delete)
- Connaître l'existence de plusieurs systèmes de bases de données, notamment les bases des données relationnelles qui utilisent un langage de type SQL (Structured Query Language)
- Pouvoir exécuter des interrogations simples à une base de données à travers phpMyAdmin
- Savoir esquisser une simple modélisation de données pour une table
2.2 Prérequis
Sur le plan technique, pour effectuer les activités, il vous faudra les accès au service MySQL du serveur tecfaetu.unige.ch qui sera fait à travers l'interface phpMyAdmin. Les données d'accès vous ont été communiquées dans l'atelier précédent.
3 Activité Projet Webmaster : fiche technique
Dans le forum du cours STIC I de votre volée vous trouverez une discussion avec le titre Projet Webmaster - fiche technique de votre projet. Lisez les consignes et postez votre fiche directement en réponse à la discussion.
Durée de l'activité : 20-30 minutes
4 Qu'est-ce qu'une base de données ?
Cette section résume le contenu de la page base de données, à consulter pour ceux qui sont intéressés en savoir plus. Les termes base de données et l'équivalent anglais database seront utilisés comme synonymes.
4.1 Fonction générale d'une base de données
Une base de données est l'extension du principe fondamental de array en programmation (voir Introduction à la programmation pour rappel). En effet, l'un des principes fondamentaux de l'informatique, que ce soit sur le plan théorique ou pratique, consiste à manier de l'information. Les bases de données sont une complexification et optimisation de ce principe de base qui s'articulent sur plusieurs niveaux :
- Service ou système
- Au niveau plus élevé on retrouve un logiciel qui sert comme service ou système de gestion des bases de données, comme par exemple MySQL. Ce système s'occupe de rendre les bases de données accessibles et maniables de différentes manières, notamment à travers un langage de programmation côté serveur utilisé pour la création de sites web dynamiques comme PHP
- Base de données
- Tableau
- Un tableau est une organisation de données plus spécifique, organisée souvent - mais pas exclusivement - en format rectangulaire, c'est-à-dire par lignes et colonnes (i.e. similaire à une feuille Excel)
- Champs
- Un champ (field en anglais) détermine l'association clé-valeur entre la structure des données et l'information
4.2 Types de bases de données
Il existe plusieurs types de bases de données. Dans le cadre de cette activité, nous nous focalisons les databases de type relationnelles qui restent les plus utilisées à présent. Mais d'autres systèmes sont en train de gagner du terrain car plus adaptés à certains types de données. La différence principale qui divise les systèmes de base des données concerne la structuration de l'information :
- Les bases de données de type relationnel utilise une structure fixe pour les tableaux, c'est-à-dire que chaque entrée dans le tableau (i.e. chaque ligne) doit respecter le nombre de champs (i.e. toutes les colonnes) prévus par le tableau
- D'autres bases de données utilisent une structure flexible, par exemple basée sur un format de type JSON. C'est le même principe de l'exercice sur XML que vous venez de faire : les données peuvent se structurer de manière imbriquée plutôt que à plat dans une structure rectangulaire
En termes techniques on fait cette division avec les acronymes :
- Database SQL
- Bases de données à structure fixe qui utilisent le Structured Query Language, un langage d’interrogation de bases de données qu'on verra par la suite
- Database NoSQL
- Bases de donnée à structure flexibles. NoSQL peut être traduit comme No SQL ou Not Only SQL, car certains systèmes sont hybrides.
Nous ne verrons pas des databases NoSQL dans cette activité, mais si vous êtes intéressées référez-vous à la page base de données.
4.3 Fonctions principales des bases de données
La plupart des systèmes de gestion de databases permettent des opérations sur les données telles que :
- CRUD : acronyme de Create, Retrieve, Update, et Delete, c'est-à-dire les opérations les plus communes effectuées sur des données ;
- Filtrer : appliquer des critères de sélection pour obtenir un sous-ensemble de données par rapport à la totalité de l'information stockée ;
- Trier (ou Sorting en anglais) : utiliser des critères pour placer les données dans un ordre précis. Le tri est une opération informatique qui nécessite d'une grande puissance computationnelle, et les bases de données sont souvent optimisés pour ce type d'opération ;
- Répliquer : créer des "clones" d'une base de données pour des raisons de sécurité (backup) ou pour balancer les ressources (e.g. utiliser deux databases "jumeaux" pour départager un nombre élevé d'interrogations).
Ces opérations se font à travers des interrogations (en anglais queries) qui déterminent :
- Quel type d'opération effectuer (créer, modifier, effacer, ... des données) ;
- Quelles données seront affectées par l'opération.
Toute opération sur les données comporte un temps d'exécution qui est souvent proportionnel à la complexité de l'interrogation et/ou au nombre des données affectées par l'opération.
5 Activité avec base de données
Vous allez effectuer des activités sur les bases de données à travers l'interface graphique phpMyAdmin qui vous permet de manier les données à travers du code et/ou des commandes à l'interface (e.g. formulaires et boutons).
Connectez-vous à l'interface phpMyAdmin :
Sélectionnez la base de données depuis la liste à gauche en cliquant sur son nom.
5.1 Activité 01
La première activité consiste à insérer des données dans une base de données déjà existante. Vous allez insérer les données de deux manières différentes :
- D'abord à travers l'interface de phpMyAdmin
- Ensuite à travers votre première query SQL
5.1.1 Insérer une nouvelle entrée avec l'interface graphique
Dans la base de données zelda_demo vous trouvez une table qui s'appelle
01_books. Cliquez sur le nom de la table. La table se compose de 4 champs :
id: un identificateur unique pour chaque entrée qui est généré automatiquement par la base de données de manière séquentielle
title: le titre du livre
author: l'auteur du livre
proposed_by: le nom de la personne qui la propose
L'interface de phpMyAdmin qui s'ouvre lorsque vous cliquez sur le nom de la table devrait déjà vous montrer quelques entrées disponibles. Cliquez sur le bouton
Insérer en haut de la partie principale de l'interface. Un écran avec des champs de formulaire va apparaître. Normalement, vous avez deux fois les mêmes champs qui se répètent, mais n'utilisez que la première série.
Remplissez les champs pour proposer un nouveau livre, sauf le champ
id qui doit rester vide.
Cliquez sur le bouton
Exécuter. Notez des éventuelles messages d'erreurs à l'écran, si non le livre va s'ajouter à la liste et vous obtenez à l'interface un nouveau écran qui reporte la query que vous venez d'exécuter, par exemple :
INSERT INTO `01_books` (`id`, `title`, `author`, `proposed_by`) VALUES (NULL, 'Le Nom de la rose', 'Umberto Eco', 'MAF');
Copier cette ligne, on la modifiera pour la réutiliser dans l'étape suivante. Puis cliquez sur le bouton en haut
Afficher pour voir la liste des entrées, la votre sera la dernière (selon le nombre d'entrées déjà présentes, il faudra peut-être changer de pagination).
5.1.2 Insérer une nouvelle entrée avec l'exécution du code SQL
Maintenant vous allez insérer un autre livre avec une instruction SQL. Cliquez sur le bouton
SQL en haut de la partie de l'interface principale. Vous aurez à l'image un grand textarea dans lequel vous avez déjà une query :
SELECT * FROM `01_books` WHERE 1
Effacez-la et remplacez avec le code de votre query précédente. Puis adaptez le titre et l'auteur dans le texte pour insérer une nouvelle entrée différente de la précédente, par exemple.
INSERT INTO `01_books` (`id`, `title`, `author`, `proposed_by`) VALUES (NULL, 'Les Misérables', 'Victor Hugo', 'MAF');
Cliquez sur le bouton
Exécuter en bas à droite.
5.1.3 À retenir
Les opérations que vous venez d'effectuer correspondent à la partie Create de l'acronyme CRUD, car vous venez de créer des nouvelles entrées dans une table d'une base de données.
La query SQL est assez self-explaining, car elle utilise des verbes et une syntaxe assez simple à lire dans ce cas. Pour des tables plus complexes, comme dans le cas des vos plateformes/portails, les query seront sûrement plus articulées, mais le principe est le même.
Vous pouvez assez facilement imaginer que dans votre dispositif il existe une page qui vous permet d'ajouter des informations, normalement structurée par champs (e.g. nouveau post dans Word_press ou nouvelle page dans Mediawiki). Quelque parte dans la logique de votre application, il existe un bout de code qui va exécuter la query
INSERT INTO ....
5.2 Activité 02
5.3 Activité 03
Dans cette activité vous allez effectuer une modélisation des données pour une base de données relationnelle (à ne pas confondre avec la modélisation des données en Data Science, voir par exemple Introduction à la modélisation des données avec R).
Modéliser pour une base de données implique :
- Créer une schéma avec toutes les associations clé-valuer nécessaires à vos entrées
- Définir les caractéristiques de chaque association en termes du type de données (e.g. chiffre, texte, ...) et éventuelles contraintes à respecter (e.g. longueur, valeur NULL acceptée ou pas, etc.)
La modélisation des données peut être plus ou moins complexe en fonction des deux aspects :
- Le nombre de champs à modéliser
- Si la modélisation prévoit des relations entre différents tables, par exemple le schéma suivant affiche trois tables qui sont en lien avec ce qu'on appelle une foreign key :
- Une table avec la liste des étudiants (un bleu)
- Une table avec la liste des cours (en vert)
- Une table avec la liste des notes des étudiants qui puise les étudiants et les noms du cours des deux tables respectives
Les associations relationnelles dépassent le caractère introductif de cette activité, mais peuvent être un élément d'intérêt à approfondir pour ceux qui veulent construire un background technique.
5.3.1 Créer une nouvelle table en spécifiant votre propre modèle
Essayez de modéliser une simple table avec 5-6 champs qui schématise une structure de données de votre intérêt. Pour créer la table :
- Cliquez sur
Nouvelle tabledans la partie gauche de l'interface sous la base des données zelda_demo
- Choisissez un nom pour la table dans le champ en haut de l'écran qui s'affiche (pas très visible en réalité)
- Utilisez un préfix, par exemple vos initiales ou votre login court pour éviter des homonymes avec vos collègues
- Si besoin, ajoutez le nombre de champs nécessaires toujours à travers la partie haute de l'interface
- Passez à la définition de chaque champ
- Pour le premier, utiliser le nom
idet sélectionnez SERIAL dans le menu déroulant Type. Il ne faut pas spécifier d'autres paramètres. Cette option vous permet d'avoir une identifiant unique pour chaque entrée de votre table qui est donnée directement par la base de données
- Pour les autres, définissez le nom et le type. Les 4 types proposés en début de la liste (INT, VARCHAR, TEXT, DATE) sont normalement suffisant pour la plupart des utilisations. Il y a beaucoup d'options à choisir et les indiquer toutes serait inutile. Procédez par essais.
- Pour le premier, utiliser le nom
Une fois votre schéma prêt, clique d'abord sur
Aperçu SQL en bas de l'interface. Cela vous donnera une idée que même la création des tables se fait à travers le même système de query SQL.
Enfin, cliquez sur
Sauvegarder pour créer votre table. Vous pouvez répéter l'activité 1 avec votre base pour insérer des entrées.
6 Pour aller plus loin
Voir Base de données :
- Utilité des bases de données
- CRUD -> Create, Retrieve, Update, Delete
- SQL vs NoSQL
6.1 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/