Ankündigung

Einklappen
Keine Ankündigung bisher.

MySQL Tabelle Einteilung?

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • MySQL Tabelle Einteilung?

    Hallo an alle,

    ich will gleich auf den Punkt kommen:
    Ich hab ein Loginsystem mit php geschrieben, und will es nun um eine freunde-funktion erweitern - Dass man jemanden als Freund erklähren kann.
    ich hab die Tabelle in MySQL, wo die Nutzer eingetragen sind. Wie kann ich das jetzt mit den Freunden realisieren, dass ich das in eine Tabelle eintrage, wer mit wen befreundet ist?

    ich danke schonmal im vorraus für eure Antworten!

    MfG

    Konstantin
    Wer einen Rechtschreibfehler entdeckt, darf ihn behalten

  • #2
    jetzt antworte ich mir selber, aber ich hab gerade was gefunden!
    Könnte ich nicht alle namen der Freunde in eine Zelle schreiben und den ausgelesenen Wert dann mit php bei einem Komma trennen? oder gehts einfacher?

    MfG
    Konstantin
    Wer einen Rechtschreibfehler entdeckt, darf ihn behalten

    Kommentar


    • #3
      NEIN tu das nicht. Dafür sind Datenbanken nicht gedacht -> erkundige dich mal über Normalisierung!

      Du solltest eine zweite Tabelle anlegen mit zwei Spalten. In diese Spalten schreibst du jeweils die IDs der beiden Freund! Somit kannst du deren Beziehung zueinander darstellen.

      Kommentar


      • #4
        Alles in eine Zeile => Pfui

        Erstelle eine eigene Tabelle
        zB;
        Code:
        userid - friendid

        Kommentar


        • #5
          Stimmt, ich weiß nicht, an was ich gerade gedacht habe ( ich hatte wol gerade einen Blackout! ) ich wusste wirklich nicht, wie ich das machen sollte

          Danke nochmal --> Konstantin
          Wer einen Rechtschreibfehler entdeckt, darf ihn behalten

          Kommentar


          • #6
            Eine Idee dazu, wobei die Gefahr der Rekursion (also eine endlose Freundschaftkette 1 -> 2 -> 3 -> 2 -> 1 ) besteht.

            Code:
            CREATE TABLE nutzer (
             nutzer_id INT NOT NULL,
             name VARCHAR(50) NOT NULL,
             vorname VARCHAR(50) NOT NULL,
             
             PRIMARY KEY (nutzer_id)
            );
            
            CREATE TABLE nutzer_hat_freund (
             nhf_id INT NOT NULL,
             nutzer_id INT NOT NULL,
             freund_id INT NOT NULL,
             
             PRIMARY KEY (nhf_id),
             
             CONSTRAINT fk_nutzer_01
              FOREIGN KEY (nutzer_id)
               REFERENCES nutzer (nutzer_id),
            
             CONSTRAINT fk_nutzer_02
              FOREIGN KEY (freund_id)
               REFERENCES nutzer (nutzer_id)
            );
            
            INSERT INTO nutzer VALUES 
            ( 1, 'Name-1', 'Vorname-1' ),
            ( 2, 'Name-2', 'Vorname-2' ),
            ( 3, 'Name-3', 'Vorname-3' );
            
            INSERT INTO nutzer_hat_freund VALUES 
            ( 1, 1, 3 ),
            ( 2, 2, 3 );
            Eine Auswertung ist auch nicht ganz trivial.

            Grüße
            Thomas

            Kommentar


            • #7
              Wieso sollte sich eine endlose Freundeskette ergeben? Wenn du jede Freundschaftsbeziehung nur einmal abspeicherst hast du ja keine doppelten Daten. Beim auslesen solltest du sowieso aufpassen eine Rekursion möglichst zu vermeiden.

              Kommentar


              • #8
                Zitat von Flor1an Beitrag anzeigen
                Wieso sollte sich eine endlose Freundeskette ergeben? Wenn du jede Freundschaftsbeziehung nur einmal abspeicherst hast du ja keine doppelten Daten. Beim auslesen solltest du sowieso aufpassen eine Rekursion möglichst zu vermeiden.
                Es muss natürlich keine endlose Freundschaftskette geben, aber es kann. Voraussetzung dafür dass es keine gibt ist eine korrekte Validierung beim INSERT und UPDATE.

                Sollte auch nur ein Hinweis auf die Problematik "Rekursion" sein.

                Grüße
                Thomas

                Kommentar


                • #9
                  Ach man, das Thema gabs doch hier schon 1000 mal..
                  [COLOR="#F5F5FF"]--[/COLOR]
                  [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
                  „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                  [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
                  [COLOR="#F5F5FF"]
                  --[/COLOR]

                  Kommentar

                  Lädt...
                  X