Тема: Діалоги / 2 користувача
Привіт.
Раніше не звертав уваги на подібне, писав як є, а зараз вирішив запитати вашої думки.
Щоб все стало зрозуміло, є подібна "пошта" для користувачів, щось типу:
http://replace.org.ua/pun_pm/inbox/
Потрібно якнайкраще з'єднати двох користувачів в "діалог".
Таблиця users:
id | name
Таблиця dialogs:
id | first_user | second_user
first_user - той хто "додає" діалог, second_user - той, кого додають. Це ID користувачів.
В даному випадку перестановка хто додав і кого додали неважлива.
Допустимо я авторизований з id 1, то..
SELECT
u.name as username,
u.id as to_id
FROM
users u
LEFT JOIN
dialogs d
ON u.id = IF(d.first_user = 1, d.second_user, d.first_user)
WHERE
d.first_user = 1
OR d.second_user = 1
Тобто на 1 діалог - 1 запис в БД.
Але є ще один варіант, коли той хто створює діалог, робить в БД відразу два записи, типу (мій id 1, а співрозмовника - 2):
Таблиця dialogs:
id | first_user | second_user
1 | 1 | 2
2 | 2 | 1
Такий варіант зпростить сам запит, оскільки я буду робити вибірку тільки по second_user (діалоги зі мною) + не треба буде IF'ів.
Але збільшить кількість записів в таблиці в два рази.
Що скажете на рахунок кожного?