创建一个文章收藏表的mysql

下面是一个设计合理的 文章收藏表 (article_favorites) 的 MySQL 表结构,可以用于存储用户收藏文章的记录。


表结构设计

表名:article_favorites
CREATE TABLE `article_favorites` (
    `id` INT AUTO_INCREMENT PRIMARY KEY COMMENT '自增ID',
    `user_id` INT NOT NULL COMMENT '用户ID',
    `article_id` INT NOT NULL COMMENT '文章ID',
    `favorite_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '收藏时间',
    `status` TINYINT DEFAULT 1 COMMENT '收藏状态: 1=已收藏, 0=已取消',
    `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '记录创建时间',
    `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '记录更新时间',
    UNIQUE KEY `unique_user_article` (`user_id`, `article_id`) COMMENT '唯一索引: 防止重复收藏'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='文章收藏表';

字段说明

字段名类型描述
idINT自增主键,唯一标识每条记录。
user_idINT用户ID,表示收藏的用户。
article_idINT文章ID,表示被收藏的文章。
favorite_timeDATETIME收藏时间,记录用户点击收藏的具体时间。
statusTINYINT收藏状态:1 表示已收藏,0 表示已取消收藏。
create_timeDATETIME记录创建时间,用于记录初次操作的时间戳。
update_timeDATETIME记录更新时间,每次状态变化会自动更新。
unique_user_article索引唯一索引,防止同一个用户收藏同一篇文章多次。

关键点

  1. 收藏状态 (status)

    • 1 表示已收藏。
    • 0 表示取消收藏。
      用这个字段可以避免直接删除记录,方便后续做数据统计或恢复操作。
  2. 唯一索引

    • UNIQUE KEY \unique_user_article` (`user_id`, `article_id`)` 确保每个用户对每篇文章只能收藏一次。
  3. 自动更新时间 (update_time)

    • ON UPDATE CURRENT_TIMESTAMP 用于记录每次更新的时间,无需手动设置。
  4. 收藏时间 (favorite_time)

    • 独立字段记录用户收藏的具体时间,与 create_time 相区分,方便统计分析。
  5. 引擎和字符集

    • 使用 InnoDB 引擎支持事务。
    • 使用 utf8mb4 字符集,兼容特殊字符(如表情符号)。

示例操作

1. 插入收藏记录
INSERT INTO `article_favorites` (`user_id`, `article_id`, `favorite_time`)
VALUES (1, 123, NOW())
ON DUPLICATE KEY UPDATE `status` = 1, `favorite_time` = NOW();
2. 取消收藏
UPDATE `article_favorites`
SET `status` = 0, `update_time` = NOW()
WHERE `user_id` = 1 AND `article_id` = 123;
3. 查询用户已收藏的文章
SELECT a.*
FROM `skd_article` a
INNER JOIN `article_favorites` af ON a.id = af.article_id
WHERE af.user_id = 1 AND af.status = 1;

测试数据

添加收藏
INSERT INTO `article_favorites` (`user_id`, `article_id`) VALUES
(1, 101),
(1, 102),
(2, 103);
查询收藏记录
SELECT * FROM `article_favorites`;

适用场景

  • 文章收藏功能:用户收藏文章并可以随时查看或取消收藏。
  • 数据统计:统计每篇文章的收藏数量、用户收藏的文章列表等。
好的,我可以为您提供一个简单的关于帮助的MySQL数据库设计,包括以下: 1. 用户(user)- 存储用户信息,如用户名、密码、电子邮件等。 | 字段名称 | 数据类型 | 约束条件 | | -------- | ------------ | ------------------ | | user_id | INTEGER | PRIMARY KEY, AUTO_INCREMENT | | username | VARCHAR(255) | NOT NULL, UNIQUE | | password | VARCHAR(255) | NOT NULL | | email | VARCHAR(255) | NOT NULL | 2. 帮助主题(topic)- 存储帮助主题信息,如主题名称、创建时间等。 | 字段名称 | 数据类型 | 约束条件 | | ---------- | ------------ | ------------------ | | topic_id | INTEGER | PRIMARY KEY, AUTO_INCREMENT | | topic_name | VARCHAR(255) | NOT NULL | | created_at | TIMESTAMP | NOT NULL, DEFAULT CURRENT_TIMESTAMP | 3. 帮助文章(article)- 存储帮助文章信息,如文章标题、内容、创建时间等。 | 字段名称 | 数据类型 | 约束条件 | | ----------- | ------------ | ------------------ | | article_id | INTEGER | PRIMARY KEY, AUTO_INCREMENT | | topic_id | INTEGER | FOREIGN KEY (topic_id) REFERENCES topic(topic_id) | | title | VARCHAR(255) | NOT NULL | | content | TEXT | NOT NULL | | created_at | TIMESTAMP | NOT NULL, DEFAULT CURRENT_TIMESTAMP | | updated_at | TIMESTAMP | DEFAULT NULL | 4. 用户收藏(user_favorite)- 存储用户收藏的帮助文章信息。 | 字段名称 | 数据类型 | 约束条件 | | ----------- | ------------ | ------------------ | | favorite_id | INTEGER | PRIMARY KEY, AUTO_INCREMENT | | user_id | INTEGER | FOREIGN KEY (user_id) REFERENCES user(user_id) | | article_id | INTEGER | FOREIGN KEY (article_id) REFERENCES article(article_id) | 这是一个简单的关于帮助的MySQL数据库设计,您可以根据自己的具体需求进行修改和扩展。希望对您有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值