"kleines" problem mit datenbankstruktur

moevenschiss

Mitglied
hallo zusammen!

also, ich möchte eine datenbank anlegen, in der sowohl hotels als auch restaurants und kneipen / bars enthalten sein sollen.

geplant hab ich jetzt, 3 tabellen anzulegen (hotel, restaurant und bars). jede tabelle hat dabei den folgenden aufbau:

id | region_ID | name | strasse | nr | plz | ort | url | mail wobei region_ID mit der tabelle regionen verbunden wird.

regionen sind hier z.b. ruhrgebiet oder sauerland.

nun aber zum eigentlichen problem: es gibt hotels, in denen es sowohl (nennenswerte) restaurants und bars gibt. ebenso

exisitieren aber auch kombinationen aus restaurants und bars. man müsste also einmal das restaurant eingeben und zum anderen

die bar, die sich im restaurant befindet. und solche doppelten einträge sollen ja vermieden werden.

nun stellt sich für mich die frage, ob ich die tabellen so beibehalten soll oder ob es vielleicht sinnvoller wäre, eine tabelle hotel und eine tabelle gastronomie anzulegen. würde ich mich für letztere alternative entscheiden, wie kann man dann festlegen, zu welchen rubriken (bar, restaurant, etc.) das entsprechende gastronomische angebot gehört? kann man da eventuell etwas mit enum oder set-datentypen anfangen oder muss dafür noch eine tabelle angelegt werden? ich bin da mit meinem latein am ende.

außerdem gibt es dann noch das problem, dass ich festlegen möchte, ob ein restaurant oder eine bar über einen biergarten verfügt. somit können ja nur drei werte angenommen werden: keine angabe, nicht vorhanden oder vorhanden. ist es dann möglich, diese eigenschaft der location direkt in die tabelle gastronomie zu schreiben (set-datentyp - da mehrere eigenschaften möglich sind) oder muss dafür eine neue tabelle angelegt werden. man könnte doch einfach folgende abfrage machen:

select * from gastronomie where ort=... and biergarten==1;

wäre das so ok? also, ich wäre euch wirklich dankbar, wenn ihr mir bei diesem "kleinen" mysql-problem helfen könntet. habe in den letzten wochen etliches an literatur gelesen, aber irgendwie macht es noch nicht "klick".

schon mal vielen dank im voraus,

moevenschiss
 
Mach doch einfach ne Tabelle Adressen, welche die Felder ID und halt die Adressdaten hat. Dann machst du Tabellen für Restaurants, Bars und Hotels mit den entsprechenden Adressen-IDs und Regionen IDs und en speziellen Daten der Einrichtungen ... dann ist es nicht weiter schlimm, wenn einige Einrichtungen die gleiche Adresse haben und deine DB bleibt Redundanzfrei ...
 
hey! danke für dfie schnelle antwort! habe ich auch schon überlegt. aber wie sieht es denn aus, wenn hinterher noch weitere eigenschaften hinzugefügt werden sollen. zum beispiel könnte man beim hotel über die kategorie nachdenken oder einer disco noch die musikrichtung zuweisen. ich check das echt nicht. und was würdest du mit dem thema biergärten machen? dafür müsste ich dann ja auch wieder neue tabellen anlegen.
 
ist das thema denn so kompliziert oder stelle ich mich einfach nur zu dumm an? würde mich über die eine oder andere hilfestellung wirklich sehr freuen.
 
geplant hab ich jetzt, 3 tabellen anzulegen (hotel, restaurant und bars). jede tabelle hat dabei den folgenden aufbau:

id | region_ID | name | strasse | nr | plz | ort | url | mail wobei region_ID mit der tabelle regionen verbunden wird.

Nur ich würde nur eine Tabelle mit dem Aufbau machen
und dann eine zweite Tabelle mit der Art (hotel, biergarten, bar)

linkid art

so kann man beliebieg viele Einträge zu einer Adresse machen
 
