Я создал сайт, на котором люди могут создавать профиль. Но я пытаюсь выяснить, как начать создавать кнопку добавления друзей, чтобы пользователи могли иметь друзей.
В моей таблице пользователя у меня есть user_id, first_name, last_name, email и т. Д.
Должен ли я каким-либо образом связать user_id пользователя и друга в таблице друзей?
Я новичок в программировании, поэтому эти вещи все еще новы для меня. Благодаря!
Ну, давайте попробуем сохранить это просто. По сути, вы пытаетесь найти способ подключения двух пользователей.
Поскольку я стараюсь держать вещи простыми и определенно не подразумевая, что это лучший способ сделать это, я думаю, что самый простой способ сделать это – создать новую таблицу (users_friends) со следующими полями: (user_id ) и (friend_id).
Ну, скажем, мой user_id равен 5. Ваш user_id равен 10.
Я хочу добавить вас в качестве моего друга, поэтому добавлю запись в эту вновь созданную таблицу со следующими значениями: user_id = 5, friend_id = 10.
Итак, допустим, вы хотите отобразить всех моих друзей, вы можете запустить такой запрос, как:
SELECT * FROM `users` WHERE `user_id` IN ( SELECT `friend_id` FROM `users_friends` WHERE `user_id` = '5' );
Конечно же, удалить друга легко, все, что вам нужно сделать, это удалить запись из недавно созданной таблицы …
DELETE FROM `users_friends` WHERE `user_id` = '5' AND `friend_id` = '10';
И пуф, ты вдруг не мой друг больше;)
Так что да, это основы. Я бы попробовал это решение, прежде чем переходить к решению, которое позволит вам больше гибкости.
что-то вроде этого:
create table users( user_id int unsigned not null auto_increment primary key, username varbinary(32) not null )engine=innodb; create table user_friends( user_id int unsigned not null, friend_user_id int unsigned not null, primary key (user_id, friend_user_id) )engine=innodb;
для отображения набора друзей пользователя:
select u.* from user_friends uf inner join users u on uf.friend_user_id = u.user_id where uf.user_id = 1;
Чтобы дополнить f00 и Isaac, ответьте: