2009-03-12 4 views
1

Peut-être que c'est une question stupide, mais quand doit-on mapper une colonne dans un type enum. Par exemple, nous savons tous que la colonne "Gender" qui est représentée par "M" ou "F" dans la base de données peut être mappée à une énumération appelée Gender. Comme il y a généralement 2 genre :), nous pouvons être sûrs que cette énumération n'aura pas besoin d'être mise à jour. Cependant, qu'en est-il enum mis en place pour la logique métier? Par exemple, disons pour la région, si vous avez un Enum qui représente toute la région dans votre base de données, chaque fois que vous insérez une autre région dans votre base de données, cette énumération doit changer, donc une autre promotion est nécessaire. Est-ce une bonne pratique? Y a-t-il de bonnes pratiques autour de cela?Quand faut-il mapper une colonne à Enum? Tapez dans le code

Merci!

+0

Il y a trois genres dans le domaine (sérieusement). M, F & U - U peut être inconnu, non déclaré, (moins seriosuly) Incertain, indécis –

Répondre

1

Il s'agit en fait d'une question compliquée: lorsque vous utilisez une énumération, il est classique d'avoir également une table de consultation dans la BD, comme le suggère Reed. Mais cela pose le problème de la synchronisation des définitions. Ce que nous faisons est de générer les tables à partir des définitions enum dans le cadre de nos scripts de construction/déploiement pour s'assurer que les deux reflètent le même ensemble de valeurs légales.

Nous avons alors des fonctions de commodité qui prennent un DataSet retourné à partir d'une requête DB, et mappons des colonnes d'id à des colonnes (nouvellement créées) avec des valeurs enum. Mais nous le faisons tout de suite après la récupération des résultats de la requête. Donc, mon conseil serait de les cartographier dès que possible, de préférence dans votre DAL.

+0

merci de ne pas donner une réponse cérébrale sans lire la question! – Herman

0

Il est préférable de créer une table distincte pour la région, avec son ID unique. Ensuite, utilisez l'ID de la région dans votre tableau principal.

Cela permet plus de flexibilité dans le futur, car l'ajout d'une région consiste simplement à ajouter un nouvel enregistrement.

Voir le texte sur la normalisation de la base de données pour plus de détails et des explications complètes.

Questions connexes