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?