Quelle est la meilleure conception pour une table, un Type
champ qui est de int
ou char(1)
? En d'autres termes, étant donné ce schéma:
create table Car
(
Name varchar(100) not null,
Description varchar(100) not null,
VehType .... not null
)
Est-il plus efficace (en termes de performances) VehType
d'être un int
ou un char(1)
? Supposons que vous ayez cinq types de voitures, devez-vous utiliser les valeurs incrémentales 0 -> 4 ou des caractères pour les types (par exemple, «v», «s», «c», «t», «m»)?
Si c'est plus que cela, j'utiliserais une table Type distincte et j'aurais une relation de clé étrangère, mais je ne vois pas la nécessité de cela.
Je remarque que la sys.objects
vue catalogue utilise un caractère pour le type
champ. Y at-il une raison à cela? Suis-je juste en train de saisir ici, et est-ce avec quoi je suis plus à l'aise?
la source
Tout comme un complément à la bonne réponse de gbn .
Vous pourriez peut-être créer quelque chose comme ça:
Vous pouvez donc faire ce que vous voulez avec votre énumération tout en préservant l'intégrité relationnelle (en utilisant une clé étrangère). Avec la
code
colonne, vous pouvez utiliser vos codes de caractères à volonté, afin qu'ils soient documentés dans la base de données (et vous pouvez extraire les informations de code directement à partir de la base de données, sans transformation compliquée sur le code d'application pour une intégration de systèmes).la source
null
code?