Система за приятели

metal_head

Registered
Оказва се, че или не мога да ползвам търсачката, или наистина никой не е питал във форумите за подобно нещо. Решил съм да направя система за приятели, като тази във Vbox например (друг пример, за който се сещам е facebook). Проблема е, че не съм съвсем сигурен как да подходя.

Ще ви кажа моя метод, който съм измислил, а вие ми кажете дали това е добра идея.

Идеята ми е да имам една отделна таблица, която да има 2 полета (дори id не й трябва може би)

Тези две полета ще са примерно: user и friend. Когато usr1 добави в приятели usr2, в таблицата ще се добавя едно ентри, което ще гласи: user-usr1 friend-usr2. Когато usr2 откликне на приятелството, в таблицата ще се появява ново ентри, което ще гласи user-usr2 friend-usr1.

Добра идея ли е това или има и по-ефективни начини?
 
id ще ти трябва при всяко положение.
идеята е друга.
една таблица заявки с полета user1 user2 и таблица приятели с полета user1 и user2.
проверяваш ако има заявка до user2 и той като приеме , записа от заявки се изтрива и се добавя запис в таблицата приятели. ;)
 
proba каза:
id ще ти трябва при всяко положение.
идеята е друга.
една таблица заявки с полета user1 user2 и таблица приятели с полета user1 и user2.
проверяваш ако има заявка до user2 и той като приеме , записа от заявки се изтрива и се добавя запис в таблицата приятели. ;)
А не може ли една таблица, която просто да има още една колона confirm, например? Стойността на confirm ще бъде 0 по подразбиране, а ако поканата бъде потвърдена само ще се смени на 1. :wink:
 
Когато usr1 добави в приятели usr2, в таблицата ще се добавя едно ентри, което ще гласи: user-usr1 friend-usr2. Когато usr2 откликне на приятелството, в таблицата ще се появява ново ентри, което ще гласи user-usr2 friend-usr1.

Ами моята идея с това беше да имам просто две заявки, които са огледални. Ако ги имаме и двете, тогава са приятели.

Проблема е, че когато се създаде приятелство, ние имаме примерно две колони - потребител 1 е приятел с потребител 2
Проблема е, че така намираме само приятелите на потребител 1, ако пуснем заявка, тъй като в таблицата едното поле е името на потребителя, към когото заявката се обръща (WHERE user='потребител 1'), а другото поле взима приятелите му. Затова, ако искам на другия потребител да взема приятелите, той също ще трябва да има един ред, в който пише неговото име и друг, в който пише потребител 1. Може би е малко объркващо по начина, по който го обяснявам, но в момента мисловният ми процес е малко ограничен :D

А не може ли една таблица, която просто да има още една колона confirm, например? Стойността на confirm ще бъде 0 по подразбиране, а ако поканата бъде потвърдена само ще се смени на 1
Това най - ми харесва, и ще използвам OR при търсенето на приятелите.
 

Back
Горе