Spielelisten für User - Wie am besten realisieren?

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

  • Spielelisten für User - Wie am besten realisieren?

    Hi, ich habe vor Spielelisten für User zu gestalten. Also jeder User kann in seiner Liste die Spiele (welche sich schon in der Datenbank befinden) einzutragen, die er selbst besitzt.

    Wie realisiere ich das ganze am besten?

    Ein Lösungsansatz den ich mir gedacht habe, wäre die IDs der Spiele in ein Feld in der Usertabelle einzutragen. Nach dem Motto "1 2 43 234"
    Für das Spiel mit der ID1, das SPiel mit der ID 2, das mit der ID 43 und der ID 234.

    Nur wenn ich jetzt die Spiele in einer Liste anzeigen lassen will muss ich als erstes diese "Zeichenkette" abrufen, diese mit Explode teilen und dann zu jeder ID den passenden Namen wiederum aus der Datenbank abrufen.

    Geht das ganze nicht irgendwie einfacher?

  • #2
    Ich würds ganz anders machen.

    Eine Tabelle für die Benutzer.

    Eine weitere Tabelle, für die Spiele.

    Eine weitere Tabelle für die vorhandenen Spiele bei den unterschiedlichen Benutzern. Du speicherst für jedes Spiel einfach die Spiel-ID und die Benutzer ID und kannst über die Benutzer ID mit einem Query alle Spiele eines Benutzers abrufen.

    Ich hoffe, das war verständlich

    Kommentar


    • #3
      hmm ... das wäre auch eine Möglichkeit wenn ich das richtig verstanden habe:

      User 1 hat die Spiele 1,5,6,8
      User 2 hat die Spiele 1,3,5,7

      dann sieht das ganze so aus in der Datenbank
      (UID = UserID, SID = SpielID)
      ID - UID - SID
      1 - 1 - 1
      2 - 1 - 5
      3 - 1 - 6
      4 - 1 - 8
      5 - 2 - 1
      6 - 2 - 3
      7 - 2 - 5
      8 - 2 - 7

      (vereinfacht dargestellt)

      ----------

      gibts noch andere Vorschläge?

      Kommentar


      • #4
        Ja, richtig verstanden.

        Kommentar


        • #5
          ja bei einer n:m beziehung sollte man die entity-variante einsetzen
          MfG
          aim
          Lies mich jetzt!
          - OT-Tags-Liebhaber und BB-Code-Einrücker -

          Kommentar


          • #6
            Danke!

            Ich habe noch eine Frage, welche das gleiche Gebiet betrifft. Beim Erstellen einer Fotogalerie wird jedem Bild eine ID in der Datenbank zugewiesen mit Beschreibung etc.

            Jetzt kann man Fotoalben erstellen und ihnen Bilder zuordnen. Jedoch sollen die Bilder auch mehreren Galerien zugeordnet werden können, sonst würde ich einfach in dem Eintrag des Bildes die Galerie-ID einfügen, aber das geht ja so nicht, weil das Bild ja mehreren Galerien zugeordnet werden können soll.

            Soll man dieses "Problem" auch so lösen?

            Danke

            Kommentar


            • #7
              Original geschrieben von fabs[NO]
              gibts noch andere Vorschläge?
              Ja, nur zwei Tabellen machen, eine für die User, und eine zweite für die Spiele, die jeder user besitzt. In die zweite Tabelle geht ausser der spielid auch die Beschreibung.

              Du würdest auf eine dritte Tabelle mit den Spielen verzichten, und musst sie dafür nicht verwalten.

              Das ist wie bei den Auktionen (ebay und dergleichen), wo es die Anbieter, und deren Angebote, gibt, aber keine dritte Tabelle zB für MP3-Player-Modelle (oder auch Spiele).

              Risiko ist natürlich , dass die Spiele uneinheitlich, mit Tippfehlern und so beschrieben werden. Vorteil ist dass man Spiele nicht separat erfassen und verwalten muss, bevor user angeben kann, dass er eines hat. Die 'dritte' Tabelle kann aus der zweiten mit SELECT UNIQUE.. simuliert werden, wenn eine Abfrage aller erfassten Spiele gefragt ist.

              Kommentar


              • #8
                Original geschrieben von fabs[NO]
                Soll man dieses "Problem" auch so lösen?
                "Ja", das damit gelöste Problem ist, dass Bilder in verschiedenen Galerien verschiedene Beschreibungen aufweisen können. obwohl die technischen Daten der Aufnahme dieselben sind.

                Kommentar


                • #9
                  Original geschrieben von heiss
                  Ja, nur zwei Tabellen machen, eine für die User, und eine zweite für die Spiele, die jeder user besitzt. In die zweite Tabelle geht ausser der spielid auch die Beschreibung.

                  Du würdest auf eine dritte Tabelle mit den Spielen verzichten, und musst sie dafür nicht verwalten.

                  Das ist wie bei den Auktionen (ebay und dergleichen), wo es die Anbieter, und deren Angebote, gibt, aber keine dritte Tabelle zB für MP3-Player-Modelle (oder auch Spiele).

                  Risiko ist natürlich , dass die Spiele uneinheitlich, mit Tippfehlern und so beschrieben werden. Vorteil ist dass man Spiele nicht separat erfassen und verwalten muss, bevor user angeben kann, dass er eines hat. Die 'dritte' Tabelle kann aus der zweiten mit SELECT UNIQUE.. simuliert werden, wenn eine Abfrage aller erfassten Spiele gefragt ist.
                  Das bedeute, dass für ein und das selbe Spiel immer und immer wieder ein kompletter Datensatz angelegt wird. Redundanz as fuck will ich mal sagen. Da würde eine dritte Tabelle schon weitaus performanter sein.

                  Spiele, die noch nicht eingetragen sind, kann man ja vom Benutzer eintragen lassen und ggf. redaktionell überprüfen.

                  Abgesehen davon stimmt dein eBay-Beispiel auch nicht so ganz (abgesehen davon, dass ich kaum glaube, dass du Einsicht in die Tabellenstruktur hast ). Videos/DVDs werden mit vordefinierten Daten bereits in der Datenbank vorgehalten. Und ich wette mit dir, dass ist nicht der einzige Produktbereich, wo so gearbeitet wird.

                  Kommentar


                  • #10
                    Original geschrieben von Happy Nihilist
                    Abgesehen davon stimmt dein eBay-Beispiel auch nicht so ganz (abgesehen davon, dass ich kaum glaube, dass du Einsicht in die Tabellenstruktur hast ).
                    Ja halbwegs richtig, ich bin nicht auf ebay sondern anderswo. Ich sehe einfach was angezeigt wird und wie man es bei 'anderswo' eingibt. Für ein Spieletauschsystem scheint mir die zweitabellenstruktur, als 'gibt es noch weitere Ideen' passend. Solange es nicht im ebay Umfang ist, aber erst werden wird.. ..wobei letzteres auch unter 'weitere Vorschläge' fällt!

                    Kommentar


                    • #11
                      Nochmals danke!

                      Diese 2-Tabellen Variante kann ich schonmal ausschließen, weil die Spiele in der Datenbank sowieso schon vorhanden sind und somit braucht man den Usern den Aufwand jedes Spiel einzeln einzutippen nicht aufdrängen.

                      Würde aber bei der Gallerie-Variante nicht sehr viele zusätzliche Daten anfallen wenn man es in dem oben geposteten Vorschlag löst.

                      Angenommen ich habe Bild 1, Bild 2, Bild 3 etc.

                      Tabelle Bilder

                      BID - Beschreibung
                      1 - Beschreibung zu Bild 1
                      2 - Beschreibung zu Bild 2
                      3 - Beschreibung zu Bild 3
                      4 - Beschreibung zu Bild 4
                      5 - Beschreibung zu Bild 5
                      6 - Beschreibung zu Bild 6
                      7 - Beschreibung zu Bild 7
                      8 - Beschreibung zu Bild 8


                      Tabelle Galerien

                      GID - Name
                      1 - Name 1
                      1 - Name 2


                      Tabelle VerbindungGalerieBilder

                      ID - BID - GID
                      1 - 1 - 1
                      2 - 2 - 1
                      3 - 3 - 1
                      4 - 4 - 1
                      5 - 5 - 2
                      6 - 6 - 2
                      7 - 7 - 2
                      8 - 8 - 2
                      9 - 1 - 2


                      Das Bedeutet ja das ich ca. für jedes Bild die doppelte Datensatzanzahl speichere?

                      Aber der Vorschlag klingt eigentlich sonst logisch, ich denke so werde ich es auch machen


                      ---------------

                      edit: wegen genau diesem Speicherplatz-Aufwand hätte ich ja die Idee gehabt das ganze in eine andere zwei-Tabellen-Lösung zu verpacken und die Bilder IDs gleich in die Tabelle Galerien hineinzuschreiben:

                      Tabelle Bilder
                      Tabelle Bilder

                      BID - Beschreibung
                      1 - Beschreibung zu Bild 1
                      2 - Beschreibung zu Bild 2
                      3 - Beschreibung zu Bild 3
                      4 - Beschreibung zu Bild 4
                      5 - Beschreibung zu Bild 5
                      6 - Beschreibung zu Bild 6
                      7 - Beschreibung zu Bild 7
                      8 - Beschreibung zu Bild 8


                      Tabelle Galerien

                      GID - Name - Bilder
                      1 - Name 1 - "1 2 3 4"
                      1 - Name 2 - "5 6 7 8 1"


                      und dann als erstes die Tabelle Galerien abrufen und die Kette mit explode zu zerteilen und nachher wieder mit Kommas getrennt zusammenzusetzen.
                      Die Bilder werden dann mit einer Abfrage von Tabelle Bilder mit der where BID IN (1,2,3,4) abgerufen ...

                      wäre ja auch eine Möglichkeit
                      Zuletzt geändert von fabs[NO]; 17.07.2006, 12:59.

                      Kommentar


                      • #12
                        gibt es noch Meinungen zu der 2. Variante?

                        Ich kann mich nämlich überhaupt nicht entschließen welche dass ich nehmen soll.

                        Kommentar

                        Lädt...
                        X