1. 表结构的设计:
大家可以设计一张表,用于存储用户的好友关系。该表可以包含以下字段:
- user_id: 用户ID
- friend_id: 好友ID
- status: 好友关系状态(例如:已成为好友、待确认、拒绝等)
- created_at: 创建时间
- updated_at: 修改时间
使用SQL语句创建该表:
CREATE TABLE friends ( id INT(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY, user_id INT(11) UNSIGNED, friend_id INT(11) UNSIGNED, status TINYINT(1) NOT NULL DEFAULT 0, created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP NULL DEFAULT NULL, INDEX (user_id), INDEX (friend_id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
2. 数据的存储和查询:
大家可以通过以下 SQL 语句来实现:
-- 添加好友 INSERT INTO friends (user_id, friend_id, status) VALUES (1, 2, 0); -- 获取好友列表 SELECT friends.id, users.username FROM friends INNER JOIN users ON friends.friend_id = users.id WHERE friends.user_id = 1 AND friends.status = 1; -- 更新好友关系状态 UPDATE friends SET status = 1 WHERE user_id = 1 AND friend_id = 2; -- 删除好友关系 DELETE FROM friends WHERE user_id = 1 AND friend_id = 2;
3. 性能的优化:
在好友关系表中,大家通常需要保证数据的查询效率。可以考虑在 user_id 和 friend_id 字段上分别创建索引,这样可以加快查询的速度。
CREATE INDEX idx_user_id ON friends (user_id); CREATE INDEX idx_friend_id ON friends (friend_id);
除此之外,大家还可以通过其他方式来提高性能,例如:缓存、分库、分表等。