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
| Mot | Ce que ça veut dire | Exemple |
|---|---|---|
| Minimisation | ne collecter que les données utiles au but | |
| Finalité | le but précis pour lequel on collecte une donnée | |
| Collecte | le moment où une organisation obtient une donnée | |
| Donnée facultative | une donnée que la personne peut ne pas donner | phone |
| Vue | une requête gardée sous un nom, qui montre moins de colonnes | CREATE 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
| But | Données utiles | Données en trop |
|---|---|---|
| Livrer une commande | Nom, adresse de livraison | Date de naissance, religion |
| Envoyer la facture | Nom, courriel | Téléphone, date de naissance |
| Suivre les ventes par pays | Pays, date de la commande | Nom, 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
printf '[client]\nssl-verify-server-cert=0\n' > ~/.my.cnfAffiché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
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
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
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
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
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
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
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
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
-- 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 ?