Frage zu grundlegender Tabellenstruktur
-
Hallo,
ich habe den selben Beitrag schon in einem anderen Forum gepostet, aber in der Hoffnung das sich so eher jemand findet der mir helfen kann, poste ich hier auch nochmal. Ich hoffe das ist kein Problem.
ich habe mal darüber nachgedacht, wie eigentlich eine komplexere relationale Tabellenstrukur aufgebaut wird. Mir sind verschiedene Möglichkeiten eingefallen allerdings würde ich gerne wissen, was hier "State of the Art" ist, sprich wie man diese Art von Problem überlicherweise löst.
Das Problem, das ich habe ist, wie strukturiert man eine Klassenhirachie sinnvoll in Tabellen. Um zu beschreiben was ich meine, nehme ich mal die Datenbank von Amazon als Beispiel. Einige Datenfelder sind etwas an den Haaren herbeigezogen, um ein einfaches Beispiel aufbauen zu können.
---------------------------
einfache Datenstruktur
---------------------------
Produkt
- Name
- PreisBuch <- Produkt
- SeitenzahlFilm <- Produkt
- FSKVHS <- Film
- BanddickeDigitialer Film <- Film
- AuflösungDVD <- Digitialer Film
- CSS KopierschutzBlu-Ray <- Digitialer Film
- BD+ KopierschutzElektrogerät <- Produkt
- StromverbrauchDVD Player <- Elektrogerät
- DivX unterstützungNun fallen mir die verschiedensten Möglichkeiten ein, soetwas in Tabellen zu prügeln aber ich weis einfach nicht so recht, was die vernünftigste Lösung ist:
----------------------------
Flach
----------------------------
Produkte
- Typ
- Name
- Preis
- Seitenzahl
- FSK
- Banddicke
- Auflösung
- CSS Kopierschutz
- BD+ Kopierschutz
- Stromverbrauch
- DivX unterstützungNun wird das ganze ja relativ schnell relativ breit, was mir sowohl vom Speicherverbrauch als auch von der Unterstützung der Datenbanken her sorgen macht.
-----------------------------
Universell
-----------------------------
Produkte
- Typ
- NameProduktattribute
- Produktid
- Attributname
- AttributwertDiese ist sehr universell, allerdings weis die Datenbank ja nun nichts mehr über die genauen Typen und Strukturen. Allerdings
lässt Sie sich vollkommen universell abfragen.----------------------------
Abgeleitet
----------------------------
Produkt
- Typ
- Name
- PreisBuch
- Produktid
- SeitenzahlFilm
- Produktid
- FSKVHS
- Produktid
- BanddickeDigitialer Film
- Produktid
- AuflösungDVD
- Produktid
- CSS KopierschutzBlu-Ray
- Produktid
- BD+ KopierschutzElektrogerät
- Produktid
- StromverbrauchDVD Player
- Produktid
- DivX unterstützungHier ist es ja relativ aufwändig, die Benötigten Daten für einen Film zusammenzusuchen.
----------------------------
einfach Abgeleitet
----------------------------
Produkt
- Typ
- Name
- PreisBuch
- Produktid
- SeitenzahlVHS
- Produktid
- FSK
- BanddickeDVD
- Produktid
- FSK
- Auflösung
- CSS KopierschutzBlu-Ray
- Produktid
- FSK
- Auflösung
- BD+ KopierschutzDVD Player
- Produktid
- Stromverbrauch
- DivX unterstützungHier würden nur für die Blätterklassen Tabellen angelegt. Allerdings dupliziere ich damit ja viele Felder. Auserdem kann ich
bestimmte Felder nicht mehr allgemein abfragen, z.B. gib mir alle Filme, die ab 12 sind.Perfekt erscheint mir keine Lösung:( Ich würde gerne wissen welche Lösung in der Praxis verwendet wird, und welche unter den
gegebenen technischen Möglichkeiten am sinnvollsten ist. Es tut mir leid, das der Beitrag so lang geworden ist, aber ich
wusste nicht wie ich es kürzer beschreiben soll.Vielen herzlichen dank im voraus für jeden, der ein bischen Licht in meinen Strukturjungel bringen kann.:)
Grüße
template
-
Da gibts mehrere Ansätze, jeder mit seinen Vor- und Nachteilen.
http://www.agiledata.org/essays/mappingObjects.html#MappingInheritance