Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Помогите составить структуру БД
 
 автор: JIEXA   (12.08.2007 в 00:18)   письмо автору
 
 

Есть бд friends, структура:

friend_id     friend_user_id     friend_friend_id     friend_accept

friend_id уникальный индитификатор записи
friend_user_id ID юзера чей друг
friend_friend_id ID друга
friend_accept флаг Y или N (подтвержена дружба или нет)

К примеру юзер с ID 6 подал заявку на дружбу с юзером с ID 9 в БД добавляются две записи:

friend_id     friend_user_id     friend_friend_id     friend_accept
1               6               9               Y
2               9                6               N

первая запись добавляет друга к юзеру 6, а вторая к юзеру 9. Отличаются они только флагами. В первой записи естественно Y, так как человек сам пригласил юзера в друзья, а во второй записи N так как второй юзер ещё не подтвердил, что он на самом деле хочет дружить с юзером 6.

Вроде бы структура не плохая - думал я пока не дошел до момента, когда мне нужно вывести всех друзей юзера 6.
Сначало написал:
SELECT * FROM friends WHERE friend_user_id='6' friend_accept='Y'

А потом подумал, ё моё мне же надо выводить тех друзей, у кого тоже есть в друзьях юзер с ID 6 и тоже подтверждена дружба. Запрос я пока не знаю как такой построить, но че то мне расхотелось спрашивать как построить такой запрос, потому что он полюбому будет не очень быстрый, с условием того, что в таблице будет много записей. И решил вот спросить у форумчан, может у кого есть альтернативные варианты построения БД?

   
 
 автор: Trianon   (12.08.2007 в 01:17)   письмо автору
 
   для: JIEXA   (12.08.2007 в 00:18)
 

Ведите две таблицы.
Одну - с поданными заявками.
Другую - с акцептованными.
Тогда доп флажок не понадобится, и всё будет летать.

Касательно ё-моё, могу сказать, что дружба - отношение не транзитивное даже в реальной жизни, а уж тем более в датинг-системе.
Если Оля любит Васю, а Вася любит Водку, это еще не повод Оле тоже любить Водку.

   
 
 автор: JIEXA   (12.08.2007 в 02:14)   письмо автору
 
   для: Trianon   (12.08.2007 в 01:17)
 


Касательно ё-моё, могу сказать, что дружба - отношение не транзитивное даже в реальной жизни, а уж тем более в датинг-системе.
Если Оля любит Васю, а Вася любит Водку, это еще не повод Оле тоже любить Водку.

Вы меня не поняли, я не собираюсь выводить друзей друга. Ну вприцнипе я вашу идею понял, поэтому не буду стараться объяснить о чем я сказал )

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования