Je ne comprends pas quand il faut utiliser les différentes longueurs pour appeler l'unicode. J'ai utilisé types.Unicode(255) pour toutes mes colonnes dans ma base de données postgres, comme l'adresse, le nom, la description, etc. Est-ce imprudent de procéder ainsi ?
Réponses
Trop de publicités?Je ne suis pas sûr de ce que vous voulez dire par "unicode(255)". - il n'existe pas de tel type de données dans PostgreSQL :
# create table q (x unicode(255));
ERROR: type "unicode" does not exist
LINE 1: create table q (x unicode(255));
^
Vous vouliez peut-être dire varchar(255). Dans ce cas, laissez-moi vous demander : que se passera-t-il si vous avez besoin d'une description de 320 caractères ?
Personnellement, je préfère utiliser le type de données TEXT, car les bases de données ne se soucient généralement pas de savoir si la chaîne de caractères compte 100 ou 1000 caractères.
Il est utile d'ajouter à la réponse de depesz qu'il n'y a pas de pénalités de performance pour l'utilisation du type texte plutôt que des types de données varchar(n) ou char(n), donc à moins que vous ayez besoin de fixer une limite stricte pour des raisons professionnelles, utilisez simplement le texte. Même dans ce cas, utilisez le texte avec une contrainte de longueur :-)
Il existe un certain nombre de raisons d'utiliser des types de données appropriés dans vos bases de données. Performance (pdf) est la plus grande préoccupation, mais il y a aussi d'autres raisons. Par exemple :
- Les dates ne seront pas triées correctement à moins qu'elles ne soient un type de données de date (généralement un timestamp unix).
- Vous ne pouvez pas utiliser d'opérateurs mathématiques sur des nombres stockés sous forme de chaînes de caractères.
- "vrai" en tant que chaîne n'est pas égal au booléen vrai