ERLEDIGT
JA
JA
ANTWORTEN
2
2
ZUGRIFFE
332
332
EMPFEHLEN
-
Hallo zusammen,
ich stecke in einem (vermutlich rein logischem auf Grund mangelnder MySQL/DB-Erfahrung) Problem fest:
Folgendes Szenario:
2 Tables:
note_types (Hier werden Notiz-Typen gespeichert)
id|note_short|note_long
or_reservation (Hier werden Zimmer-Reservierungen abgespeichert)
id|guest_name|...|...|note_id|note_text|...|random_field
Die verschiedenen Notiz-Typen können vom Admin beliebig erweitert werden. Der Benutzer sieht die verschiedenen Notiz-Typen als Text-Area:
Solange es zu jeder Textarea, bzw. zu jedem Notiz-Typ aus "note_types" ein Feld in "or_reservation" gibt ist das ja auch kein Problem (note_id_one|note_text_one / note_id_two|note_text_two / etc. je nachdem wieviele Types es gibt).HTML-Code:<textarea name="notiz-typ1">Notiz-Text1</textarea> <br /> <textarea name="notiz-typ2">Notiz-Text2</textarea> <br /> etc...
Wenn nun aber der Admin einen neuen Notiz-Typ hinzufügt, wie ist das Ganze dann zu behandeln, abzufragen?
Da ich wie gesagt eher Amateur in MySQL bin hier meine Ideen bisher (bitte brecht nicht zusammen):
- note_one_id & note_one_text bis x bereits erstellen (note_x_id/note_x_text)
Nachteil: Ressourcenverschwendung, Begrenzung der Note-Types-Anzahl - beim Hinzufügen von neuen Note-Types neues Feld in or_reservation erstellen
Nachteil: PHP Abfrage/Insert kompliziert, evtl auch ineffizient/langsam (Types in note_types zählen und via foreach in PHP die SQL Query "on-the-fly" erstellen) - In or_reservation nur ein Feld notes erstellen und dort alle Note-Types inkl. ID speichern ("1|Notiztext1----2|Notiztext2----3|Notiztext3"), beim Aufrufen doppelter explode/preg:match nach ID und Text.
Nachteil: Sinn einer DB missverstanden?
Ich hoffe ich konnte mich verständlich ausdrücken und es gibt eine simple Lösung mit einem SQL-Befehl den ich nicht kenne. Wenn nicht freue ich mich auch über Empfehlungen für eine der 3 Lösungen bzw. Alternativen.
Ich habe das ganze Mal auf einem "Online-Whiteboard" zusammengefasst, falls der Text zu wirr ist.
Danke schonmal für's Lesen
cheers
PrimuS
- note_one_id & note_one_text bis x bereits erstellen (note_x_id/note_x_text)
-
Du brauchst eine dritte Tabelle, um diese N:M Beziehung zu modellieren.
reservation_notes:
reservation_id | note_id | note_text
note_id und note_text verschwinden jetzt aus or_reservation!
Deine drei Ideen sind im Prinzip genau die Ansätze, die man hat, bevor man die Relationale Datenbank verstanden hat. Das geht jedem am Anfang so. Es gibt leider auch im Beruf Leute, die alle drei Varianten produktiv einsetzen...was in aller Regel absolut unnötig und falsch ist.
Wenn du jetzt alle Notizen einer bestimmten Reservierung willst, musst du einen JOIN benutzen:
Code sql:1 2 3 4 5
SELECT * FROM or_reservation AS r, note_types AS t, reservation_notes AS n WHERE r.id = 123 AND r.id = n.reservation.id AND t.id = n.note_id
-
Spitze, vielen Dank, genau das meinte ich mit "logischem" Problem, bei allen 3 Ansätzen hatte ich das Gefühl ich missbrauche den Gedanken einer DB.
Vielen Dank.
cheers
PrimuS
Ähnliche Themen
-
Magische Zahl bei Eintrag von Tabelle1 nach Tabelle2
Von julia29 im Forum PHPAntworten: 4Letzter Beitrag: 01.09.11, 00:04 -
kleines x-dim Array in Größeres speichern; mit variabler Position
Von tuFrogs im Forum JavaAntworten: 0Letzter Beitrag: 13.09.10, 19:38 -
Tabelle1.id und Tabelle2.id bei einer mySQL Select Anfrage ausgeben.
Von X-Color im Forum Relationale DatenbanksystemeAntworten: 1Letzter Beitrag: 31.01.07, 10:48 -
Tabelle1.id und Tabelle2.id bei einer mySQL Select Anfrage ausgeben.
Von X-Color im Forum PHPAntworten: 1Letzter Beitrag: 31.01.07, 10:48 -
Mysql: UPDATE JOIN bei mehreren Übereinstimmungen in Tabelle2 möglich?
Von kuemmel im Forum Relationale DatenbanksystemeAntworten: 0Letzter Beitrag: 19.02.05, 20:17





Zitieren

Login





