Je me demande quel est le protocole de votre magasin de développement ou de votre projet pour traiter les valeurs de recherche, telles que les pays du monde ou les États des États-Unis d'Amérique.Conception de valeurs de recherche
Je l'ai vu de deux manières différentes: à un endroit où je travaillais, nos recherches étaient toutes stockées dans une table de base de données avec le préfixe "L_" et avaient les colonnes suivantes: id, code, desc, ordersequence. Ainsi, par exemple, pour les pays du monde, nous aurions une table comme:
CREATE TABLE L_Countries(
CountryID INT IDENTITY(1,1) PRIMARY KEY,
CountryCode VARCHAR(10) NOT NULL,
CountryDesc VARCHAR(50) NOT NULL,
OrderSequence INT NULL
)
Plus récemment, je l'ai vu un exemple où les recherches sont cuits dans énumérations, par exemple:
enum Countries
{
Croatia = 1,
Slovenia = 2,
Serbia = 3,
// and so on
}
Dans le Si ces événements proviennent d'une table de base de données, il existe un utilitaire qui générera le code C# pour l'énumération. Sinon, quelqu'un prend juste le temps de coder en dur toutes les entrées en supposant que les valeurs sont peu susceptibles de changer. Pour les valeurs numériques de l'énumération, elles sont codées en dur en fonction de la colonne ID dans la table de correspondance correspondante de la base de données, ou simplement codées en dur en fonction de l'entrée commençant par 1.
L'argument de la première approche qui, Certes, je préfère, c'est qu'il est assez flexible donnant la possibilité d'utiliser des codes ou des descriptions complètes, de manipuler l'ordre, et de faire des changements sans avoir à recompiler. Bien que la possibilité de générer du code à partir d'eux est possible, un gros avantage est qu'ils restent de vraies "recherches" lorsqu'ils sont relégués à la base de données. Enfin, la façon dont ils peuvent être utilisés est flexible: en tant que valeurs dans une collection de Dictionary ou en générant des éléments ListLtems ASP.NET ou des éléments de type combobox html avec un code côté serveur. Arguments J'ai entendu dire pour ce dernier que les valeurs ne changeront pas, et qu'il y a un surcoût à devoir récupérer les valeurs de recherche de la base de données même si elles sont mises en cache au niveau de l'application. En les codant en dur ou en générant un Enum, ils sont disponibles sans pénalité de récupération de base de données.
Mes questions sont les suivantes:
Quelle option est plus logique de vous ou, si votre réponse est « ça dépend », pouvez-vous donner un scénario dans lequel les énumérations hardcoded sont mieux qu'une base de données recherche à travers une application entière?
Y a-t-il d'autres façons de trouver une solution élégante aux problèmes de recherche? J'ai travaillé sur une application où il y avait une seule table pour toutes les recherches (elle incluait une colonne "lookupname") à titre d'exemple. Comment votre approche alternative se compare-t-elle aux deux approches ci-dessus?