SQL Server 2008 a-t-il un type de données tel que enum
de MySQL?
Ce n'est pas. Il y a un vague équivalent:
mycol VARCHAR(10) NOT NULL CHECK (mycol IN('Useful', 'Useless', 'Unknown'))
La meilleure solution que j'ai trouvée consiste à créer une table de recherche avec les valeurs possibles en tant que clé primaire et à créer une clé étrangère dans la table de recherche.
IMHO Tables de consultation est la voie à suivre, avec une intégrité référentielle. Mais uniquement si vous évitez les "nombres magiques diaboliques" en suivant un exemple tel que celui-ci: Générer une énumération à partir d'une table de consultation de base de données à l'aide de T4
S'amuser!
Trouvé cette approche intéressante lorsque je voulais implémenter des enums dans SQL Server.
L'approche mentionnée ci-dessous dans le lien est assez convaincante, car tous les besoins de votre base de données pourraient être satisfaits avec 2 tables centrales.
CREATE FUNCTION ActionState_Preassigned()
RETURNS tinyint
AS
BEGIN
RETURN 0
END
GO
CREATE FUNCTION ActionState_Unassigned()
RETURNS tinyint
AS
BEGIN
RETURN 1
END
-- etc...
Là où la performance compte, utilisez toujours les valeurs absolues.