Qual é o melhor design para uma tabela, um Type
campo que é int
ou char(1)
? Em outras palavras, dado este esquema:
create table Car
(
Name varchar(100) not null,
Description varchar(100) not null,
VehType .... not null
)
É mais eficiente (em termos de desempenho) VehType
ser um int
ou um char(1)
? Digamos que você tenha cinco tipos de carros, use os valores incrementais de 0 a 4 ou caracteres para os tipos (digamos; 'v', 's', 'c', 't', 'm')?
Se for mais do que isso, eu usaria uma tabela Type separada e ter um relacionamento de chave estrangeira, mas não vejo a necessidade disso.
Percebo que a sys.objects
exibição do catálogo usa um caractere para o type
campo. Existe uma razão para isso? Estou apenas agarrando o nada aqui e é com o que me sinto mais confortável?
fonte
Apenas como um complemento à grande resposta de gbn .
Talvez você possa criar algo assim:
Assim, você pode fazer o que quiser com sua enumeração, mantendo a integridade relacional (usando uma chave estrangeira). Com a
code
coluna, você pode usar seus códigos de caracteres à vontade, para que sejam documentados no banco de dados (e você pode extrair as informações do código diretamente do DB, sem uma transformação complicada no código do aplicativo para uma integração de sistemas).fonte
null
código?