Aufeinnaderfolgende Kategorien abbilden

Halla an alle,

ich möchte drei Kategorien darstellen im prinzip wie

Bundesland-Stadt-Straße (Ist nur eine Beispiel zur Veranschaulichung)

nun habe ich aber nicht die geringste Ahnung wie ich das am sinnvollsten mache

Tabelle 1
ID - Bundesländer

Tabelle 2
ID - Bundesland_ID - Orte

Tabelle 3
ID - Ort_ID - Straßen

bei den Orten gibt es dann einige merfach benennungn (zb Frankfurt)
das ist ja noch verträtbar.

Aber bei den Straßen hätte ich ja dann manche Straßennamen hunderte mal in der Datenbank mit jewiels einer andern Ort_ID

Gedankengang 2

Tabelle 1
ID - Bundesländer

Tabelle 2
ID - Orte

Tabelle 3
ID - Straßen

Tabelle 4
ID - ID_Bundesland - ID_Ort - ID_Straße

gibt es vielleicht noch eine andere „Elegantere“ Lösung die mir bisher verborgen blieb ???

Danke erst einmal für eure Hilfe und wie gesagt das ist nur ein Beispiel ! Ich weiß das es solch eine Datenbank (Bundesland-Orte-Straße) auch im Netz gibt!

MfG Stefan

Hallo Stefan,

ich möchte drei Kategorien darstellen im prinzip wie
Bundesland-Stadt-Straße

Wenn deine tatsächlichen Kategorien auch hierarchisch sind, dann kann ich dir nested Sets empfehlen.
http://phpperformance.de/nested-sets-hierarchische-s…
Bei dem Beispiel brauchst Du nur die Kategorien „Lebensmittel“, „Kleidung“ usw. durch die Bundesländer ersetzen, dann die Städte und Straßen… Ich hoffe, das Prinzip ist klar.
Nested Sets eignen sich gut für Kategorien, die nur wenig geändert, aber oft abgefragt werden.
Wenn Du das Drumherum mit PHP machen willst/kannst, gibt es auch eine Erweiterung speziell dafür:
http://pear.php.net/package-info.php?pacid=187
Vielleicht auch für andere Sprachen, aber das weiss ich im Moment nicht.

Viele Grüße
Marvin

Hallo Marvin,

erst einmal Danke. Leider kann ich mit Nested nicht Arbeiten da meine Daten doch des öfteren erweitert werden.

ich hatte das beispiel mit Bundesland-Ort-Straße angeführt da es meiner Struktur am ehesten Entspricht.

Ich habe die Abrechnung eines Vereins und jede Buchung kann drei Kategorien enthalten

z.B.
Kategorie1-Kategorie2-Kategorie3

Beitrag-2008-08
Beitrag-2008-09

Beitrag-2009-09
Beitrag-2009-10

Kontoführung-2009-09
Kontoführung-2009-10

Vereinspflege-Ausstattung-Möbel

Versicherung-2009

Somit kann Kategorie2=2009 in Versicherung, Kontoführung und Beitrag vorkommen und Kategorie3=09 in 2008 und 2009 … vorkommen
somit würde ich aber unter Nested die 09 auch mehrfach eintragen. welches speicherplatz frisst.

Kennt vielleicht noch jemand eine schöne Möglichkeit.

MfG Stefan

Hallo Stefan,

Beitrag-2008-08
Beitrag-2008-09

Kontoführung-2009-09
Kontoführung-2009-10

Ich kenne mich mit Buchführung und so nicht aus, aber das riecht mir doch sehr nach einem nicht ordentlich aufgebauten Datenmodell. Bei so was würden sich doch zwei Tabellen anbieten, Beitrag und Konto, die dann beide Datumsfelder enthalten, in denen Jahr und Monat auftauchen. Die Kategorie Beitrag-2008-09 z.B. würde dann nur virtuell als Sicht auftauchen, die man aus einer SQL-Abfrage konstruiert.


Vereinspflege-Ausstattung-Möbel

Das könnte man nehmen, denn ihr kauft euch doch nicht täglich neue Möbel, oder?


Versicherung-2009

Wie bei Beiträge und Konto.

somit würde ich aber unter Nested die 09 auch mehrfach
eintragen

die 09 trägst Du nicht mehrfach ein (geht auch nicht, das sollen eindeutige IDs sein, die auch nichts mit dem Jahr zu tun haben, wenn Du das meinst), aber das ist nur ein kleines Detail

welches speicherplatz frisst.

Na, Speicherplatz ist ja wohl heutzutage genug vorhanden. Da musst Du schon viel haben, um auch nur annähernd in den 100-MB-Bereich zu kommen. Unsere Bücherei-Datenbank mit ca. 15000 Büchern ist gerade mal bei 10 MB angekommen.

Viele Grüße
Marvin

Hallo Marvin,

ich werde mir mal meine struktur nochmals durch den Kopf gehen lassen und mal schauen ob ich das anderweitig hin bekomme. Ich bin halt durch MS Money etwas vorbelastet und dacht, dass dieses sich mit kategorien nicht schlecht macht. Vor allem bei Abfragen und Statistiken und den allseits belibten Jahresabschluß.

eine andere Idee war in der einen Tabelle alle Kategorieeinträge mit ID und in der zweiten Tabelle alle erlaubten Kombinationen

Tabelle 1
1-Beitrag
2-Kontoführung

155-2009
156-2010

253-09
254-10

Tabelle 2
1-1-155-253 für Beitrag-2009-09
2-1-155-254 für Beitrag-2009-10

22-2-155-253 für Kontoführung-2009-09

Ich Danke Dir erst einmal und vieleicht kommt mir ja noch die Erleuchtung oder ein anderer hat noch einen Tipp für mich !

Cu Stefan