also anscheinend ist die gängige meinung ja doch die, dass ich eine tabelle mit adressdaten mache so wie ich das oben schon aufgeschrieben habe. dann mache ich eine weitere tabelle meinetwegen namens kategorien. darein schreibe ich dann die kategorie_ID und die einzelnen kategorienamen. so z.b. restaurant, hotel, bar, etc. die beiden tabellen (adressen und kategorien) verbinde ich dann über eine weitere tabelle (adressen_kategorien), indem ich jeder adresse die kategorie zuweise. dabei müsste es dann ja so sein, dass in der tabelle adressen_kategorien eine adressen_ID mehrmals auftaucht, weil ja restaurant und hotel gleichzeitig möglich ist. oder hab ich was falsch verstanden?

wie bekomme ich es denn dann in dem admin_skipt hin, dass ich eine neue adresse anlege und dieser dann mehrere kategorien zuweise. da müssen dann ja mehrere werte von kategorien in die tabelle adressen_kategorien geschrieben werden, aber die adresse_ID bleibt ja immer die gleich. hat jemand einen tip?

und erstmal vielen dank für die schnellen antworten. hoffe, dass ich dieses "kleine" datenbankproblem jetzt endlich in den griff bekomme.
 
Dein Ansatz ist doch völlig richtig und als Standart gebräuchlich.
Schwerer finde ich eher, zu verstehen, was du jetzt noch willst.

Ich denke mal, dein Problem ist das hier:
Du musst bei deiner Zuweisungs-Tabelle den Primär-Schlüssel (PK) natürlich über beide Spalten legen, so dass es nur einen Eintrag mit genau der Zusammensetzung geben kann, aber mehrere Datensätze mit der adressen_ID oder der kategorien-ID.
Meintest du das ?
 
hi gorcky!

vielen dank für deine antwort. sorry, dass ich hier eventuell mal die eine oder andere dumme frage stelle, aber ich bin ein vollkommener newbie in php und mysql und hab da gerade mit glaube ich mit ner sache angefangen, die vielleicht auch ne nummer zu hoch für nen anfänger ist.

also, eigentlich ist die lösung ja vollkommen richtig, wie du es schon gesagt hast. ich denke, dass es jedoch am besten wäre, wenn man so genannte oberkategorien wie hotels und gastronomie hat und diese dann wie schon beschrieben über die tabelle adressen_kategorien miteinander verbindet.

jetzt soll man aber noch weiter selektieren können, sprich: in der kategorie hotels wäre eine auswahl derjenigen hotels interessant, die 3 sterne haben oder die ein golfhotel sind. man könnte z.b. über ein drop-down-menu die abfrageergebnisse verfeinern.

bei dem gastronomischen angebot kann man dann unterkategorien anlegen wie restaurant, bar, kneipe etc, womit dann auch diejenigen locations abgedeckt wären, die nen restaurant mit einer bar haben.

hat jemand dazu vielleicht eine lösung(zu den unterkategorien)? hört sich vielleicht komplizierter an als es ist. aber damit kommen wir schon zum nächsten problem: wie legt man denn dann so ein admin skript an, mit dem man die daten dann in die einzelnen tabellen schreibt. habe jetzt mal was mit dem befehl mysql_insert_id() probiert, der mir die letzte per auto_increment erstellte id zurückliefert, so dass ich diese id dann auch für den insert in die tabelle adressen_kategorien zur verfügung habe. klappt auch bei einer weiteren tabelle, aber was, wenn man in abhängigkeit von einer checkbox die daten in die tabellen schreibt. kommt da sowas wie if..else... ins spiel?

ich hoffe, dass man versteht, was ich mir so vorgenommen habe. es wäre mir schon viel geholfen, wenn mir jemand bei dem entwurf der tabellen behilflich sein kann, insbesondere die geschichte mit den ober- und unterkategorien bereitet mir die eine oder andere schlaflose nacht. ;-) wenn ihr auch noch eine idee für die insert-datei habt, wäre das mehr als klasse! freue mich über jede antwort!
 

Neue Beiträge

Zurück