Ho sfogliato dump SQL di alcuni famosi CMS, tra cui Drupal 7, Wordpress (una versione abbastanza vecchia) e alcune applicazioni personalizzate basate su Python.
Tutti questi dump contenevano dati con flag di stringa invece di quelli interi. Ad esempio, lo stato di un post è stato rappresentato come published
, closed
o inherit
anziché 1
, 2
o 3
.
Ho un'esperienza piuttosto limitata nella progettazione di database e non ho mai passato a SQL semplici, ma mi è sempre stato insegnato che dovrei usare flag numerici / interi per dati come questo. È ovvio che tinyint
consuma molto meno spazio in un database rispetto, ad esempio, a varchar(9)
.
Quindi cosa mi manca? Non è uno spreco di archiviazione dei dati e una ridondanza dei dati? La navigazione, la ricerca e l'indicizzazione non sarebbero più veloci se queste colonne usassero numeri interi anziché stringhe?