网站珍藏功效设计计划:从交互到故障处置惩罚

网站珍藏功效设计计划:从交互到故障处置惩罚
2026-09-06 17:37:53 宣讲家 作者 暴涨500%的工业富联,散户高位站岗了? 亚辉龙:控股股东及高管拟合计减持不凌驾3.11%股份 袁莉 新浪网官方账号

网站珍藏功效数据库设计的焦点,是把“谁珍藏了哪个网站、网站有哪些信息、珍藏属于哪个分类、是否添加标签以及何时操作”生涯清晰。一个适用的珍藏网站不应只建设一张用户表和一张网址表,而应区分用户、珍藏纪录、分类目录、标签和操作状态。这样既能支持基础珍藏,也便于后续扩展搜索、排序、作废珍藏、果真分享等功效。

先明确珍藏功效中的数据关系

在营业上,用户与网站通常是多对多关系:一个用户可以珍藏多个网站,一个网站也可能被多个用户珍藏。因此,不可简朴地在网站表中增添一个 user_id,也不宜直接把多个用户编号生涯到一个字段里。

更合理的做法是将“网站信息”和“用户珍藏行为”拆开。网站信息用于生涯问题、网址、形貌等相对稳固的内容 ;珍藏纪任命于体现某个用户珍藏了该网站,并生涯珍藏时间、备注、分类和状态。

  • 用户表:生涯用户账号、身份和基础状态。
  • 网站表:生涯网站名称、标准网址、形貌等目的信息。
  • 珍藏表:毗连用户与网站,是珍藏功效的焦点营业表。
  • 分类表:生涯“开发工具”“设计资源”“学习资料”等目录。
  • 标签表:用于更无邪地形貌珍藏内容,例如 PHP、前端、文档。

焦点表怎样设计

若是系统只效劳于单个用户,可以将珍藏纪录直接作为主要营业表 ;若是保存注册、登录和多用户珍藏,则建议接纳用户表、网站表和珍藏表三层结构。下面的字段是常见设计,现实项目可以凭证营业规模取舍。

网站珍藏功效的焦点数据表
数据表 要害字段 主要作用
users id、username、status、created_at 生涯用户及账号状态
websites id、title、url、normalized_url、description 生涯网站的基础信息
user_bookmarks id、user_id、website_id、note、is_starred、created_at 纪任命户是否珍藏及珍藏属性
bookmark_folders id、user_id、name、parent_id、sort_order 生涯用户的分类目录
tags id、user_id、name 生涯用户可重复使用的标签
bookmark_tags bookmark_id、tag_id 建设珍藏与标签的多对多关系

用户表与网站表

用户表的主键一样平常使用自增整数或具有唯一性的字符串标识。用户名、邮箱等登录字段需要设置唯一约束,账号状态可以使用正常、禁用等营业值。

网站表中的 url 生涯原始地点,normalized_url 生涯经由统一处置惩罚后的地点。两者同时保存有助于展收户输入的原始网址,也便于去重。标准化时可以统一协议、域名巨细写和末尾斜杠规则,可是否去除盘问参数需要连系营业判断,由于部分盘问参数可能代表差别页面或推广泉源。

网站问题可以由用户填写,也可以在提交后由系统实验获 ;在无法获取页面信息时,问题仍应允许为空或使用用户自界说内容。图标、封面、页面摘要属于可选信息,不宜作为珍藏纪录能否建设的须要条件。

珍藏表是功效的中心

user_bookmarks 表应至少包括 user_id、website_id 和 created_at。用户点击“珍藏”时建设一条纪录,点击“作废珍藏”时可以物理删除,也可以使用 deleted_at 举行软删除。选择软删除时,重复珍藏前要明确处置惩罚规则:是恢回复纪录,照旧建设新的珍藏纪录,不可让唯一约束与营业逻辑相互冲突。

常用的扩展字段包括 note、is_starred、is_archived、last_viewed_at 和 updated_at。note 用于生涯用户对网站的小我私家备注 ;is_starred 可以支持“特殊关注”或“置顶”状态 ;last_viewed_at 可用于“最近会见”排序。若系统只需要通俗珍藏,不要为尚未使用的状态设计过多字段。

在统一用户不可重复珍藏统一网站的条件下,可对 user_id 与 website_id 建设联合唯一约束。若营业允许统一个网址泛起在多个目录中,不要在珍藏表中直接只生涯一个 folder_id,而应增添 bookmark_folder_relations 关系表。这样一条珍藏可以同时放入多个分类,分类移动和批量整理也更无邪。

分类和标签应该怎样区分

分类通常体现稳固的层级目录,例如“事情资料”下面有“后端开发”和“数据库” ;标签则体现横向特征,例如一个网站同时具有“免费”“API”“教程”等属性。两者肩负的作用差别,不建议用一张表混淆实现。

