首页 > 数据库 >创建一个文章收藏表的mysql

创建一个文章收藏表的mysql

时间:2024-11-16 10:14:11浏览次数:3  
标签:COMMENT 创建 time 收藏 user mysql article id

下面是一个设计合理的 文章收藏表 (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`;

适用场景

  • 文章收藏功能:用户收藏文章并可以随时查看或取消收藏。
  • 数据统计:统计每篇文章的收藏数量、用户收藏的文章列表等。

标签:COMMENT,创建,time,收藏,user,mysql,article,id
From: https://blog.csdn.net/weixin_44303625/article/details/143813356

相关文章

  • php开源短视频源码,如何快速修改MySQL的表结构?
    php开源短视频源码,如何快速修改MySQL的表结构?修改表修改MySQL的表结构修改数据库编码格式alterdatabase<数据库名>charactersetutf8mb4; 修改表的编码altertable<表名>charactersetutf8; 修改表的列名#altertable表名changecolum......
  • MiniShopping-mysql数据库
    CREATEDATABASEMiniShopping;USEMiniShopping;CREATETABLEadministrators(idINTUNSIGNEDPRIMARYKEYAUTO_INCREMENTCOMMENT'ID',passwordVARCHAR(256)COMMENT'密码',create_timeDATETIMENOTNULLCOMMENT'创建时间',update_tim......
  • Linux系统-redis集群、nacos、nginx、keepalived、mysql开机自启
    一、Redis集群开机自启:如三主三从交叉式redis集群,有两个方法,自行选择。方法一:第一步:分别在各节点添加以下redis.service文件命令:vim/lib/systemd/system/redis_6379.service添加:[Unit]Description=Redispersistentkey-valuedatabaseAfter=network.targetAfter=......
  • 基于Java+SSM+JSP+MYSQL实现的宠物领养收养管理系统功能设计与实现二
    一、前言介绍:免费学习:猿来入此1.1项目摘要随着人们生活水平的提高,宠物已经成为越来越多家庭的重要成员。然而,宠物的数量增长也带来了一系列问题,如流浪宠物数量的增加、宠物健康管理的缺失以及宠物领养收养信息的不透明等。这些问题不仅影响了宠物的生存状况,也给社会带来了一定......
  • 基于Java+SSM+JSP+MYSQL实现的宠物领养收养管理系统功能设计与实现一
    一、前言介绍:免费学习:猿来入此1.1项目摘要随着人们生活水平的提高,宠物已经成为越来越多家庭的重要成员。然而,宠物的数量增长也带来了一系列问题,如流浪宠物数量的增加、宠物健康管理的缺失以及宠物领养收养信息的不透明等。这些问题不仅影响了宠物的生存状况,也给社会带来了一定......
  • 百度地图、高德地图收藏夹位置信息导出小工具分享
    很多人在地图应用中收藏了很多的位置,但是一旦想要更换地图软件时,就会遇到地图软件里面收藏的位置信息没办法导出的问题。经实际使用发现目前高德地图、百度地图都没有提供收藏夹位置导出的功能。看到贴吧、小红书很多网友在咨询如何将百度地图、高德地图中收藏的位置信息导出,网......
  • SqlSugarClient 代码优先建表, 根据给定的实体类,创建SQL语句, 之后创建MySQL表
    usingSqlSugar;usingSystem;usingSystem.Collections.Generic;usingSystem.Reflection;usingSystem.Text;namespaceDDD{///<summary>//////SqlSugarClient代码优先建表///根据给定的实体类,创建SQL语句,之后创建MySQL表//////......
  • CSS入门(主要讲解选择器,CSS的创建,背景,文本)
    一.理解id和class选择器id选择器CSS中id选择器以"#"来定义。以下的样式规则应用于元素属性id="para1":#para1{text-align:center;color:red;}注意:ID属性不要以数字开头,数字开头的ID在Mozilla/Firefox浏览器中不起作用。class选择器class选择器在......
  • 27. 使用MySQL之全球化和本地化
    1.字符集和校对顺序数据库表被用来存储和检索数据。不同的语言和字符集需要以不同的方式存储和检索。因此,MySQL需要适应不同的字符集(不同的字母和字符),适应不同的排序和检索数据的方法。在讨论多种语言和字符集时,将会遇到以下重要术语:字符集为字母和符号的集合;编码为某个......
  • MySQL:CRUD
    MySQL表的增删改查(操作的是表中的记录)CRUD(增删改查)C-Create新增R-Retrieve检查,查询U-Update更新D-Delete删除新增(Create)语法:单行数据+全列插入 insertinto表名[字段一,字段二]values(值一,值二); 通过看表的结果,我们可以看出内容已经写好注:列和值的数据类型一定要......