Hallo zusammen,
ich stehe momentan vor einer konzeptionellen Frage.
Ein sehr verkleinertes Beispiel:
Die Kunden A,B und C haben eigentlich nichts miteinander zu tun, arbeiten aber mit der gleichen Bestellsoftware.
Die Bestellungen beinhalten grundsätzlich die gleichen Daten (z.B. Datum der Eingabe, Author, Bestellnr. ...).
Jetzt möchte Kunde A aber noch die Möglichkeit haben einen Lieferanten mit anzugeben (NUR Kunde A).
Kunde B hingegen möchte eine Referenznr. aus dem Tool des Lieferanten angeben, außerdem einen Ansprechpartner und eine Transportart.
Kunde C möchte das alles nicht, sondern nur zusätzlich eine Adresse wo die Bestellung hingeschickt werden soll.
Jetzt könnte man das ganze natürlich alles in die Tabelle "Bestellungen" packen und bei den Kunden die es nicht brauchen einfach leer lassen.
Handelt es sich jetzt aber um 20 Kunden mit jeweils unterschiedlichen Vorstellungen, so wird die Tabelle unnötig breit und löchrig. Die Hauptdaten der Bestellungen sollen aber beieinander bleiben, sodass der Administrator z.B. alle Bestellungen (unabhängig vom Kunden) eines bestimmten Datums nach User sortiert einsehen kann.
Ich habe zwei Ansätze um das ganze anders zu lösen:
Ansatz 1:
Es gibt eine Tabelle die die Daten enthält die jede Bestellung braucht und für jeden Kunden eine weitere Tabelle die die zusätzlichen kundenspezifischen Felder enthält.
Ansatz 2:
Es gibt die o.g. Tabelle mit den Kopfdaten einer jeden Bestellung hier auch und pro genutzen Datentyps eine weitere Tabelle mit einer Spalte zur Identifizierung und einer Spalte mit dem Inhalt.
Beide Ansätze haben Vor- und Nachteile, so muss beim Ansatz 1 z.B. für jeden Kunden die DB-Struktur geändert werden, bei Ansatz 2 nicht. Bei Ansatz 2 sind dafür die Querys wesentlich umständlicher.
Nun zur eigentlichen Frage:
Habt ihr für dieses Problem noch andere Ansätze? Gibt es hierfür einen Fachbegriff damit ich mich im Netz schlau machen kann? Wie könnte man einen Ansatz problemlos mit handelsüblichen ORMappern benutzen?
Gruß
Cy
ich stehe momentan vor einer konzeptionellen Frage.
Ein sehr verkleinertes Beispiel:
Die Kunden A,B und C haben eigentlich nichts miteinander zu tun, arbeiten aber mit der gleichen Bestellsoftware.
Die Bestellungen beinhalten grundsätzlich die gleichen Daten (z.B. Datum der Eingabe, Author, Bestellnr. ...).
Jetzt möchte Kunde A aber noch die Möglichkeit haben einen Lieferanten mit anzugeben (NUR Kunde A).
Kunde B hingegen möchte eine Referenznr. aus dem Tool des Lieferanten angeben, außerdem einen Ansprechpartner und eine Transportart.
Kunde C möchte das alles nicht, sondern nur zusätzlich eine Adresse wo die Bestellung hingeschickt werden soll.
Jetzt könnte man das ganze natürlich alles in die Tabelle "Bestellungen" packen und bei den Kunden die es nicht brauchen einfach leer lassen.
Handelt es sich jetzt aber um 20 Kunden mit jeweils unterschiedlichen Vorstellungen, so wird die Tabelle unnötig breit und löchrig. Die Hauptdaten der Bestellungen sollen aber beieinander bleiben, sodass der Administrator z.B. alle Bestellungen (unabhängig vom Kunden) eines bestimmten Datums nach User sortiert einsehen kann.
Ich habe zwei Ansätze um das ganze anders zu lösen:
Ansatz 1:
Es gibt eine Tabelle die die Daten enthält die jede Bestellung braucht und für jeden Kunden eine weitere Tabelle die die zusätzlichen kundenspezifischen Felder enthält.
Ansatz 2:
Es gibt die o.g. Tabelle mit den Kopfdaten einer jeden Bestellung hier auch und pro genutzen Datentyps eine weitere Tabelle mit einer Spalte zur Identifizierung und einer Spalte mit dem Inhalt.
Beide Ansätze haben Vor- und Nachteile, so muss beim Ansatz 1 z.B. für jeden Kunden die DB-Struktur geändert werden, bei Ansatz 2 nicht. Bei Ansatz 2 sind dafür die Querys wesentlich umständlicher.
Nun zur eigentlichen Frage:
Habt ihr für dieses Problem noch andere Ansätze? Gibt es hierfür einen Fachbegriff damit ich mich im Netz schlau machen kann? Wie könnte man einen Ansatz problemlos mit handelsüblichen ORMappern benutzen?
Gruß
Cy
Kommentar