|
|
|
Юзеры - Друзья. Какая связь?
|
|||
|---|---|---|---|
|
#18+
чёрт... я начинаю запутываться. О_о ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.05.2008, 16:01 |
|
||
|
Юзеры - Друзья. Какая связь?
|
|||
|---|---|---|---|
|
#18+
2 Сергей Васкецов Вот интересная у Вас ситуация получается. Все связи оказываются однонаправленными. Действительно в некотором виде это можно и так рассматривать. А вот возьмем например половых партнеров. Будем вести базу тех, кто с кем спал. Не получится ли так, что я .. с этой девушкой имел связь а она об этом .. не знает?... Если вы будете настаивать на том что можно юзеров поделить по половому признаку, типа - трахавшие и трахнутые... то ... как быть с голубыми. Вобщем контрпримеров много можно привести. Вывод - шаблоны хорошо, но подход должен быть индивидуальным. Типа советую еще раз подумать)))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.05.2008, 16:33 |
|
||
|
Юзеры - Друзья. Какая связь?
|
|||
|---|---|---|---|
|
#18+
Короче - графы бывают как ориентированные, так и неориентированные. И, возможно, смешанные. Типа это азбука. Определитесь с типом графа, и все станет на свои места. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.05.2008, 16:37 |
|
||
|
Юзеры - Друзья. Какая связь?
|
|||
|---|---|---|---|
|
#18+
gardenmanНе получится ли так, что я .. с этой девушкой имел связь а она об этом .. не знает?... Вы путаете наличие связи и ее трактовку. В приципе, и процитированное в жизни может быть. gardenmanможно юзеров поделить по половому признаку Это еще тут зачем? gardenmanВобщем контрпримеров много можно привести Вы готовы привести хотя бы один приличный контрпример, когда связь, которая не может быть однонаправленной, обязательно хранить в БД как двунаправленную? Буквально так. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.05.2008, 16:38 |
|
||
|
Юзеры - Друзья. Какая связь?
|
|||
|---|---|---|---|
|
#18+
да мне вот нужно как раз таки разобраться с друзьями. и как организовать эти связи ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.05.2008, 16:38 |
|
||
|
Юзеры - Друзья. Какая связь?
|
|||
|---|---|---|---|
|
#18+
чуть запоздал. сорри. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.05.2008, 16:39 |
|
||
|
Юзеры - Друзья. Какая связь?
|
|||
|---|---|---|---|
|
#18+
gardenmanВсе связи оказываются однонаправленными В БД - да. Размножить запись и сделать "встречную" можно всегда. Обратное неверно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.05.2008, 16:43 |
|
||
|
Юзеры - Друзья. Какая связь?
|
|||
|---|---|---|---|
|
#18+
Сергей Васкецов gardenmanВобщем контрпримеров много можно привести Вы готовы привести хотя бы один приличный контрпример, когда связь, которая не может быть однонаправленной, обязательно хранить в БД как двунаправленную? Буквально так. Пример: Сидели за одной партой.... Ели из одной тарелки.... конечно можно ввести такую таблицу как "Тарелки" или "Парты")).. но мы ведь до этого маразма не дойдем, правда? Друг - это такая личность которая знает что он друг и согласен с этим своим статусом и причем обратное тоже верно) такая вот дружба бывает. Правда редко. Впрочем мысль... Если два FOREIGN KEY настроить на PRIMARY KEY, таким образом чтобы дважды нельзя было ввести пару | 0001 | 0002 |? Т.е. если | 0001 | 0002 | есть , то | 0002 | 0001 | уже получает отлуп))) Подумайте, прикольно ведь... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.05.2008, 17:11 |
|
||
|
Юзеры - Друзья. Какая связь?
|
|||
|---|---|---|---|
|
#18+
gardenmanПодумайте, прикольно ведь... ну в принципе да... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.05.2008, 18:03 |
|
||
|
Юзеры - Друзья. Какая связь?
|
|||
|---|---|---|---|
|
#18+
man.without.face gardenmanПодумайте, прикольно ведь... ну в принципе да... Попробовал. Не получается.) Ну да ладно...~~~ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.05.2008, 18:30 |
|
||
|
Юзеры - Друзья. Какая связь?
|
|||
|---|---|---|---|
|
#18+
gardenman man.without.face gardenmanПодумайте, прикольно ведь... ну в принципе да... Попробовал. Не получается.) Ну да ладно...~~~ Блин. Это фигово. Так и придётся что ли дважды ввести пару | 0001 | 0002 |.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.05.2008, 18:32 |
|
||
|
Юзеры - Друзья. Какая связь?
|
|||
|---|---|---|---|
|
#18+
man.without.face gardenman man.without.face gardenmanПодумайте, прикольно ведь... ну в принципе да... Попробовал. Не получается.) Ну да ладно...~~~ Блин. Это фигово. Так и придётся что ли дважды ввести пару | 0001 | 0002 |.... Повесь триггер. Пусть проверяет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.05.2008, 18:48 |
|
||
|
Юзеры - Друзья. Какая связь?
|
|||
|---|---|---|---|
|
#18+
Или триггер AFTER INSERT путь добавляет симметричную пару. А также триггер AFTER DELETE пусть удаляет что нужно) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.05.2008, 18:49 |
|
||
|
Юзеры - Друзья. Какая связь?
|
|||
|---|---|---|---|
|
#18+
да это можно и руками.... хотя триггер будет работать на уровне базы, поэтому собственно произодительность должна быть выше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.05.2008, 18:53 |
|
||
|
Юзеры - Друзья. Какая связь?
|
|||
|---|---|---|---|
|
#18+
Решили социальную сеть написать? Надо было начинать год назад, сейчас были бы на коне. Есть вариант проще, без симметричных пар. 1. Когда юзер 1 посылает юзеру 2 предложение дружить, оно повисает в специальной табличке wannabe_friends в виде |1|2|. 2. Если юзер 2 принимает предложение юзера 1, точно такая же запись создаётся в таблице friends, а если нет, значит, нет. В любом случае, запись из wannabe_friends удаляется. 3. Вместо этого юзер 2 может послать юзеру 1 встречное предложение. Перед тем, как помещать в wannabe_friends запись |1|2|, надо проверить, нет ли там уже записи |2|1|. Если она есть, такую же запись |2|1| надо создать в friends, а из wannabe_friends сбросить. Как получить всех друзей юзера? Код: plaintext 1. 2. 3. Как получить всех друзей друзей юзера? Код: plaintext 1. 2. 3. Как получить всех друзей друзей друзей юзера? Код: plaintext 1. 2. 3. Т.е. фактически так же. Можно написать рекурсивную хранимку, которая вызывает сама себя столько раз, сколько уровней друзей нужно найти, а на самом глубоком уровне выполняет первый из показанных запросов. ЗЫ: В этой модели ничто не мешает юзеру дружить с самим собой. Хотя программный код (не SQL), который будет рекурсивно обходить список друзей юзера, может от этого и вывалиться. ЗЫЗЫ: Я не профессиональный SQLщик, просто балуюсь. Все советы предоставлены AS IS, без каких-либо гарантий, даже без подразумеваемой гарантии того, что предоставленные запросы будут работать и что-либо делать. Я снимаю с себя всякую ответственность за любой ущерб, причинённый кому-либо в результате следования предоставленным советам. Читая даный пост, Вы автоматически принимаете условия данного лицензионного соглашения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.05.2008, 01:05 |
|
||
|
Юзеры - Друзья. Какая связь?
|
|||
|---|---|---|---|
|
#18+
ЗЫЗЫЗЫ: Пункт 3 следует читать так: 3. Вместо этого юзер 2 может послать юзеру 1 встречное предложение. Перед тем, как помещать в wannabe_friends запись |1|2|, надо проверить, нет ли там уже записи |2|1|. Если она есть, запись |1|2| в wannabe_friends создавать не надо. Вместо этого запись |2|1| надо создать в friends, а из wannabe_friends сбросить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.05.2008, 01:08 |
|
||
|
Юзеры - Друзья. Какая связь?
|
|||
|---|---|---|---|
|
#18+
Ладно. Не мучтесь. В правильном решении должно быть три таблицы. 1) Люди 2) Дружбы 3) Связи между дружбами и людьми Код: plaintext 1. 2. 3. 4. 5. Код: plaintext 1. 2. 3. 4. 5. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. В такой струтуре можно дружить не только по двое, но и одномуЮ и по три , ит.д) На самом деле это паттерн. Прсто надо знать как такое делается. Есть еще задачи аналогичные этой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.05.2008, 02:52 |
|
||
|
Юзеры - Друзья. Какая связь?
|
|||
|---|---|---|---|
|
#18+
HryuckinnenРешили социальную сеть написать? Надо было начинать год назад, сейчас были бы на коне. Решили. :) Только аналогов не имеет ни одна социальная сеть. ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.05.2008, 10:50 |
|
||
|
Юзеры - Друзья. Какая связь?
|
|||
|---|---|---|---|
|
#18+
gardenmanНа самом деле это паттерн. Прсто надо знать как такое делается. Есть еще задачи аналогичные этой. Я не проектировщик или не БДшник, поэтому паттернов, о которых вы говорите - не знаю. Я программист, просто надо... Спасибо вам, gardenman , большое. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.05.2008, 11:06 |
|
||
|
Юзеры - Друзья. Какая связь?
|
|||
|---|---|---|---|
|
#18+
gardenmanПример: Сидели за одной партой.... Ели из одной тарелки.... Ошибаетесь. Некто А утверждает, что "мы сидели с Б за одной партой". В свою очередь Б утверждает, что "мы не сидели с А за одной партой". Оба имеют право на подобные высказывания. Связи - суть высказывания, у них есть автор. Вы же фактически утверждаете, что отношение лиц, участвующих в связи, к этой связи может быть только одинаковым, что неверно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2008, 14:01 |
|
||
|
Юзеры - Друзья. Какая связь?
|
|||
|---|---|---|---|
|
#18+
gardenmanЛадно. Не мучтесь. В правильном решении должно быть три таблицы Это уже клуб по интересам, а не дружба. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2008, 14:02 |
|
||
|
Юзеры - Друзья. Какая связь?
|
|||
|---|---|---|---|
|
#18+
Тут вожможно 2 вида связи 1. Друзья пользователя не тоже самое что и в "друзьях у" по аналогии с ЖЖ 2. Друзья пользователя - тоже самое что и в "друзьях у" по аналогии с "одноклассниками" 1. USER_ID | FRIEND_ID 2. USER_ID1 | USER_ID2 столбцы равнозначны, тоесть 1110001 | 1110002 то же что и 1110002 | 1110001 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2008, 20:14 |
|
||
|
Юзеры - Друзья. Какая связь?
|
|||
|---|---|---|---|
|
#18+
так какое решение правильное? =) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2008, 17:55 |
|
||
|
Юзеры - Друзья. Какая связь?
|
|||
|---|---|---|---|
|
#18+
Кто то сказал завести отдельную таблицу.. Вы что с ума сошли? этож очень долго и нудно.. нет я бы так не сделал.. Вот вы совет дали! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2008, 18:56 |
|
||
|
Юзеры - Друзья. Какая связь?
|
|||
|---|---|---|---|
|
#18+
я сделал в итоге так: ======================================= friends - список друзей пользователя. ---------------------------------------------------------------------- ID - ... userID - сам пользователь (ID) friendID - ID друга. ======================================= friends_flags - пользователи, ещё не подтвердившие дружбу, сначала попадают в эту таблицу. ---------------------------------------------------------------------- ID - ... userID - сам пользователь (ID) friendID - ID друга. flag - если false, то пользователь ещё не подтвердил дружбу. если true, то пользователь удаляется из данной таблицы и попадает в таблицу friends, как друг. ======================================= ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2008, 18:58 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=35303252&tid=1543740]: |
0ms |
get settings: |
10ms |
get forum list: |
21ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
170ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
60ms |
get tp. blocked users: |
1ms |
| others: | 219ms |
| total: | 498ms |

| 0 / 0 |
