2009-11-04 5 views
1

J'ai une table sur SqlServer où un type de colonne doit être indéfini, je veux dire, il devrait pouvoir contenir n'importe quel type de type (string, int, boolean et datetime).Type de colonne générique SQLServer 2008

Cela parce que mes utilisateurs devraient être en mesure de définir quel type la colonne est pour chaque enregistrement. Dans le passé, quand j'ai rencontré ce problème, j'ai décidé de le créer comme nvachar (MAX). Quand j'ai accédé à la valeur j'ai automatiquement casté la chaîne au type correct. Je sais que cette méthode gaspille beaucoup de mémoire et a des implications sur les performances.

Peut-être est-il possible de créer une table différente pour chaque type mais je n'ai jamais eu le temps de le tester.

Avez-vous des questions?

Merci!

Répondre

8

Les conceptions de base de données, dans lesquelles les variantes de type de données sont stockées dans des colonnes, reviendront presque toujours et constitueront un problème majeur par la suite. La qualité des données souffre presque toujours. J'ai vu cela conduire à des données non-atomiques (valeurs séparées par des virgules), à des valeurs de date mal formées dans les champs de chaînes, à l'utilisation multiple d'une seule colonne et à une foule d'autres problèmes.

Je suggérerais que vous examiniez ce qu'ils veulent stocker et faire la conception de base de données appropriée avec des tables correctement normalisées. Après avoir écouté (et merci de l'avoir écouté), vous pouvez utiliser SQL_Variant pour vos besoins. En savoir plus ici:

http://msdn.microsoft.com/en-us/library/ms173829.aspx

+3

+1 absolument - un seul commentaire: ** NE PAS FAIRE ** :-) –

0

Vous pouvez regarder également dans ce article aussi à propos SQL_VARIANT

Questions connexes