MySQL: Aufbau der Datenbank/Tabellen

daswelli

Grünschnabel
Guten Morgen zusammen,

bis heute war ich stets stiller Mitleser hier im Forum. Konnte mir dadurch immer gut helfen und auch meine Wünsche umsetzen. Hierfür möchte ich euch meinen Dank ausrichten.

Nun stehe ich aber vor einem Problem, welches ich einfach nicht wirklich gelöst bekomme. Scheinbar stehe ich einfach auf dem Schlauch oder denke zu kompliziert, so dass ich die Suche nicht zielführend benutzen kann.

Dann wollen wir mal versuchen, das Problem zu beschreiben...

Anliegen
Zu Dokumentationszwecken möchte ich mich gerne selbst verwirklichen und dazu eine "kleine" Webapplikation auf Basis von HTML/PHP/MySQL erstellen, um mir das weitere Leben etwas zu erleichtern. Man kann es gerne als kleines ITAM-Projekt ansehen. Verschiedene Kunden haben diverse Systeme unterschiedlicher Hersteller, die auf Grund Ihrer Beschaffenheit auch andere Einstellungen/Daten haben, die dokumentiert werden müssen. Derzeit wird dieses mit Excel realisiert ... ich muss nicht sagen, dass das nicht mehr unbedingt zeitgemäß ist.

Problem
System A von Hersteller A hat natürlich andere Einstellungen/Daten, die dokumentiert werden müssen, als System B von Hersteller B. Kunde A hat nun an einem Standort das System A von Hersteller A und an einem anderen Standort System B von Hersteller B. Meines Erachtens benötige ich nun, gerade auch in Hinsicht auf
das Formular zum Eintragen eine Art "Master-Tabelle", in der die Kunden mit den verschiedenen Systemen zusammengeführt werden. Das große Problem ist einfach, dass ich die Tabellen für die verschiedenen Systeme der Hersteller getrennt anlegen müsste, wegen der Datenfelder. Hat Kunde A also ein System von Hersteller B muss hier auch die Tabelle für Hersteller B genutzt werden ... ich merke gerade, dass es etwas kompliziert wird. Vielleicht hilft folgendes Beispiel:
Code:
TabelleKunde
############
1, Kunde A, hat Telefonanlage von Hersteller A
2, Kunde B, hat Telefonanlage von Hersteller B
3, Kunde C, hat Telefonanlage von Hersteller C

TabelleHersteller
#################
1, Hersteller A, Telefonanlage A
2, Hersteller B, Telefonanlage B
3, Hersteller C, Telefonanlage C

TabelleTelefonanlage A            TabelleTelefonanlage B            TabelleTelefonanlage C
######################            ######################            ######################
1, Größe, Ausbau, Leistung        1, Farbe, Anschluss                1, Höhe, Portanzahl
Ich habe versucht, das Beispiel so einfach wie möglich zu halten. Also bitte nicht darauf festnageln ;-)
Fakt ist, dass es bei den verschiedenen Anlage zu viele unterschiedliche Einstellungen/Daten gibt, als dass ich Sie in eine einzige Tabelle bekomme. Oder ich hätte halt 300 Felder in der Tabelle, wovon je nach System nur 40 belebt sind. Das möchte ich eigentlich nicht auch wegen der Übersichtlichkeit.

Mir ist bewusst, dass es fertige Software für so etwas gibt, aber:
1) die kosten ein Vermögen, was ich einfach nicht bereit bin, dafür zu bezahlen
2) so modular sind diese auch nicht aufgebaut, dass sie auf meine Anforderungen zugeschnitten sind
3) ich habe viel Freizeit und möchte diese natürlich gerne nutzen

Vielleicht hat jemand von euch einen Ansatz für mich, wo ich mich einlesen kann oder einfach einen kleinen Tipp, wie ich es anders/besser/"richtiger" realisieren kann. Ich möchte keinen fertigen Code für mein Vorhaben, sondern einfach nur Ideen oder Tipps wie ich es umsetzen könnte.

