Plus facile à lire avec un fond crème, une teinte, plus de contraste ou un texte plus grand ? Choisissez vos couleurs et votre texte, une fois pour toutes les pages.

Leçon gratuite

La minimisation des données

Après cette leçon: Je peux réduire ce qu'un système collecte et ce qu'une équipe voit, avec une vue qui montre moins de colonnes.

Leçon de 55 min9 commandesLab MySQL et phpMyAdmin avec une base de boutique pour s’exercer en SQL

Pourquoi demander la date de naissance ?

La minimisation des données est le principe qui demande de ne collecter que les données utiles à un but précis. Elle réduit les risques : une donnée que l'on n'a pas ne peut ni fuir ni être détournée.

Un club de sport demande la date de naissance, le téléphone et la ville pour réserver un créneau de piscine. Presque tout est inutile. Vous allez apprendre à trier.

À la fin de cette leçon

Remarque

Je peux réduire ce qu'un système collecte et ce qu'une équipe voit, avec une vue qui montre moins de colonnes.

Mots clés

MotCe que ça veut direExemple
Minimisationne collecter que les données utiles au but
Finalitéle but précis pour lequel on collecte une donnée
Collectele moment où une organisation obtient une donnée
Donnée facultativeune donnée que la personne peut ne pas donnerphone
Vueune requête gardée sous un nom, qui montre moins de colonnesCREATE VIEW

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

Chaque donnée doit servir un but précis

Avant de demander une donnée, écrivez à quoi elle sert. Ce but est la finalité. Sans finalité claire, on ne collecte pas.

Le test est simple : si l'on retire la colonne, le service fonctionne-t-il encore ? Si oui, elle est de trop.

Une donnée facultative peut être laissée vide sans bloquer le service.

Exemple : trois buts, trois besoins différents

ButDonnées utilesDonnées en trop
Livrer une commandeNom, adresse de livraisonDate de naissance, religion
Envoyer la factureNom, courrielTéléphone, date de naissance
Suivre les ventes par paysPays, date de la commandeNom, courriel, téléphone

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

Voir ce que la boutique du laboratoire demande

Lancez les deux premiers Runs pour préparer le terminal. Le troisième prépare un rapport de ventes par pays : il n'a besoin d'aucune donnée directe.

Le dernier compte les clients qui n'ont jamais donné de téléphone. La boutique fonctionne pour eux : cette colonne est donc facultative.

Accepter le certificat du serveur

Commande
printf '[client]\nssl-verify-server-cert=0\n' > ~/.my.cnf

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Un nom court pour la boutique

Commande
alias sql='mariadb -h db -u student -pstudent shop -t -e'

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Un rapport par pays, sans nom

Commande
sql "SELECT country, COUNT(*) AS clients FROM customers GROUP BY country ORDER BY country"

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Les clients sans téléphone

Commande
sql "SELECT COUNT(*) AS sans_telephone FROM customers WHERE phone IS NULL"

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Une vue montre moins de colonnes

On ne peut pas toujours retirer une colonne de la table. Mais on peut limiter ce qu'une équipe voit.

Une vue garde une requête sous un nom. On la lit comme une table, mais elle n'affiche que les colonnes choisies. L'équipe qui fait des statistiques reçoit la vue, pas la table complète.

La vue cache, elle ne supprime pas : la table garde toutes ses colonnes.

Créer une vue dans votre propre base

Vous allez créer une base student_vie_privee, à vous seul. Les Runs écrivent seulement là et lisent la boutique sans la changer.

Le quatrième Run lit trois lignes de la vue. Le dernier compte ses colonnes : elle en a quatre, quand la table des clients en a huit.

Un nom court pour écrire

Commande
alias bd='mariadb -h db -u student -pstudent -t -e'

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Créer votre base

Commande
bd "CREATE DATABASE IF NOT EXISTS student_vie_privee"

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Créer la vue des statistiques

Commande
bd "CREATE OR REPLACE VIEW student_vie_privee.clients_stats AS SELECT id, city, country, joined_on FROM shop.customers"

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Lire trois lignes de la vue

Commande
bd "SELECT * FROM student_vie_privee.clients_stats ORDER BY id LIMIT 3"

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Compter les colonnes de la vue

Commande
bd "SELECT COUNT(*) AS colonnes FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'student_vie_privee' AND TABLE_NAME = 'clients_stats'"

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Une erreur fréquente

Attention

Beaucoup pensent qu'il vaut mieux collecter plus « au cas où ». Une donnée de trop coûte à protéger et peut fuir sans servir à rien. Collectez ce que le but demande aujourd'hui, et redemandez plus tard si le but change.

À vous : un planning sans données inutiles

Code: sql
-- Le planning n'a besoin que du sport : on ne lit rien d'autre.
SELECT sport, COUNT(*) AS inscrits
FROM adherents
GROUP BY sport
ORDER BY sport;
-- À vous : ajoutez la colonne ville dans le SELECT et dans le GROUP BY.
-- Les inscrits sont-ils plus faciles à reconnaître ?

À propos de ce labo et de sa source: Lab MySQL et phpMyAdmin avec une base de boutique pour s’exercer en SQL

Vous enseignez à une classe ? Proposez ce module à vos étudiants avec un guide de l'enseignant, des devoirs corrigés et un laboratoire pour chaque étudiant.