[linux-l] Software-Design

Peter Ross Peter.Ross at bogen.in-berlin.de
Fr Okt 5 03:54:24 CEST 2012


Hallo,

die Frage hat was mit meiner speziellen Arbeit zu tun, aber ich halte das 
Problem für allgemein so interessant, dß ich mal umfragen möchte, wie Ihr 
es so haltet.

Als Teil eines größeren Inhouse-Systems (PHP und Symphony 1.4 basiert, 
und mit relationalem MySQL dahinter), gibt es Produkte, die ProduktGruppen 
zugehören.

Das Webinterface zeigt diese als Baumstruktur, und man kann dann 
ProduktInfos anschauen, Datensätze, die Texte oder hochgeladene Dateien 
anzeigen.

Nun kann eine ProduktInfo zu mehreren Produkten passen - n:n, kein 
Problem.

Aber manchmal ist es auch sinnvoll, die Info direkt einer ProduktGruppe 
zuzuordnen.

Okay, ohne Veränderung: "Alle Produkte" anklicken, ProduktInfo hinzufügen.

Nachteil: Wenn dann ein neues Produkt hinzukommt, erbt es nicht die 
ProduktInfo der ProduktGruppe (oder ich muß Extra-Zauberei veranstalten, 
damit sich "GruppenInfos" gemerkt werden).

Auch ist es nicht offensichtlich, da die Information der Gruppe zugehört.

Variante 2:

Eine Extra ProduktGruppenInfo-Klasse. Doppelter Code etc. Cut&Paste-Hölle.

Variante 3:

Eine abstrakte Info-Klasse mit allen Methoden etc, und dann an 
ProduktGruppen und/oder Produkte "angehängt".

Nachteil: Die Fremdschlüssel-Abhängigkeien müssen manuell gepflegt 
werden, ich glaube nicht, daß MySQL zu einer Definition wie:

Fremdschlüssel muß
- Id der Produkt-Tabelle sein, wenn abhängig_von=Produkt ist,
- oder Id der ProduktGruppen-Tabelle sein, wenn abhängig_von=ProduktGruppe 
ist.

Ich vermute, 3. ist der Weg - aber gibt es noch was schöneres?

Ein schönes Wochenende wünscht
Peter


Mehr Informationen über die Mailingliste linux-l