Académique Documents
Professionnel Documents
Culture Documents
données
données : TP 1
Nous allons voir qu’une base de données est un objet complet et indépendant de votre langage de
programmation pour stocker les informations.
Dans cette activité, vous allez voir comment gérer votre base de données de façon totalement
autonome par rapport à vos propres programmes. Une fois cette activité réalisée, vous pourrez alors
comprendre comment réaliser un programme (en Python, en PHP...) pour interagir automatiquement
avec une base de données.
Mais pour l'instant, nous allons voir comment gérer une base de données SQL à travers une interface
web (PHPMyAdmin) ou en utilisant les requêtes (instructions) SQL.
MySQL est certainement le plus connu. Il est distribué avec une licence libre si
vous l'utilisez pour créer un programme libre de droit ou avec une licence payante
si vous voulez l'utiliser pour construire un programme payant. En 2017, c’est
Oracle qui édite MySQL, alors que la société vend également son propre SGBD,
nommé ... Oracle Database..
MariaDB est un fork du précédent, réalisé par son créateur après le rachat de
MySQL et les doutes que cela entraînait sur la pérennité de MySQL. Pourquoi de
tels noms ? My est le prénom de sa première fille et Maria celui de sa deuxième
fille.
PostgreSQL est un autre projet libre. Comme les projets libres Apache et Linux, PostgreSQL
est géré par une communauté mondiale de développeurs et d'entreprises.
SQLite est un autre projet libre. Il a la particularité de n'utiliser qu'un fichier pour
gérer la base de données.
Il est facilement intégrable à tout projet, car son créateur, D. Richard Hipp, l'a placé
dans le domaine public, Comme il ne comporte qu’un fichier, on ne retrouve pas la
nécessité d'avoir un serveur actif sur lequel se connecte le client. Il est donc très souvent employé
Page 1/9
sur les projets autonomes (sans serveur) et les prototypes de gros projets. Le navigateur Firefox
l'utilise par exemple pour gérer ses propres données.
II – Présentation de XAMPP
Nous allons travailler avec un logiciel qu'il vous faudra installer chez vous pour réaliser cette
activité : XAMPP.
Pour le télécharger et l'installer, le mieux est encore d'aller directement sur le site de la distribution
Apache : XAMPP. Une fois installé, vous pourrez le mettre en marche :
Page 2/9
III – Gérer sa base de données avec phpMyAdmin
Regardons maintenant phpMyAdmin de plus près. Commencer par regarder le nom de l'onglet sur
votre navigateur ou ce qui est noté à côté de phpMyAdmin:
Dans l’onglet :
Interclassement ?
Derrière ce terme, un peu étrange, se cachent les algorithmes de tri ou du moins, la façon dont on
veut afficher le tri :
Si vous choisissez uft8_bin par exemple, vous aurez un tri selon le code réel des caractères : les
lettres A (code 65) et a (code 97) ne seront donc pas traitées la même manière. Ainsi Ac serait
devant ab.
Page 3/9
Exemple d’une table décrivant des jeux vidéo (des très vieux, pour éviter les problèmes liés à la
publicité et pour faire un peu d'archéologie informatique) :
Année
id Jeu Description de Éditeur Support Genre Capture d’écran
sortie
Simulation de
pilotage d'avions
Flight
1 avec des pixels 1980 subLOGIC Apple 2 Simulateur
Simulator
gros comme des
camions !
Un méchant singe
géant a capturé la
fiancée de
JumpMan (qui
DONKEY portera plus tard
2 le nom de Mario). 1981 Nintendo Arcade Plateformes
KONG
Guide JumpMan
pour
qu'il délivre sa
dulcinée.
Pitfall Harry, un
explorateur,
3 PITFALL ramasse des 1982 Activision Atari 2600 Plateformes
objets éparpillés
dans la jungle.
Pitfall Harry, un
explorateur,
Commodore
4 PITFALL ramasse des 1983 Activision Plateformes
64 (C64)
objets éparpillés
dans la jungle.
Rockford, mineur
téméraire,
ramasse des
Boulder diamants et tente First Star Commodore
5 1983 Plateformes
Dash de ne pas se faire Software 64 (C64)
écraser par les
énormes pierres
instables.
Activité 5 – Créer une table comportant 8 colonnes puisque notre tableau de jeux comporte 8
champs : le nom, la description, l’année de sortie, l’éditeur, le support, le type et le Screenshot.
Vous voyez que nous avons maintenant la possibilité de choisir ce que nous allons mettre dans les
colonnes :
Page 4/9
Décrivons peu à peu les différentes cases à renseigner.
• Id : c’est le numéro de l’entrée. On ne le rajoute jamais spontanément en tant qu’humain.
Mais cela permet de séparer et d’identifier des entrées qui possèdent des éléments identiques
(même nom, même prénom)
• Jeu : c’est le nom du champ la façon dont la base de données va le reconnaître.
• Type : un peu comme pour les variables, nous allons indiquer ici ce que va contenir cette
case : des caractères, des nombres, du texte libre, des images, etc..
Nous n’allons pas décrire l’ensemble des types disponibles mais si vous cliquez dessus, nous allons
voir qu’il y en a un certain nombre. Nous allons en décrire quelques-uns plus bas. Le réglage fin de
cette case est très important, car c’est elle qui détermine le poids en octet de chaque champ.
• Taille/Valeurs : nous détaillerons plus loin, en même temps que Type.
• Valeur par défaut : Vous pouvez ne rien mettre par défaut, définir une valeur vous-même,
placer NULL (une valeur spécifique qui vous garantit que la personne n'a pas encore défini cette
valeur ou la date de création.
Activité 6 – Nommer le premier champ id et laisser la souris au-dessus de INT pour voir les
possibilités de numérotation que cela représente.
Deux problèmes ici. Le premier est que l'identifiant peut aller de – 2,147 milliards à +2,147 milliards
en gros. Or, nous ne voulons que des identifiants positifs ou nuls. Autant ne pas utiliser un type
d'encodage des nombres qui occupe de la mémoire pour gérer un signe négatif qui ne sera jamais
utilisé.
Activité 8 – Changer le type d'Integer pour SMALLINT. Combien de numéros différents sachant que
j’utilise alors 2 octets
pour stocker l’id ? J’ai
pour objectif d’atteindre
10 000 références.
Pourquoi ce type
d'Integer est-il
correctement choisi ?
Page 5/9
Deux choses sont encore possibles : signaler que id est l’identificateur de cette table et lui demander
de créer automatiquement ce numéro dès qu'on rajoute une instance à cette table.
On dispose donc de 2 fois 8 bits, soit 16 bits pour encoder le nombre. Aucun bit n'est perdu ici pour
stoker le signe. Avec juste les ordres de grandeurs, cela donne :
nbr octets
Nom Signe ? Valeur min. Valeur max.
(bytes)
TINYINT Unsigned 1 0 255
Signed 1 - 128 + 127
SMALLINT Unsigned 2 0 65 535
Signed 2 - 32 768 + 32 767
MEDIUMINT Unsigned 3 0 16 777 215
Signed 3 - 8 388 608 + 8 388 607
INT Unsigned 4 0 4 294 967 295
Signed 4 - 2 147 483 648 + 2 147 483 647
BIGINT Unsigned 8 0 18 446 744 073 709 551 615
Signed 8 - 9 223 372 036 854 775 808 + 9 223 372 036 854 775 807
Activité 10 – Expliquer Pourquoi ne pas mettre constamment tous les integers en BIGINT pour être
tranquille ?
Vous pourrez alors valider ces deux premières lignes en cliquant sur le bouton en
bas à droite.
Pour rajouter d'autres colonnes après création des premières, il faut rechercher
votre table dans le menu vertical de gauche et cliquer sur Nouvelle Colonne.
Activité 12 – Créer un champ de nom description de type TEXT. Valeur par défaut NULL, un
commentaire du type «Placer la description du jeu ici».
Page 6/9
Cocher la case NULL : cela permet d'autoriser la case à contenir NULL lors de l'enregistrement. NULL
est donc une valeur à part qui signale clairement que la case n'a pas été traitée par l’utilisateur.
C’est donc un peu différent d’une entrée 'vide'.
Activité 13 – Créer un champ de nom sortie de type YEAR. Cocher la case NULL.
Il est conseillé de ne pas utiliser de nom de champ avec des caractères autres que ceux de l'ASCII.
Ne placer ainsi que des lettres (majuscules, minuscules), des chiffres ou d’Underscore. Mais pas
d'accents ou de caractères étranges sortant de l'ASCII.
Pourquoi ?
Pour éviter les problèmes de différences d’encodage entre la base de données, le serveur et le
logiciel qui va traiter les résultats de la base de données. Si votre texte s’affiche mal, c’est un
problème mais si votre programme ne parvient pas à retrouver les colonnes, c’est plus
problématique.
Si vous maîtrisez de bout en bout les encodages lors des communications entre programmes, vous
pouvez faire ce que vous voulez. C’est juste un conseil, pas une obligation. Mais le jour où votre
programme cessera de répondre correctement (après une mise à jour, un changement d'encodage
par défaut ou autre), ce sera un réel problème.
Activité 14 – Créer un champ de nom editeur de type VARCHAR de longueur 40. Cocher la case
NULL.
Activité 15 – Créer un champ de nom support de type SET : nous allons pouvoir fournir les
réponses acceptées. Contrairement à ENUM, nous pouvons fournir des réponses multiples (ce qui est
le cas pour le support d’un jeu : il sort souvent sur plusieurs machines à la fois). Rentrer ensuite les
valeurs possibles suivantes : Arcade, Apple2, Atari 2600, C64, Amiga, etc..
La différence entre SET et ENUM est donc la suivante :
- ENUM impose de choisir UNE valeur dans le menu déroulant parmi les choix proposés.
- SET est l'équivalent de choix via des cases à cocher : on peut en cocher une, plusieurs ou
aucune. Via l'interface, il faut appuyer sur CTRL pour valider des choix multiples.
Activité 16 – Créer un champ de nom genre de type ENUM : nous allons pouvoir fournir les
réponses acceptées.
Entrer ensuite les valeurs possibles suivantes : Plateformes, RPG, Simulateur
Page 7/9
Année
id Jeu Description de Éditeur Support Genre Capture d'écran
sortie
Simulation de
piotage d'avion
Flight
1 avec des pixels 1980 subLOGIC Apple 2 Simulateur
Simulator
gros comme
des camions !
Un méchant
singe géant a
capturé la
fiancé de
JumpMan (qui
DONKEY Plate-
2 portera plus 1981 Nintendo Arcade
KONG formes
tard le nom de
Mario). Guide
JumpMan pour
qu'il délivre sa
dulcinée.
Pitfall Harry, un
explorateur,
ramasse des Plate-
3 PITFALL! 1982 Activision Atari 2600
objets formes
éparpillés dans
la jungle.
Pitfall Harry, un
explorateur,
ramasse des Commodore Plate-
4 PITFALL! 1983 Activision
objets 64 (C64) formes
éparpillés dans
la jungle.
Rockford,
mineur
téméraire,
ramasse des
diamants et
Boulder First Star Commodore Plate-
5 tente de ne 1983
Dash Software 64 (C64) formes
pas se faire
écraser par les
énormes
pierres
instables.
En allant ensuite sur Parcourir (dans le menu horizontal), vous pourrez voir le contenu de votre petite
table.
Page 8/9
Comme vous pouvez le constater sur
l’image, la base de données se termine
ici à 7 car on a déjà créé et supprimé
un certain nombre d’entrées dans cette
table. Retenez ainsi que la plus grande
valeur de l’ID ne correspond pas au
nombre d’entrées réelles, car certaines
ont pu être supprimées.
Activité 19 – Faire une recherche pour trouver toutes les entrées compatibles avec le C64 puis
toutes les entrées de type Plateformes.
Lors du TP suivant, nous verrons comment lier deux tables entre elles : nous pourrons ainsi fournir
des indications précises sur le C64 ou l'Apple 2 (puissance, taille de l’écran ...) sans pour autant avoir
à les stocker dans chaque entrée des jeux utilisant cet appareil.
Page 9/9