首页 >

mysql怎么设计好友关系表 |mysql关联查询原理

mysql实体模型,excel与mysql实战,ubuntu上如何使用mysql,MySQL给值加单位,mysql备份的脚本,mysql关联查询原理mysql怎么设计好友关系表 |mysql关联查询原理

1. 表结构的设计:
大家可以设计一张表,用于存储用户的好友关系。该表可以包含以下字段:

  • user_id: 用户ID
  • friend_id: 好友ID
  • status: 好友关系状态(例如:已成为好友、待确认、拒绝等)
  • created_at: 创建时间
  • updated_at: 修改时间
其中,user_id和friend_id都是外键,关联到用户表的ID字段。
使用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);

除此之外,大家还可以通过其他方式来提高性能,例如:缓存、分库、分表等。


  • 暂无相关文章