Modélisation
Lors de la modélisation
Clé primaire int ou bigint
Lors de la création d'un table, il est préférable d'utiliser un entier en tant que clé primaire.
INFO
Vous pouvez utiliser d'autres types comme UUID par exemple, et en particulier UUIDv7 qui est apparu dans PostgreSQL 18.
PostgreSQL possède 3 types d'entier :
smallint
: 2 octets soit de -32 768 to +32 767integer
: 4 octets soit -2 147 483 648 to +2 147 483 647bigint
: 8 octets soit -9 223 372 036 854 775 808 to +9 223 372 036 854 775 807
Remarques
les types smallint
, integer
, bigint
sous PostgreSQL n'existe qu'en version signé.
il n'est donc pas possible d'utiliser une version non signé pour doubler la valeur à stocker.
Longueur champ Email
Lorsque l'on veut stocker le champ email (courriel pour les français), on se pose toujours la question de la longueur maximale du champ.
La réponse se trouve dans la RFC 3696 Section 3
That limit is a maximum of 64 characters (octets) in the "local part" (before the "@") and a maximum of 255 characters (octets) in the domain part (after the "@") for a total length of 320 characters.
Donc un champ email est composé comme suit:
- partie local (avant le @) est composée de 64 caractères au maximum
- le caractère @ qui compte pour 1 caractère
- partie domaine (après le @) est composée de 255 caractères au maximum
Ce qui nous donne une longueur de 64 + 1 + 255 soit 320 caractères.
Ci-dessous un exemple d'utilisation lors de la création d'une table.
CREATE TABLE utilisateurs (
id SERIAL PRIMARY KEY,
nom VARCHAR,
email VARCHAR(320) UNIQUE,
passwd VARCHAR
);
Remarques
Lors de la création de la table sur l'exemple ci-dessus, j'ai par exemple utilisé pour les champs nom
et passwd
un VARCHAR
sans indiqué de longueur, si vous souhaitez en savoir plus sur le pourquoi du comment, je vous invite a lire la partie Don't do this du wiki de PostgreSQL.