¿Cuál es el mejor diseño para una tabla, un Type
campo que es de int
o char(1)
? En otras palabras, dado este esquema:
create table Car
(
Name varchar(100) not null,
Description varchar(100) not null,
VehType .... not null
)
¿Es más eficiente (en cuanto al rendimiento) VehType
ser un int
o un char(1)
? Digamos que tiene cinco tipos de automóviles, ¿debería usar los valores incrementales 0 -> 4, o caracteres para los tipos (por ejemplo, 'v', 's', 'c', 't', 'm')?
Si es más que eso, usaría una tabla Tipo separada y tendría una relación de clave externa, pero no veo la necesidad de eso.
Noto que la sys.objects
vista de catálogo usa un carácter para el type
campo. ¿Hay alguna razón para eso? ¿Estoy agarrando el aire aquí y es con lo que me siento más cómodo?
fuente
Solo como un complemento a la gran respuesta de gbn .
Tal vez podrías crear algo así:
Entonces puede hacer lo que quiera con su enumeración mientras mantiene la integridad relacional (usando una clave foránea). Con la
code
columna puede usar sus códigos char a voluntad, por lo que quedará documentado en la base de datos (y puede extraer la información del código directamente de DB, sin una transformación complicada en el código de la aplicación para una integración de sistemas).fuente
null
código?