ugrás a tartalomhoz

Ismerősi kapcsolat tábla sql

Radon · Dec. 25. (Sze), 15.28
A kérdésem az, hogy az ismerősi kapcsolatokat hogy jobb tárolni adatbázisban.
1ik verzió:
Contacts tábla
-id
-sender_user_id
-receiver_user_id
-status (pending, friend)
-date

|gy ebből kiderül ki jelölt be kit, és a kapcsolat 1 sorban tárolódik. De ha bejegyzéseket akarom listázni, akkor nehézkes kétféle user_id alapján keresni, vagy sender, vagy receiver.

Másik verzió, nem is tudom, hogy ez jó e: 2 sorban minden kapcsolatot.

Contacts tábla
-id
-user_id
-other_user_id
-type(sender,receiver,friend)
-date.

Itt 1 bejelölésnél 2 sort ment, a 2 felhasználó felcserélve szerepel, és ha barátok, akkor mindkettőnél friend a type, így ha a bejegyzéseket kérem le másik táblából, akkor innen mindig csak a user_id-t kéri.
Ez használhatóbbnak tűnik, csak így duplázok mindig, ami nem hatékony.
Esetleg más lehetőség?
Köszi.
 
1

Mindenkeppen az elso

hunkris · Dec. 25. (Sze), 17.25
Mindenkeppen az elso megoldast valaszd, a masodik modszerrel a tablat inkonzisztens allapotba lehet hozni. Javaslom, hogy olvass utana az adatbazis normalizalasnak.

Ezen kivul meg ket javaslat:
Elso, legyen a sender es receiver id oszlopon unique index (a ketton egyutt). Igy nem tudod ketszer felvenni ugyanazt az embert baratnak.

Masik, hogy ugyanezt erdemes ellenorizni forditva is, tehat hogy uj rekord beillesztesekor letezik-e rekord, amiben a sender user receiverkent szerepel es vice versa. Ezt meg tudod oldani az insert lekerdezesben, triggerekkel es mas modszerekkel is.