DB-Design für del.icio.us usermatch

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

  • DB-Design für del.icio.us usermatch

    Ich arbeite an einem Usermatch für del.icio.us (inoffiziell, nur zur Übung). Dabei habe ich Tabellen, um die User zu speichern, die Links, die diese in ihren Bookmarks haben, und die Tags, mit welchen sie die Links gekennzeichnet haben:
    Code:
    users
    -----
    id
    name
    
    links
    -----
    id
    url
    
    tags
    ----
    id
    name
    
    users_tags
    ----------
    user_id
    tag_id
    
    tags_links
    ----------
    tag_id
    link_id
    Die drei ersten Tabellen verbinde ich mit den zwei Zwischentabellen users_tags und tags_links. Mit Hilfe von Joins kann ich dann die Links mit zugehörigen Tags eines Benutzers rausholen.
    Nun möchte ich den Benutzern die Möglichkeit bieten, andere Benutzer mit einem ähnlichen Geschmack zu finden (also solche, die dieselben Tags ähnlich oft mal gebraucht haben). Was ich nun suche, sind DB-Kniffe, wie man dies besonders effizient umsetzen könnte.

    Ein erster Ansatz von mir war, die users_tags Zwischentabelle um die Anzahl der Verwendung zu erweitern.
    Code:
    users_tags
    ----------
    user_id
    tag_id
    count
    Schliesslich kann man mehrere Links mit demselben Tag bezeichnen. Dann hätte ich einfach einen Join mit den Tabellen users und users_tags gemacht, und dann mit serverseitigen Skriptsprachen die Tagprofile der anderen Usern mit dem des aktuellen verglichen.
    Leider führt das schnell zu riesigen Datenmengen.

    Eine zweite Idee war, eine weitere Tabelle der folgenden Art einzuführen:
    Code:
    toptags
    -------
    playerid
    tag1id
    tag2id
    tag3id
    Diese Tabelle würde die User mitsamt ihren meistbenutzten Tags enthalten (tag1id bis tagxid...vielleicht top3 oder top10). Diese Tabelle könnte man nun leicht sortieren, und dann einfach die 5 vorhergehenden und die 5 nachfolgenden des aktuellen Benutzers nehmen, um z.B. die 10 "Nachbarn" zu finden.

    Vielleicht hat jemand noch weitere Ideen? Oder gibt es eventuell einen formellen Ansatz, wie man Elemente in "n zu n" Beziehungen miteinander vergleichen kann?

  • #2
    Ist die Frage zu schlecht formuliert? Zu schwierig? Soll ich ein Entity-Relationship Diagramm posten?

    Kommentar

    Lädt...
    X