dedlfix: Datenmodelle poste / prüfen / bewerten möglich?

Beitrag lesen

Tach!

Vor ungefär 15 Jahren hab ich beim Entwickeln komplexer Webanwendungen mal gesagt, ein Hash-of-Hashes, entspricht Schlüssel/Schlüssel/Wert, ist völlig ausreichend für den Random Access persistenter Daten nachdem diese deserialisiert wurden.

Du meinst mehrdimensionale Arrays mit Hash of Hashes?

Er meint anscheinend, dass eine relativ einfache und sehr allgemein gehaltene Datenstruktur die Lösung aller Probleme sei. Klingt zu gut um wahr zu sein. CSV ist beispielsweise eine sehr einfache Möglichkeit, eine Datenbank zu bauen. Aber wenn man genauer hinschaut, hat das eine Menge Nachteile gegenüber einem solch komplexen Gebilde wie einem SQL-DBMS. Und natürlich ist auch ein solches nicht in jedem Fall das Non-Plus-Ultra. Das muss man gegen den konkreten Anwendungsfall prüfen.

Wenn man überall assoziative Arrays verwendet, sieht das auch einfach aus. Der Teufel ist aber das Detail, dass die Keys alles Strings sind und damit ist eine Eindeutigkeit nicht mehr gegeben. Ist denn "foo" gleich "foo" oder ist das zufällig nur der gleiche Wert für zwei unterschiedliche Dinge? Man kann es oft nicht auf den ersten Blick erkennen. Leichte Erkennung, was ein Code macht, ist wichtig für das Verstehen und die Wartung. Besonders IDEs tun sich schwer damit, eindeutige Codevervollständigung für solche string-basierten Geschichten zu bieten. Ein Objekt einer vorher definierten und mit PhpDoc (gibts auch für andere Sprachen) maschinenlesbar dokumentierten Klasse ist wesentlich eindeutiger und damit besser durch die IDE unterstützbar. Natürlich ist es komplexer als ein einfaches Array, doch es hat auch entscheidende Vorteile gegenüber einem solchen.

Mit Arrays als Datensammlung kann man auch keine Funktionsparameter mit Typehint oder in streng typisierten Sprachen mit einem konkreten Typ hinterlegen. Somit kann einem auch die IDE und der Compiler nicht darauf hinweisen, dass man da was unerwartetes zu übergeben versucht. Will man all solche Nachteile haben, zugunsten eines einfach aussehenden und zu einfach seiendem Datenmodell? Ich nicht. EAV ist eine tolle Sache - da wo man eine solche Flexibilität benötigt. In einem Shopsystem, wo man beim Entwickeln nicht wissen kann, wieviele und welche Attribute die Artikel beschreiben werden, ist so ein flexibles Datenmodel von Vorteil. Aber für zur Entwicklungszeit bekannte Eigenschaften von Objekten brauche ich diese Flexibilität nicht. Da brauch ich vielmehr die Typsicherheit.

Meine Frage ist nur ob es möglich ist ein UML Diagramm hier zu bewerten und welche Rubrik ich da nehmen muss damit es besser gefunden wird.

Ja, wir werden solche Fragen garantiert nicht löschen und wenn sich jemanden mit entsprechendem Wissen und Zeit findet, wirst du sie beantwortet bekommen. Rubrik? Wenn du keine passende in der Liste der Tags findest, nimm erstmal "Sonstiges", wird schon jemand anpassen.

dedlfix.