Choisir les clés et les types
Choisissez entre les clés primaires BIGSERIAL et UUID, décidez entre TEXT et VARCHAR(n) et sélectionnez le type adapté à chaque colonne.
Choisir les clés et les types est une leçon SQL Academy gratuite sur CoddyKit. Ceci est la leçon 2 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage SQL Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours SQL Academy comprend 4 leçons au total.
Choisir une clé primaire
Trois véritables possibilités :
- BIGSERIAL — entier 64 bits à croissance monotone
- UUID — valeur unique à l’échelle mondiale sur 128 bits
- Clé naturelle — identifiant du monde réel (adresse e-mail, ISBN)
Quand BIGSERIAL est le meilleur choix
Le choix par défaut pour la plupart des applications :
- Peu volumineux (8 octets), index rapide, adapté au cache
- Monotone → les données récentes se regroupent à la fin de l’index
- Lisible dans les adresses URL (par exemple
/posts/42)
Quand UUID est le meilleur choix
Choisissez UUID lorsque :
- Vous avez besoin d’identifiants uniques à l’échelle mondiale (plusieurs centres de données, applications fonctionnant hors ligne)
- Vous ne voulez pas que les identifiants révèlent le volume de votre activité dans les adresses URL
- Vous voulez générer l’identifiant côté client avant l’INSERT
Coût : 16 octets (contre 8 pour BIGINT), et les UUID v4 répartissent aléatoirement les INSERT dans l’index.
Pourquoi les clés naturelles sont risquées
Les adresses e-mail changent. Les références produit sont renommées. Les codes de pays sont divisés. Utilisez une clé de substitution comme PK et une contrainte UNIQUE sur la clé naturelle.
Types de colonnes : chaînes de caractères
Pour la plupart des colonnes textuelles :
VARCHAR(n)— lorsque vous avez une limite supérieure stricte (adresses e-mail, codes)TEXT— pour du contenu libre et longCITEXT— lorsque la comparaison doit toujours ignorer la casse (adresses e-mail !)
Types de colonnes : nombres
Pour les colonnes numériques :
BIGINTpour les identifiants et les compteursNUMERIC(p, s)pour les montantsREAL/DOUBLE PRECISIONuniquement pour les applications scientifiques
Types de colonnes : temps
Pour les colonnes temporelles :
TIMESTAMPTZpour les événements (par défaut)DATEpour les jours du calendrier (dates de naissance, jours fériés)TIMEpour l’heure de la journée sans date (heures d’ouverture d’un magasin)
Booléen ou statut
Si une colonne peut avoir plus de deux états à l’avenir, préférez un texte de statut accompagné de CHECK à un booléen :
-- Will probably grow:
status TEXT NOT NULL CHECK (status IN ('draft','published','archived'))
-- vs the trap of "is_published BOOLEAN" when you later need a third state.Contraintes à prévoir
Chaque colonne doit avoir :
- Le type le plus restreint qui convient
NOT NULL, sauf si NULL a une signification- Un
DEFAULTsi la colonne contient presque toujours la même valeur - Un
CHECKs’il existe une règle de domaine - Un index si elle est utilisée dans WHERE/JOIN/ORDER
Conséquences sur le stockage
Types étroits = lignes plus petites = davantage de lignes par page = meilleur taux de succès du cache. Remplacer TEXT par VARCHAR(20) n’économise pas d’espace (le stockage est identique). Remplacer BIGINT par INT réduit de moitié la largeur de la colonne.
Les types des clés étrangères doivent correspondre
Les types des colonnes FK doivent correspondre exactement au type de la PK référencée :
-- Wrong (silently won't use the index efficiently):
user_id INT REFERENCES users(id) -- where users.id is BIGINT
-- Right:
user_id BIGINT REFERENCES users(id)Récapitulatif
Le choix des types relève de la conception.
- BIGSERIAL ou UUID pour une PK
- NUMERIC pour les montants
- TIMESTAMPTZ pour les événements
- TEXT avec CHECK pour un statut susceptible d’évoluer
- NOT NULL par défaut
Vérification rapide
Vous stockez les horodatages d’événements d’utilisateurs situés dans de nombreux fuseaux horaires. Quel type choisissez-vous ?
Questions Fréquemment Posées
La leçon « Choisir les clés et les types » est-elle gratuite ?
Oui — le texte complet de « Choisir les clés et les types » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours SQL Academy, passe à CoddyKit PRO. Le cours SQL Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Choisir les clés et les types » ?
Choisissez entre les clés primaires BIGSERIAL et UUID, décidez entre TEXT et VARCHAR(n) et sélectionnez le type adapté à chaque colonne. Tu pratiques SQL Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer SQL Academy ?
Aucune expérience préalable n'est requise. SQL Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 2 sur 4.
Combien de temps prend la leçon « Choisir les clés et les types » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon SQL Academy ?
Oui. Chaque leçon SQL Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Modéliser un blog : utilisateurs, publications, commentaires
- Choisir les clés et les types
- Index pour les requêtes courantes
- Initialiser la base de données avec des données de test