Seite 1 von 1

Strukturfrage

Verfasst: Dienstag 12. Oktober 2010, 15:28
von haggi
Hi,

da ich mit sql noch nicht so fit bin wäre es toll wenn Ihr mir einen Tip geben könntet.
Ich habe Klassen und Unterklassen und möchte die in einer Datenbank speichern.
Die Klassen sehen etwa so aus:

Code: Alles auswählen

class BaseClass(object):
    def __init__(self):
        self.baseAttribut = 1

class SubClass(BaseClass):
    def __init__(self):
        BaseClass.__init__(self)
        self.subAttribut = "somestring"
Um diese Struktur abzubilden würde ich in einer Datenbank eine Tabelle anlegen, welche die notwendigen Attribute der Basisklasse enthält.
Zusätzlich würde ich eine weitere Tabelle anlegen, welche nur die Attribute der Subklasse enthält.
Und dann würde ich die beiden über Indizes miteinander verknüpfen, so dass ich die Subklasse abfragen kann und über den Index die Infos aus der Tabelle der Baseklasse bekommen kann.

Ich hoffe es ist soweit verständlich was ich machen will. Ist das von der Praxis her sinnvoll das so anzugehen, oder habe ich da ein Struktur oder Designproblem?

Und wenn das sinnvoll ist, dann hab ich ein Problem. Prinzipiell würde ich beim Speichern so vorgehen:
-Eintrag der Baseklasse in die Basetabelle
-Holen des index des gerade geschriebenen Eintrags
-mit diesem Index die Subklasse in die Tabelle schreiben

Wie bekomme ich dann den gerade geschriebenen Eintrag wenn ich kein eindeutiges Element habe nach dem ich abfragen kann? Oder kann ich irgendwie das Schreiben von beiden Tabellen sinnvoll verknüpfen?

Ihr merkt es ist noch etwas wirr bei mir. Bin für Tips jeder Art dankbar.

Re: Strukturfrage

Verfasst: Dienstag 12. Oktober 2010, 15:53
von Hyperion
haggi hat geschrieben:Ich hoffe es ist soweit verständlich was ich machen will. Ist das von der Praxis her sinnvoll das so anzugehen, oder habe ich da ein Struktur oder Designproblem?
Schau Dir doch mal an, wie die Jungs von elixir das regeln:
http://elixir.ematia.de/trac/wiki/Tutor ... nheritance

Ansonsten böte sich ggf. eine Dokumenten-basierte DB wie CouchDB oder MongoDB an. Dort ist es egal, ob sich Dokumente in ihren Attributen unterscheiden. Imho für genau diesen Fall (und 1:n-Beziehungen) halte ich diesen Ansatz für geeignet.

Re: Strukturfrage

Verfasst: Dienstag 12. Oktober 2010, 20:07
von noisefloor
Hallo,

was IMHO auch geht ist ein KV-Store wie Redis. Das könntest du die Schlüssel z.B. wie folgt anlegen:
  • BaseClass1 = ...
  • BaseClass1:SubClass1 = ...
  • BaseClass1:SubClass1.Attribute = ...
usw.

Kommt halt drauf an, was an Werten gespeichert werden muss / soll.

CouchDB ist aber auch gut. ;-)

Gruß, noisefloor

Re: Strukturfrage

Verfasst: Mittwoch 13. Oktober 2010, 08:31
von haggi
Danke, werd mir die Sachen mal ansehen.