2012-04-03 6 views
0

Ich habe eine folgende Situation in meinem Projekt. Es gibt einige Tag-Werte, die einer einzelnen Kategorie zugeordnet sind.Effiziente Speicherung und Abfrage von Kategorie zu Tags Daten

Beispiel:

Fruits : Apple, Banana, Grape 
Vegetables: Tomato, Cabbage, Brinjal 

Nun, für diese verwende ich eine einfache Tabelle in der Datenbank mit zwei Spalten, Category, Tag und speichere ich "Fruits" in Category Spalt und "Apfel, Banane, Traube" in Tag Spalte (jedes Tag durch Koma getrennt). Und wenn ich eine einzelne Kategorie mit einer einfachen SQL-Anweisung wie select tag from TagsCollection where category='Fruits'; abfrage, erhalte ich eine Zeichenfolge mit allen Tags, die zur Kategorie "Früchte" gehören. Beachten Sie, dass die Tabelle nur eine einzelne Instanz einer bestimmten Kategorie als Datensatz enthält. Und dann müssen alle Tags für die weitere Verarbeitung getrennt werden, also teile ich die Zeichenfolge in comas in meiner Programmiersprache (Java, hier).

Nun, was kann ein idealer Weg sein, so etwas zu implementieren? gehe ich mit RDBMS-Weg der Lagerung (MySQL, um genau zu sein) oder gibt es eine andere schnellere Möglichkeit zu speichern & abrufen solche Art von Daten.

Antwort

0

Ihr aktuelles Design verletzt die erste normale Form, da Sie mehrere Werte in einer einzelnen Zeile einer einzelnen Spalte haben. Auch die Abfrage von Tag-Werten ist wahrscheinlich schlecht.

würde Ein normalisierte Design-Kategorie und Tag Säulen, behalten aber eine separate Zeile für jede Kombination von Kategorie und Tag haben würde - etwa so:

Category Tag 
Fruits Apple 
Fruits Banana 
Fruits Grape 
... 
+0

I gehofft mehrwertiges Attribut ignoriert alle Normalformen für absichtlich verwendet, um g und jede bessere Lösung. Wenn ich es auf diese Weise gespeichert habe, kann ich für jede Kategorie auf der Programmierfront etwas HashTable verwenden, um effizient zu suchen. Gibt es jedoch eine nicht datenbankbasierte Möglichkeit, Informationen wie diese zu speichern? eine Art XML? (keine Kenntnis von XML-basierten Speichern) – Kushal