« STIC:STIC I - Atelier technique 4 » : différence entre les versions
Ligne 69 : | Ligne 69 : | ||
*: 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 | *: 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''' | * '''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. | *: 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]]. | 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]]. |
Version du 22 mars 2020 à 11:11
Cet article est en construction: un auteur est en train de le modifier.
En principe, le ou les auteurs en question devraient bientôt présenter une meilleure version.
Disponibilité du contenu
Dans l'attente, les intéressés peuvent s'orienter vers la lecture facultative de la page :
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.
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
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.
Sur le plan théorique, il vous faudra remobiliser les connaissances à propos du fonctionnement d'une page web dynamique vue lors de l'Atelier technique 3 pendant la période précédente.
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
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.
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
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.
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.
Activité avec base de données
- Présentation Base de données
- 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
Outils
- Outils
- Un simple éditeur pour définir le fichier SQL
- phpMyAdmin: http://tecfaetu.unige.ch/phpmyadmin/
- Deployment
- Sur un serveur MySQL de TECFA
Query SQL
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)
);
INSERT INTO demo1 VALUES (NULL,'colin', 'b9hhhfa9347all893u483', 'Patrick Hero','http://tecfa.unige.ch/',1,2,1,3,4);
INSERT INTO demo1 VALUES (NULL,'colin2', 'b9hhhfa9347all893u483', 'Patrick AntiHero','http://tecfa.unige.ch/',5,2,1,3,4);
INSERT INTO demo1 VALUES (NULL,'user12','098f6bcd4621d373cade4e832627b4f6','Testuser','www.mysql.com',1,4,5,2,1);
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/');
Pour aller plus loin
Voir Base de données :
- Utilité des bases de données
- CRUD -> Create, Retrieve, Update, Delete
- SQL vs NoSQL
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/
Démo MediaWiki
Démo installation Mediawiki :
- Donwload depuis le site officiel MediaWiki.org
- Installation des fichiers et configuration de la base de données
- Comprendre la configuration à travers les fichiers