Cum se utilizează MYSQL pentru a urmări preferințele utilizatorilor

Pentru site-uri precum Digg. Cum puteți utiliza MYSQL pentru a urmări când cineva îi place un articol?

Se pare destul de simplu să se țină evidența numărului total de plăceri. Partea pe care nu o înțeleg, este cum să 1. nu permiteți utilizatorilor să voteze doar despre ceva o singură dată și 2. permiteți utilizatorilor să facă clic pe profilul lor pentru a vedea povestirile pe care le-au plăcut.

Aveți o coloană în tabelul care conține informații despre poveste pe care tocmai le adăugați nume de utilizator separate prin virgulă? Ați putea urmări cine a plăcut o poveste, dar datele ar deveni uriașe, în special pentru site-uri precum digg care are 100.000 de utilizatori sau mai mult. Și cum ai permite utilizatorului să vadă toate poveștile pe care le-au plăcut?

Mulțumesc.

0

3 răspunsuri

Ai nevoie de un rând pentru fiecare. Nu utilizați liste separate prin virgulă.


cum să 1. păstrați utilizatorilor posibilitatea de a vota numai despre ceva o singură dată

Creați un index unic pe articleid, userid.


Și cum ai permite utilizatorului să vadă toate poveștile pe care le-au plăcut?

SELECT articleid FROM likes WHERE userid = 42

dar datele ar deveni uriașe

Da, ar putea deveni imens. Cele mai multe site-uri web vor fi cu ușurință capabile să facă față doar unei singure baze de date. Site-urile foarte mari vor trebui să utilizeze un cluster pentru stocarea datelor pe mai multe mașini. Datele trebuie să fie împărțite astfel încât aplicația să știe pe ce server să găsească datele.

1
adăugat

În rețeaua socială aceste zile sunt asemănătoare cu schema de date Graph. În cazul în care fiecare entitate, cum ar fi oameni, fotografii, video, actualizări de stare, comentarii etc., sunt noduri ale graficului și îi plac, se presupune că nu există conexiuni între două noduri.

în mod ideal, ați avea un tabel pentru "Likes" în care să adăugați doar un fel. unde ați putea stoca cei cărora li sa plăcut, ceea ce este plăcut în coloane și alte informații.

Rețelele sociale complexe fac mai mult decât acest lucru.

0
adăugat

Puteți să vă păstrați plăcurile într-o masă separată numită story_likes cu două coloane: story_id și user_id.

1) Puneți o constrângere în baza de date că combinația acestora ar trebui să fie unică. În acest fel, utilizatorul dvs. poate dori o poveste o singură dată 2) Puteți trage poveștile pe care utilizatorul le place de la acest tabel și puteți trage alte detalii despre poveste folosind id-ul de poveste pe care îl aveți. 100.000 de rânduri nu sunt atât de mari pentru o bază de date MYSQL.

De asemenea, puteți permite utilizatorilor să vă displace o poveste, având o coloană pentru state = ENUM ('LIKED', 'DISLIKED').

0
adăugat
MySQL - comunitatea Română
MySQL - comunitatea Română
19 participanți

Comunitatea română a programatorilor MySQL.