Fiche à étudier — Une entité, une table

Tout ce qu'il faut savoir par cœur sur le premier niveau du parcours : vocabulaire, règles, syntaxe SQL et Python, pièges, et des questions pour te tester.

    4ttr 5ttr 6ttr
  • Synthèse

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;                          -- toutes les colonnes
SELECT prenom, nom FROM eleve;                -- certaines colonnes, dans cet ordre
SELECT nom, date_naissance AS naissance       -- un alias dans le résultat
FROM eleve;

Lire une table depuis Python

import sqlite3

conn = sqlite3.connect("mon-ecole.db")        # ouvrir
conn.row_factory = sqlite3.Row                # lire les colonnes par leur nom

curseur = conn.execute("SELECT prenom, nom, email FROM eleve")
for ligne in curseur:                         # une ligne à la fois
    if ligne["email"] is None:                # NULL devient None
        print(ligne["prenom"], "n'a pas d'adresse")

une_ligne = conn.execute("SELECT nom FROM eleve").fetchone()     # une ligne ou None
toutes = conn.execute("SELECT nom FROM eleve").fetchall()        # une liste

commune = input("Commune : ")                                    # valeur de l'utilisateur
conn.execute("SELECT nom FROM eleve WHERE commune = ?", (commune,))

conn.close()                                  # refermer

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.

  1. Donne une définition de la redondance et un exemple.
  2. Quelle est la différence entre une entité, un attribut et une occurrence ? Donne un exemple de chaque pour une bibliothèque.
  3. « L'adresse d'un client » : entité ou attribut ? Justifie.
  4. Complète : une entité devient une …, un attribut devient une …, une occurrence devient une … .
  5. Que signifient les sigles SGBDR, MCD, MLD et SQL ? Quel dessin utilise-t-on pour représenter un MCD ?
  6. Quel type choisis-tu pour un code postal ? Pour un prix ? Pour une date de naissance ?
  7. Pourquoi écrit-on les dates AAAA-MM-JJ ?
  8. Cite les quatre critères d'un bon identifiant.
  9. Pourquoi nom + prenom ne fait-il jamais un bon identifiant ?
  10. Quelles sont les deux garanties d'une clé primaire ?
  11. Quelle différence y a-t-il entre une clé primaire et une colonne UNIQUE ?
  12. Écris le MLD d'une table livre avec un titre, un auteur et un ISBN.
  13. Écris la requête qui affiche le nom et la commune de tous les élèves, avec la colonne commune intitulée ville.
  14. Que devient une valeur NULL quand Python la lit ?
  15. Pourquoi utilise-t-on un ? dans une requête qui contient une valeur saisie par l'utilisateur ?
Réponses
  1. La même information écrite à plusieurs endroits, par exemple l'adresse e-mail d'un client recopiée sur chacun de ses tickets.
  2. 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 »).
  3. Un attribut : elle décrit le client et n'a pas d'informations propres à garder.
  4. Table, colonne, ligne.
  5. 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.
  6. TEXT ; REAL ; TEXT au format AAAA-MM-JJ.
  7. Parce que, triées comme du texte, elles se rangent dans l'ordre chronologique.
  8. Unique, obligatoire, stable, non signifiant.
  9. Parce que deux personnes peuvent porter le même nom et le même prénom.
  10. Sa valeur est unique et jamais vide.
  11. Une table n'a qu'une clé primaire, jamais vide ; elle peut avoir plusieurs colonnes UNIQUE, qui acceptent NULL.
  12. livre (id, titre, auteur, isbn)
  13. SELECT nom, commune AS ville FROM eleve;
  14. None.
  15. Pour que SQLite ne confonde jamais la valeur avec du SQL et empêcher une injection SQL.

Pour aller plus loin