2010-08-03 5 views
2

J'ai une classe Java représentant un événement qui contient des données, ainsi qu'une liste de 'paramètres' de types différents, faute d'un meilleur mot. Je veux persister dans une base de données, et je suis confus quant à la meilleure approche.Stockage de différents types de paramètres dans une seule table

édité pour essayer de clarifier mes divagations:

En fonction du type de « événement », il pourrait avoir des paramètres tels que le nom d'hôte, le port, la date, le nom du service, le temps de message, digest d'un certificat (tableau d'octets), etc

Je suppose que le parallèle le plus proche serait comme stocker une chaîne et des paramètres de format printf (même si ce n'est pas ce que je fais). Stocker la chaîne de format est facile, mais stocker les paramètres est délicat, car je devrais les retrouver à leurs types d'origine lors de la récupération. J'essaie de trouver un moyen de stocker les paramètres qui seront de différents types. Dois-je les encoder sous forme de chaîne de caractères et les placer dans un varchar(), puis décoder quand je récupère les paramètres de l'événement?

+0

Donc, dites-vous que vous aurez toujours le même nombre de paramètres mais que leurs types seront différents? –

Répondre

1

Stocker tout comme varchar/string est une mauvaise idée à mon humble avis. Si vous devez stocker divers types de données dans une base de données, stockez-les avec les types corrects. De cette façon, votre couche de présentation peut gérer le formatage.

+0

Alors, que suggérez-vous? Séparez les tables pour différents types de paramètres? Le problème est que j'aurai différents types de données associés au même événement. Je ne sais pas ce qui est disponible pour préserver les informations de type autres que l'encodage dans un format "commun", puis le décodage lorsque je le récupère. –

+0

@sdeer - Pouvez-vous modifier votre question initiale et ajouter des informations pour nous aider à comprendre la situation? Pour moi jusqu'à présent, vous cherchez une sorte de EAV (Entity Attribute Value), mais pour les types de données, et cela ne semble pas juste. – JonH

Questions connexes