Konzeption Datenbank bzw. Aufteilung in Drupal
![](http://www.drupalcenter.de/files/noavatar_mini.gif)
am 28.03.2009 - 15:21 Uhr in
Hallo liebe Drupal Gemeinde,
ich habe eine Aufgabe für euch ;) zu der ich mir viele Gedanken gemacht habe, aber auf keinen grünen Nenner komme.
Es geht um eine konzeptionelle Frage zu SQL, daher weiß ich nicht mal ob ich hier richtig bin. Da es aber viel mit Drupal zu tun hat, poste ich es einfach mal hier.
Folgendes Problem / Projekt:
Es soll eine Art online Datenbank sein für verschiedene Städte. Dort werden nach Kategorien Daten wie Adressdaten, Bilder und paar Branchenspezifische Daten erfasst und über Suchefunktionen ausgegeben. Jetzt hat jede Stadt eine eigene Seite. Also
www.projekt-stadt1.de
www.projekt-stadt2.de usw.
Angefangen hatte ich total unwissend mit unterschiedlichen Accounts, Webservern und Datenbanken. Was natürlich denkbar ungünstig war. Mittlerweile habe ich alle Domains der verschiedenen Städte über einen Account und Webserver laufen und das über eine Multisite Installation. Die erleichtert deutlich den Wartungsvorgang :)
Jetzt zur eigentlichen Frage :)
Die Datenbanken sind bisher noch getrennt. Ich überlege jetzt jedoch ob es Sinn macht, alle Datenbanken zusammen zufassen?
Bisher hörte sich das für mich nach Chaos an, da ich es gerne sauber und getrennt mag.
Jetzt ist es aber so, dass z.B. ein Kunde aus Stadt1 auf der Seite www.projekt-stadt1.de eine Umkreissuche startet, in der eigentlich auch Daten aus Stadt2 und somit von www.projekt-stadt2.de gehörten müssten. Derzeit gebe ich dies halt mit „views“ aus und da werden halt nur alle Inhalte von Datenbank zu www.projekt-stadt1.de ausgegeben. Sprich, egal was der Kunde auf der Seite der Stadt1 sucht, er bekommt wirklich auch nur Einträge dieser Stadt.
Habt ihr also eine Idee, wie ich untereinander in den Projekten die Suchergebnisse unter umständen mit einbeziehen kann? Oder muss ich dafür gar nicht alles in eine Datenbank packen?
Das Problem von einer Datenbank wäre ja auch, das auf allen Seiten, ALLE Einträge zu sehn sind. Dies könnte man aber wahrscheinlich auch im „view“ über Argumente, die ich aus dem Weblink lese regeln oder?
Wie ihr seht, Fragen über Fragen, welches Konzept könnt ihr mir vorschlagen?
Danke für eure Hilfe
Viele Liebe Grüße FuXXz
- Anmelden oder Registrieren um Kommentare zu schreiben
Evtl. habe ich einen Denkfehler oder ..
am 29.03.2009 - 09:39 Uhr
.. habe dein Konzept nicht richtig verstanden.
Wenn ich deine Frage richtig verstehe, liegt die Problematik in der Reihenfolge der Selektions-Einschänkungen und deren Realisation. Grundsätzlich sehe ich die Einschränkung auf ein Gebiet als zweitrangig an, das wichtigstes und damit als vorrangiges Selektionskriterium sehe ich den Suchbegriff. Dieser sollte erst im zweiten Schritt auf ein Gebiet eingeschränkt werden, z. B. zu folgender Frage:
-- Gibt mir alle Veranstaltungen zum Thema Drupal in meinem einem Umkreis --
Damit ergibt sich für mich folgende Reihenfolge der Suchbegriffen:
und zwar mit folgender Begründung:
Ein User interessiert sich für ein bestimmtes Themengebiet (Drupal), evtl. sind für ihn nicht nur Veranstaltungen sondern auch sondern auch andere Artikel interessant, z. B. Node-Type Firma oder News. Ich beginne i. R. mit einer größeren räumlichen Einschränkung (z. B. Bundesland) und verfeinere diese immer weiter (hat die größten Erfolgsaussichten und ist damit motivationssteigernd) oder umgekehrt ich beginne mit einer möglichst kleinen räumlichen Einschänkung (z. B. Stadtteil bzw. PLZ) und werde immer größer bis ich das Angebot in meiner Nähe finde das mich interessiert.
Hierbei ist der Begriff "Nähe" relativ; suche ich einen Herzspezialisten sind 100 KM sehr nah - für einen Pizza-Dienst ist das sehr weit. Die Suchbegriffe und Abfrage-Typen (Node-Types) sind allerdings immer gleich.
Interessant sind für solche räumlichen Suchen die Zuordnungskonzepte. Es kann sicher über die Umkreissuche gelöst werden, also der realen Entfernung zum Ausgangsort der Suche; es kann aber u. U. sinnvoller sein die Suche in Raumstrukturen bzw. in politischen Hierarchien zu ermöglichen (Stadt - Gemeinde - Landkreis - Regierungsbezirk - Bundesland - usw.). Hierzu gibt es einige gut Ansätze in der OpenGeoDB.
Gruß
UwBach
Danke erstmal für deine
am 29.03.2009 - 14:54 Uhr
Danke erstmal für deine Antwort!
Vielleicht muss ich mich genauer ausdrücken, ist halt auch für mich nicht ganz einfach :)
Im Wesentlichen geht es ja darum inwiefern die Seiten untereinander Kommunizieren können.
Es gibt z.B. folgenden Fall, dass es in Stadt1 einen Eintrag 2x gibt, da der Kunde zwei Filialen hat. Dafür gibt es einfach ein CCK Feld mit einem Beitragsverweis auf den entsprechenden Node.
Was ist jetzt wenn der Kunde eine Filiale in Stadt2 eröffnet? Das ist ja eine andere Datenbank auch die ich nicht einfach so verlinken kann.
Das gleiche dann mit einer Umkreissuche, die kann ich ja nur machen, wenn auch alle Daten bzw. Nodes in einer Datenbank sind. Wenn für jede Stadt eine Datenbank existiert, kann ja auch nicht gesucht werden oder sehe ich das falsch?
Also muss ich zwingend eine Datenbank für alle Städte haben oder geht es auch anders?
Das verwirrt mich jetzt noch mehr ..
am 30.03.2009 - 07:53 Uhr
.. geht es jetzt darum für jede "Filiale" eine eigene Drupalseite mit eigener DB zu erstellen?
Ansonsten macht es keinen Sinn für jede Filiale eine eigene DB zu erstellen. Bei einer Datenbank geht es darum gemeinsame Attribute eines Objektes zu identifizieren und diese in einer oder mehreren Tabellen zu verwalten. Dabei sollten alle gemeinsamen Attribute in einer eigenen Tabelle verwaltet werden (Stichwort: Normalisierung) und diese Referenzen werden als Attribut (Stichwort:Relationen) gespeichert. Damit können Datenbankobjekte anhand gemeinsamer Attribute selektiert werden. Ein solches Attribut wäre in deinem Fall der Ort, die Branche, der Eigentümer, ...
Gruß
UwBach
mhh ich kann dir leider
am 30.03.2009 - 19:53 Uhr
mhh ich kann dir leider nicht folgen, aber trotzdem nochmal danke für deine Antwort!
Also jede Stadt hat eine eigene Datenbank aber nicht jeder Kunde oder jede Filiale!
www.stadt1.de => Datenbank1
www.stadt2.de => Datenbank2 => 1x Drupal Installation
www.stadt2.de => Datenbank3
Die Frage halt nur ob es nicht besser so aussehen soll?:
www.stadt1.de => Datenbank1
www.stadt2.de => Datenbank1 => 1x Drupal Installation
www.stadt2.de => Datenbank1
Sagt mir nur bitte ob ihr
am 02.04.2009 - 01:15 Uhr
Sagt mir nur bitte ob ihr mich zumindest versteht ;)
Mir fällt da grad noch was ein!
Wenn ich jetzt eine Drupal-Installation nehme und eine Datenbank, für alle Städte, hätte das bestimmte Vorteile.
Das Problem ist nur, wie zeige ich auf der Domain der Stadt1 nur dessen Einträge an?
Könnte ich mittels views und Kategorien die Ausgabe steuern? Also das Views schaut, welche Domain ist aktiv und dann eine entsprechende Ausgabe nimmt?
EInfach die notwendigen
am 02.04.2009 - 07:44 Uhr
EInfach die notwendigen Datenbanktabellen gemeinsam nutzen. Das geht ja über die Einstellungen in der settings.php soweit ich das in der Multisiteanleitung verstanden habe.