2009-05-19 9 views
0

Ich entwerfe eine neue Revision meiner Java-Anwendung (unter Verwendung einer eingebetteten H2-Datenbank) um ein Redesign der Art, wie ich mit meinen Daten umgehen werde. Hier ist, wie ich es geplant:Datenbanktabellen für Einträge einer anderen Tabelle?

  • Einträge Tabellen-
    • Beitrags-ID
    • Eintragsname
  • Eigenschaften Tabellen-
    • Immobilien ID
    • Eigenschaftsname
  • (Eigengut) Wert Tabellen-
    • Wert ID
    • Beitrags-ID
    • (Value Spalten ...)
  • (Einzeleintrag) Wert Tisch-
    • Name der Eigenschaft
    • (Einzelobjekt) Wert ID

Jeder Eintrag kann mehrere Eigenschaften (einschließlich mehreren Eigenschaften des gleichen Typs) aufweist. Jede Eigenschaft hat ihre eigene Art, ihre Werte zu speichern. Ich muss alle Eigenschaften überprüfen, die für einen bestimmten Eintrag definiert sind, und vielleicht alle Einträge für jede gegebene Eigenschaft.

Ist das ein guter Weg?

Edit: Ich bin nicht sicher, ob ich es gut erklärt ...

Antwort

3

Meiner Meinung nach ist das ein sehr schlechter Weg, Daten zu modellieren, aber dies ist eine sehr elfenbeinerne Art, die Situation zu betrachten, da ich dieses Modell nicht in der Praxis anwenden musste. Übrigens nennt man das den "Entity-Attribute-Value" -Ansatz. Und der Grund, warum ich es nicht mag, ist, dass es sehr unschematisch ist, da die meisten SQL-Funktionen in irgendeiner Weise repliziert werden müssen.

Es gibt definitiv eine Zeit und einen Ort dafür (wie wenn Sie vorhaben, viele Objekte zu modellieren, die unterschiedliche Modelle haben) oder die Schemata haben, die sich häufig ändern. Aber ich persönlich finde es schrecklich.

+0

Ja, ich bin vorsichtig, was es bedeutet, es zu benutzen. Danke, dass du mir einen Namen gegeben hast. –

1

Wenn ich Sie richtig verstehe, ich Kreuzung oder junction Tabellen verwenden würden, statt dessen, was Sie beschrieben.

Sie können also eine Abfrage erstellen, um alle Eigenschaften pro Entery oder alle Enteries pro Property zu erhalten.

Verwandte Themen