Cette fiche résume le niveau « Une entité, une table ». Elle ne remplace pas les articles : elle sert à réviser ce que tu as pratiqué.
Le vocabulaire
Analyser des données
| Mot |
Définition |
En anglais |
| Fichier CSV |
Fichier texte qui contient un tableau ; les colonnes sont séparées par un caractère convenu, souvent ;. |
Comma-Separated Values |
| Redondance |
Une même information écrite à plusieurs endroits. |
redundancy |
| Incohérence |
Des données qui devraient être identiques et qui ne le sont pas. |
inconsistency |
| Entité |
Catégorie de choses dont on veut garder une liste. Singulier, MAJUSCULES : ELEVE. |
entity |
| Attribut |
Information gardée à propos de chaque élément d'une entité. |
attribute |
| Occurrence |
Élément concret d'une entité : Lucas Adam est une occurrence de ELEVE. |
occurrence, instance |
| Schéma entité-association |
Dessin qui représente les données d'un domaine : entités dans des rectangles avec leurs attributs, associations (liens) dans des losanges nommés par un verbe. C'est lui qu'on dessine pour analyser. |
entity-relationship diagram (ERD) |
| MCD |
Modèle conceptuel de données : description des entités, de leurs attributs et de leurs associations, représentée par un schéma entité-association avant de toucher à un logiciel. |
conceptual data model |
| Merise |
Méthode française de conception de bases de données, qui fixe les règles de dessin du schéma entité-association. |
— |
Ranger des données
| Mot |
Définition |
En anglais |
| Table |
Tableau qui range toutes les occurrences d'une entité. |
table |
| SGBD / SGBDR |
Système de gestion de base de données (relationnelle) : le logiciel qui stocke les données en tables et répond aux requêtes. SQLite en est un. |
DBMS |
| Type de données |
Nature des valeurs d'une colonne : TEXT, INTEGER, REAL. |
data type |
| MLD |
Modèle logique de données : chaque table écrite sur une ligne, avec ses colonnes et sa clé primaire soulignée. |
logical data model |
| SQL |
Langage qui sert à parler à un SGBDR. |
Structured Query Language |
| NULL |
Absence de valeur dans une case. Ni zéro, ni texte vide. |
null |
Identifier et protéger
| Mot |
Définition |
En anglais |
| Identifiant |
Information qui désigne une ligne et une seule. |
identifier |
| Identifiant naturel |
Identifiant qui existe dans la vie réelle : ISBN, plaque d'immatriculation. |
natural key |
| Identifiant artificiel |
Numéro inventé uniquement pour la base : la colonne id. |
surrogate key |
| Clé primaire |
Colonne choisie comme identifiant officiel d'une table : unique, jamais vide, une seule par table. |
primary key (PK) |
| Contrainte |
Règle attachée à une table, vérifiée par la base à chaque ajout ou modification. |
constraint |
| NOT NULL |
Contrainte qui interdit l'absence de valeur dans une colonne. |
not null |
| UNIQUE |
Contrainte qui interdit les doublons dans une colonne, mais accepte plusieurs NULL. |
unique |
Lire des données
| Mot |
Définition |
En anglais |
| Requête |
Question ou ordre écrit en SQL et envoyé à la base. |
query |
| SELECT … FROM |
Instruction qui lit des colonnes d'une table, sans la modifier. |
select = sélectionner, from = depuis |
| Alias |
Nom provisoire donné à une colonne dans le résultat, avec AS. |
alias |
| Connexion |
Lien ouvert entre un programme et une base. |
connection |
| Curseur |
Objet qui donne accès aux lignes d'un résultat, une par une. |
cursor |
| Requête paramétrée |
Requête qui contient un ? ; la valeur est transmise à part. |
parameterized query |
Les règles à connaître
- Entité → table, attribut → colonne, occurrence → ligne.
- La redondance rend les incohérences possibles : une information ne s'écrit qu'à un seul endroit.
- Si une information possède elle-même des informations, c'est probablement une entité.
- Dans un texte, les sujets et compléments donnent les entités, les verbes donnent les liens.
- Un bon identifiant est unique, obligatoire, stable et non signifiant.
- Règle du parcours : chaque table a une clé primaire artificielle
id ; un identifiant naturel reçoit la contrainte UNIQUE.
- Une date se range en
TEXT, au format AAAA-MM-JJ.
- Une donnée faite de chiffres n'est un nombre que si on fait des calculs avec elle.
Conventions de nommage
| Élément |
Convention |
Exemple |
| Entité (MCD) |
singulier, MAJUSCULES |
ELEVE |
| Table |
singulier, minuscules, sans accent |
eleve |
| Colonne |
minuscules, sans accent, mots séparés par _ |
date_naissance |
| Clé primaire |
toujours id |
id |
| Mots-clés SQL |
MAJUSCULES |
SELECT |
La syntaxe
MLD
eleve (id, nom, prenom, date_naissance, commune, email, absences)
‾‾
la clé primaire est soulignée
Les types de SQLite
| Type |
Contient |
Exemple |
TEXT |
du texte, des codes, des dates |
'Adam', '2010-03-12' |
INTEGER |
des nombres entiers |
12 |
REAL |
des nombres à virgule |
13.5 |
La structure d'une table, en SQL
CREATE TABLE eleve (
id INTEGER PRIMARY KEY,
nom TEXT NOT NULL,
prenom TEXT NOT NULL,
email TEXT UNIQUE,
absences INTEGER
);
Lire une table
SELECT * FROM eleve;
SELECT prenom, nom FROM eleve;
SELECT nom, date_naissance AS naissance
FROM eleve;
Lire une table depuis Python
import sqlite3
conn = sqlite3.connect("mon-ecole.db")
conn.row_factory = sqlite3.Row
curseur = conn.execute("SELECT prenom, nom, email FROM eleve")
for ligne in curseur:
if ligne["email"] is None:
print(ligne["prenom"], "n'a pas d'adresse")
une_ligne = conn.execute("SELECT nom FROM eleve").fetchone()
toutes = conn.execute("SELECT nom FROM eleve").fetchall()
commune = input("Commune : ")
conn.execute("SELECT nom FROM eleve WHERE commune = ?", (commune,))
conn.close()
Les pièges à connaître
| Piège |
Ce qu'il faut savoir |
| Oublier Écrire les modifications |
Rien n'est enregistré dans le fichier avant Ctrl+S. |
Une date 15/05/2010 |
SQLite l'accepte, mais elle se trie mal : toujours AAAA-MM-JJ. |
| Cocher AI |
Inutile : une clé primaire INTEGER se numérote toute seule. |
Renuméroter les id |
Jamais : un identifiant désigne, il ne compte pas. Les trous sont normaux. |
| Case vidée au clavier |
Elle contient un texte vide '', pas NULL : NOT NULL l'accepte. |
UNIQUE et les cases vides |
Plusieurs NULL sont acceptés ; il faut NOT NULL en plus pour les interdire. |
| La virgule oubliée |
SELECT nom prenom ne fait pas d'erreur : prenom devient l'alias de nom. |
| Le mauvais nom de fichier |
sqlite3.connect() crée une base vide au lieu de signaler l'erreur. |
| Coller une valeur dans une requête |
Risque d'injection SQL : toujours un ?. |
✅ Teste-toi
Réponds sur une feuille, sans regarder la fiche, puis vérifie.
- Donne une définition de la redondance et un exemple.
- Quelle est la différence entre une entité, un attribut et une occurrence ? Donne un exemple de chaque pour une bibliothèque.
- « L'adresse d'un client » : entité ou attribut ? Justifie.
- Complète : une entité devient une …, un attribut devient une …, une occurrence devient une … .
- Que signifient les sigles SGBDR, MCD, MLD et SQL ? Quel dessin utilise-t-on pour représenter un MCD ?
- Quel type choisis-tu pour un code postal ? Pour un prix ? Pour une date de naissance ?
- Pourquoi écrit-on les dates
AAAA-MM-JJ ?
- Cite les quatre critères d'un bon identifiant.
- Pourquoi
nom + prenom ne fait-il jamais un bon identifiant ?
- Quelles sont les deux garanties d'une clé primaire ?
- Quelle différence y a-t-il entre une clé primaire et une colonne
UNIQUE ?
- Écris le MLD d'une table
livre avec un titre, un auteur et un ISBN.
- Écris la requête qui affiche le nom et la commune de tous les élèves, avec la colonne
commune intitulée ville.
- Que devient une valeur
NULL quand Python la lit ?
- Pourquoi utilise-t-on un
? dans une requête qui contient une valeur saisie par l'utilisateur ?
Réponses
- La même information écrite à plusieurs endroits, par exemple l'adresse e-mail d'un client recopiée sur chacun de ses tickets.
- L'entité est une catégorie (
LIVRE), l'attribut une information sur chaque élément (titre), l'occurrence un élément concret (« Le Petit Prince »).
- Un attribut : elle décrit le client et n'a pas d'informations propres à garder.
- Table, colonne, ligne.
- Système de gestion de base de données relationnelle ; modèle conceptuel de données ; modèle logique de données ; Structured Query Language, le langage des bases de données. Un MCD se représente par un schéma entité-association.
TEXT ; REAL ; TEXT au format AAAA-MM-JJ.
- Parce que, triées comme du texte, elles se rangent dans l'ordre chronologique.
- Unique, obligatoire, stable, non signifiant.
- Parce que deux personnes peuvent porter le même nom et le même prénom.
- Sa valeur est unique et jamais vide.
- Une table n'a qu'une clé primaire, jamais vide ; elle peut avoir plusieurs colonnes
UNIQUE, qui acceptent NULL.
- livre (id, titre, auteur, isbn)
SELECT nom, commune AS ville FROM eleve;
None.
- Pour que SQLite ne confonde jamais la valeur avec du SQL et empêcher une injection SQL.