tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
2
ZUGRIFFE
332
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Primus852 Primus852 ist offline Mitglied Silber
    Registriert seit
    Feb 2005
    Beiträge
    51
    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:

    HTML-Code:
    <textarea name="notiz-typ1">Notiz-Text1</textarea>
    <br />
    <textarea name="notiz-typ2">Notiz-Text2</textarea>
    <br />
    etc...
    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).

    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):

    1. note_one_id & note_one_text bis x bereits erstellen (note_x_id/note_x_text)
      Nachteil: Ressourcenverschwendung, Begrenzung der Note-Types-Anzahl
    2. 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)
    3. 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

    [MySQL] Werte aus variabler Tabelle1 in Tabelle2 Felder speichern-download.png
     

  2. #2
    CPoly CPoly ist offline Mitglied Weizenbier
    tutorials.de Premium-User
    Registriert seit
    Sep 2009
    Beiträge
    2.445
    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
     

  3. #3
    Primus852 Primus852 ist offline Mitglied Silber
    Registriert seit
    Feb 2005
    Beiträge
    51
    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

  1. Antworten: 4
    Letzter Beitrag: 01.09.11, 00:04
  2. Antworten: 0
    Letzter Beitrag: 13.09.10, 19:38
  3. Tabelle1.id und Tabelle2.id bei einer mySQL Select Anfrage ausgeben.
    Von X-Color im Forum Relationale Datenbanksysteme
    Antworten: 1
    Letzter Beitrag: 31.01.07, 10:48
  4. Antworten: 1
    Letzter Beitrag: 31.01.07, 10:48
  5. Mysql: UPDATE JOIN bei mehreren Übereinstimmungen in Tabelle2 möglich?
    Von kuemmel im Forum Relationale Datenbanksysteme
    Antworten: 0
    Letzter Beitrag: 19.02.05, 20:17