bookmark_folders 可以通过 parent_id 实现树状目录。顶级分类的 parent_id 为空,子分类生涯父分类编号。建设、修改分类时,应检查分类是否属于目今用户,并阻止把分类移动到自身或自己的子分类下。sort_order 可用于生涯用户自界说的目录顺序。

标签通常是用户级数据,因此 tags 表中可以设置 user_id 与 name 的联合唯一约束,阻止统一用户重复建设名称相同的标签。bookmark_tags 使用两个外键组成联合主键或联合唯一索引,避免统一个标签被重复关联到统一条珍藏。

网址去重与唯一约束不可忽略

珍藏网站时,用户可能划分输入带有末尾斜杠、差别协议或差别巨细写的地点。若是直接对原始 url 判断重复,容易泛起统一网站多条珍藏纪录。数据库设计应先在应用层完成网址名堂校验和标准化,再将效果写入 normalized_url。

去重规则要由产品需求决议。若系统只体贴域名,可以按域名去重 ;若系统生涯的是详细网页,则应按完整规范化 URL 去重。关于统一域名下的差别路径、差别锚点和差别盘问参数,也不可在没有营业依据时强行合并。

推荐在珍藏表上建设 user_id、created_at 的组合索引,以支持按用户盘问和按珍藏时间排序 ;在 user_id、website_id 上建设唯一约束,以支持快速判断是否已经珍藏。若需要按问题或备注搜索,还可以凭证数据库能力建设全文索引,而不是只依赖模糊盘问。

珍藏、作废珍藏和盘问流程

用户执行珍藏操作时,系统应先验证网址名堂,再处置惩罚网站信息,最后写入用户珍藏关系。网站已经保存时可以复用原有网站纪录 ;网站不保存时再建设新纪录。整个历程最好放在事务中,阻止网站建设乐成但珍藏关系写入失败。

  1. 确认目今用户具有正常的珍藏权限。
  2. 校验 URL,并天生 normalized_url。
  3. 查找或建设网站基础信息。
  4. 检查目今用户是否已有有用珍藏纪录。
  5. 建设珍藏纪录,并按需要关联分类和标签。
  6. 提交事务后返接纳藏状态。

作废珍藏时,应按目今用户和珍藏编号举行操作,不可只凭证网站编号删除,不然可能误删其他用户的珍藏。盘问珍藏列表时,同样必需带上 user_id 条件 ;后台治理或果真分享场景则需要另行设计权限规则。

哪些字段适合放在珍藏表

判断字段归属时,可以看它形貌的是“网站自己”照旧“用户与网站的关系”。网站问题、网站地点和公共形貌通常放在 websites 表中 ;小我私家备注、星标状态、所属分类、珍藏时间和最近审查时间应放在 user_bookmarks 或关联表中。

例如,统一个网站被两个用户珍藏时,两个用户可能设置差别的备注、标签和分类,因此这些内容不可放在网站表中。若网站问题允许每个用户自界说,则应特殊设置 bookmark_title,笼罩网站的公共问题,而不是直接修改 websites.title。

面向扩展功效的设计建议

若是后续妄想增添果真珍藏夹、团队珍藏或珍藏分享,可以在珍藏关系上增添 visibility、owner_type 等权限字段,也可以单独建设分享表,生涯分享令牌、有用限期和会见规模。权限判断应围绕珍藏的所有者执行,不可仅凭前端传来的珍藏编号放行。

若是需要纪录网站失效、页面抓取时间或问题更新状态,可以增添检查状态、checked_at 和 error_message 等字段。自动检查网址时应设置频率限制和超时处置惩罚,不要让页面会见失败直接删除用户珍藏。对用户来说,失效网址仍可能是有价值的历史资料。

关于小型珍藏网站,users、websites、user_bookmarks、folders 和 tags 已经能够支持大大都基础功效 ;当泛起多分类、团队协作、分享权限或操作审计需求时,再拆分关系表和权限表。好的网站珍藏功效数据库设计并不是表越多越好,而是先包管珍藏关系清晰、数据不重复、权限可判断,并为明确的扩展需求预留合理结构。

特殊声明:以上文章内容仅代表作者自己看法,不代表新浪网看法或态度。若有关于作品内容、版权或其它问题请于作品揭晓后的30日内与新浪网联系。
来自于:新浪网官方
网友谈论
酷态科PB200N移动电源超值优惠低至86.74元
台风红霞或直扑广东
分享到微博
宣布
最热谈论
最新谈论
暂无谈论

举报邮箱:[email protected]

Copyright ? 1996-2026 SINA Corporation

All Rights Reserved 新浪公司 版权所有