网站珍藏功效数据库设计:表结构与实现思绪

网站珍藏功效数据库设计:表结构与实现思绪
2026-09-07 07:19:12 三联生涯周刊 作者 加拿大矿企THEMAC资源公司股东批准Tulla Resources收购案 广东多地泛起强降雨 全省累计转移36127人 李梓萌 新浪网官方账号

用户珍藏功效怎么实现 ,焦点是建设一张“用户—内容”的关联纪录:用户点击珍藏后 ,前端把用户身份和目的内容提交给效劳端 ,效劳端写入珍藏关系;再次点击时删除这条关系。现实开发中还要处置惩罚登录校验、重复点击、作废珍藏、珍藏数目、并发请求和异;指 ,不可只依赖按钮状态完成。

先确定珍藏功效的营业规模

最先开发前 ,应先明确用户珍藏的工具是什么。工具可以是文章、商品、视频、课程、帖子或其他内容。若是系统未来可能支持多种内容 ,建议在珍藏关系中增添“工具类型”;若是始终只珍藏一种内容 ,则可以直接使用内容编号 ,结构会更简朴。

  • 登任命户珍藏:珍藏效果生涯在效劳端 ,用户换装备或重新登录后仍然可以审查。
  • 未登任命户珍藏:可以暂保存浏览器外地 ,但整理缓存、换装备或替换浏览器后可能丧失。
  • 珍藏夹分类:若是只需要“珍藏/作废珍藏” ,一张关系表即可;若是要建设多个珍藏夹 ,还需要珍藏夹表和珍藏夹内容关联表。

大大都内容平台首先实现登任命户的简单珍藏功效 ,后续再扩展分类、排序、备注和批量治理 ,能够镌汰初期开发和维护本钱。

珍藏功效需要哪些数据表

最基础的设计是建设用户表、内容表和用户珍藏关系表。珍藏关系表不应把多个内容编号拼接在用户表的某个字段中 ,不然难以盘问、统计和包管数据一致性。

珍藏关系表的常用字段
字段 用途
id 珍藏纪录自身的唯一编号
user_id 执行珍藏操作的用户编号
target_type 被珍藏工具的类型 ,可选字段
target_id 文章、商品或其他内容的编号
created_at 首次珍藏的时间 ,便于准时间排序

最主要的是为“用户编号、工具类型、工具编号”建设唯一约束。这样统一个用户对统一个内容重复点击时 ,数据库不会爆发多条珍藏纪录。若营业只有一种内容 ,则唯一约束可以简化为“user_id 加 target_id”。

珍藏和作废珍藏的接口怎么设计

接口可以接纳两种方法。第一种是划分提供珍藏和作废珍藏两个操作 ,语义清晰 ,适合需要严酷控制状态的系统;第二种是提供一个切换接口 ,由效劳端凭证目今状态决议新增照旧删除 ,前端挪用更简朴 ,但重复请求和并发场景需要特殊处置惩罚。

操作 效劳端处置惩罚 建议返回
盘问状态 判断目今用户是否保存对应珍藏纪录 是否已珍藏、珍藏数目
添加珍藏 校验用户和内容 ,按唯一关系新增纪录 最新状态和数目
作废珍藏 删除目今用户对应的珍藏纪录 最新状态和数目
珍藏列表 按用户盘问珍藏关系 ,再关联内容表 分页后的内容列表

效劳端不应直接相信前端传来的用户编号 ,而应从登录会话、令牌或效劳端认证上下文中取适目今用户。前端只提交目的内容编号 ,效劳端认真确认内容保存、状态正常且用户有权操作。

添加珍藏时怎样阻止重复纪录

仅在代码中先盘问“是否已经珍藏” ,再决议插入 ,并不可彻底阻止重复数据。两个请求可能同时盘问到“没有珍藏” ,随后同时执行插入。更稳妥的做法是把数据库唯一约束作为最后一道包管 ,并连系数据库的幂等写入能力。

  1. 吸收请求后 ,先校验用户身份、内容编号和内容是否保存。
  2. 实验新增珍藏关系。
  3. 若是纪录已经保存 ,将重复添加视为乐成 ,或者返回“已珍藏”状态 ,而不是让页面泛起系统过失。
  4. 作废珍藏时 ,删除匹配的用户和内容关系;纪录不保存时也可以返回未珍藏状态。
  5. 向前端返回效劳端确认后的最终状态 ,而不是只返回“操作已提交”。

若是一次操作还要更新内容的珍藏总数 ,新增关系、删除关系和数目更新应只管放在统一事务中。关于会见量较大的系统 ,也可以把总数作为缓存或冗余字段 ,但必需设计好失败重试和按期校正机制。

前端按钮应该怎样处置惩罚状态