Falls noch Fragen offen sind, dass bitte mitteilen. Ich versuche gerne diese zur Zufriedenheit zu beantworten.

Im Voraus schon einmal vielen Dank für etwaige Antworten.
 
Lösung
Die Anlage gehört nicht in die Herstellertabelle. Was wenn ein Hersteller mehrere Anlagen hat?
Du brauchst noch folgende Tabellen
- Anlagen (Mit Anlage-ID [AID], ID des Herstellers [HID], Name der Anlage
- Eigenschafts Möglickeiten (mit Meta-Eigenschafts ID [MEID], Name der Eigenshaft
- AnlageEigenschaften (mit [AID], [MEID], Wert der Eigenschaft)
Code:
TabelleMetaAnlageEigenschaften
##############################
MEID, EigenschaftsName
1, "Grösse"
2, "Ausbau"
3, "Leistung"
4, "Farbe"

TabelleAnlage
#############
AID, HID, AnlageName
1, 1, "Anlage 1"
2, 1, "Anlage 2"

TabelleAnlageEigenschaften
##########################
AID, MEID, Wert
1, 1, "100m3"
1, 4, "Grün"
2, 4, "Rot"

Zudem hat der Hersteller und die Anlage nix in der Kundentabelle zu...
Die Anlage gehört nicht in die Herstellertabelle. Was wenn ein Hersteller mehrere Anlagen hat?
Du brauchst noch folgende Tabellen
- Anlagen (Mit Anlage-ID [AID], ID des Herstellers [HID], Name der Anlage
- Eigenschafts Möglickeiten (mit Meta-Eigenschafts ID [MEID], Name der Eigenshaft
- AnlageEigenschaften (mit [AID], [MEID], Wert der Eigenschaft)
Code:
TabelleMetaAnlageEigenschaften
##############################
MEID, EigenschaftsName
1, "Grösse"
2, "Ausbau"
3, "Leistung"
4, "Farbe"

TabelleAnlage
#############
AID, HID, AnlageName
1, 1, "Anlage 1"
2, 1, "Anlage 2"

TabelleAnlageEigenschaften
##########################
AID, MEID, Wert
1, 1, "100m3"
1, 4, "Grün"
2, 4, "Rot"

Zudem hat der Hersteller und die Anlage nix in der Kundentabelle zu suchen.
Da brauchst du noch eine weitere Tabelle, welcher Kunde von welcher Anlage wieviele Stücke hat. Wer der Hersteller ist, kann man dann ais der Anlage ermitteln.
Code:
TabelleKundenAnlagen
####################
KID, AID, Anzahl
1, 1, 1
2, 1, 2
 
Lösung
Vielen Dank für die Hinweise.

Ich hatte mir so etwas bereits gedacht, wollte mich aber auch ein Stück weit hier vergewissern.

Nur, damit ich das auch richtig verstehe und jetzt nicht wieder zu kompliziert denke:
Die Anlagen der verschiedenen Hersteller sind so unterschiedlich, so dass diese sich nicht unbedingt
decken. Ich würde/müsste jetzt noch eine Tabelle "dazwischen packen", in welcher ich hinterlege, welche Anlage überhaupt welche Eigenschaften hat, oder?
Ansonsten hätte ich ja eine Tabelle für die Eigenschaften mit ALLEN Felder aller Anlagen und die Hälfte wären NULL.
 
Die hast du doch schon: TabelleAnlageEigenschaften
Das ist die Kombintion von Anlage & Eigenschaft & Eigenschaftwert. SIe beinhaltet nur Einträge die zur jeweiligen Anlage passen.
 
Jetzt wo Du es sagst ... Schande über mein Haupt.

Vielen Dank für die ausführliche Hilfe. Das hat mir sehr geholfen.
 
Zurück