页面至少要区分“未珍藏、已珍藏、提交中、操作失败”四种状态。未珍藏时显示珍藏入口 ,乐成后显示已珍藏或作废珍藏入口;请求发送时代应暂时禁用按钮 ,避免用户一连点击造成多个并发请求。

  • 登录判断:未登任命户点击时 ,先提醒登录;登录完成后可回到原内容页面继续操作。
  • 状态初始化:详情页加载时由效劳端返回目今用户的珍藏状态 ,不可只凭证浏览器缓存判断。
  • 失败回滚:若是使用“先改变按钮颜色 ,再期待接口”的乐观更新 ,请求失败后必需恢回复状态并给出提醒。
  • 数目显示:珍藏数应以效劳端返回值为准 ,阻止多个页面同时操作后泛起过失。
  • 避免误触:作废珍藏可以增添二次确认 ,尤其是珍藏内容具有较高使用价值时。

珍藏列表和数目盘问怎么做

珍藏列表通常通过珍藏关系表盘问 ,再关联内容表获取问题、封面、摘要和状态。列表要使用分页 ,不可一次读取某个用户的所有珍藏。排序方法可以按珍藏时间倒序 ,也可以让用户选择按内容更新时间或名称排序。

若是内容已删除、下架或用户失去会见权限 ,列表需要明确处置惩罚方法。常见做法是隐藏无效内容 ,同时保存珍藏关系;也可以显示“内容已不可用” ,允许用户手动移除。不要让无效关联导致整个珍藏列表盘问失败。

珍藏总数可以通过统计珍藏关系表实时盘算 ,适用于数据量较小的系统;数据量较大时 ,可以在内容表维护计数字段。维护计数时要避免重复增添或镌汰 ,最好凭证“新增关系乐成”和“删除关系乐成”这两个事实来更新 ,而不是凭证前端点击次数更新。

常见问题和排查顺序

点击后按钮没有转变

先检查浏览器是否真正发出了请求 ,再审查接口返回状态、登录信息和目的内容编号。若接口乐成但页面稳固 ,通常是前端没有使用返回的最新状态 ,或组件状态被重新加载逻辑笼罩。

刷新页面后珍藏消逝

重点检查珍藏是否只生涯在前端变量或外地存储中。登任命户的珍藏必需写入效劳端 ,并在页面初始化时按目今用户重新盘问;若是依赖缓存 ,还要确认缓存键包括用户身份和内容编号。

统一内容泛起多条珍藏纪录

检查数据库是否设置唯一约束 ,以及添加操作是否准确处置惩罚重复写入。整理历史重复数据后 ,再增补唯一索引;仅修改前端按钮通常无法解决这个问题。

珍藏数目禁绝确

划分核对珍藏关系现实数目、内容表中的计数字段缓和存值;挂觳樽鞣险洳厥笔欠裾娴纳境殖伞⒅馗辞肭笫欠裰馗醇邮 ,以及事务失败后是否留下了部分更新。

用户可以珍藏不保存或无权会见的内容

效劳端必需重新盘问目的内容 ,并校验内容状态和会见权限。不可由于前端页面展示了一个编号 ,就默认该编号正当;同时还要避免用户修改请求参数后操作其他用户的数据。

上线前至少测试这些场景

  • 未登录点击珍藏、登录后首次珍藏和重复珍藏。
  • 珍藏后刷新页面、退出登录后换账号审查珍藏状态。
  • 快速一连点击、网络超时、接口返回失败和重复提交。
  • 作废珍藏后重新珍藏 ,以及多个装备同时操作统一内容。
  • 内容被删除、下架或改为仅部分用户可见后的列表体现。
  • 珍藏数目抵达较大规模时的分页、排序和盘问速率。

因此 ,一个可靠的用户珍藏功效并不但是给按钮绑定点击事务 ,而是由“唯一的用户与内容关系、效劳端身份校验、幂等的数据写入、明确的前端状态和可恢复的异常处置惩罚”配合组成。先完成简单珍藏关系 ,再凭证现实需求扩展珍藏夹、标签和批量治理 ,通常是最稳妥的实现路径。

特殊声明:以上文章内容仅代表作者自己看法 ,不代表新浪网看法或态度。若有关于作品内容、版权或其它问题请于作品揭晓后的30日内与新浪网联系。
来自于:新浪网官方
网友谈论
男子好想来买111元零食复称仅64元,伙计退钱但拒绝致歉,零食店频仍泛起少称征象,袒露哪些问题?
时代电气:公司半导体产品中的功率组件、工业变流产品中的中央空调变流器可用于数据中心领域
分享到微博
宣布
最热谈论
最新谈论
暂无谈论

举报邮箱:[email protected]

Copyright ? 1996-2026 SINA Corporation

All Rights Reserved 新浪公司 版权所有