在已经掌握了基本的 Notion 数据库功能后,随着实际项目的应用,你可能会产生更多的困惑,诸如字段内容查重、多级标签自动匹配等。本文旨在分享我的使用过程中想要实现的功能与解决方案,也许不是最优的,如你有更便捷的技巧或者其他思路,也欢迎在评论区一起研讨!

查重的使用场景

查重作为数据库构建的一项基本功能,是排除重复信息干扰、确保唯一性数据准确性的校验手段。而若能做到在特定数据有重复时自动警告并执行特定操作,将极大地提升用户体验。这里我举几个例子:

  1. 过滤掉机器人复制粘贴式的批量评论
  2. 标注出同一个人的多次领奖记录
  3. 给文章的分词数据按照重复次数排序以便制作词云
  4. 监测在短时间内发生多笔相同金额和商家的消费

https://cdn.sspai.com/2024/03/08/3047a3c2486c44bd926446cc37e8be7a.png

完善的查重机制能节省大量人工判断的成本,并且在第一时间获知结论。如果这正好符合你的需求,且你正在使用 Notion 数据库来管理数据,那么不妨继续往下看吧~

查重功能的实现

Notion 数据库中的每一行(页面)有着天然的独立性,即便行与行之间共享着统一的字段,但数据库的架构决定了他们之间并不能直接实现跨行的信息访问,目前唯一的方式是通过 Relation 字段来解决。如果你已经掌握了数据库的基本功能,想必你应该了解过 Sub-item 这个特性:通过 Relation 字段链接数据库自己,就可以依照 Parent-item(父级)和 Child-item(子级)来构建带有指向性的跨行信息访问。那么当你希望上述的两个字段能基于其他字段的内容来 “智能”选择所需链接的页面时,单凭 Relation 字段本身就无能为力了。因为 Relation 字段的内容输入方式重度依赖手动选择,对于想要实现高度自动化的数据库来说无疑是需要另辟蹊径的。

在此之前,我非常推荐少数派与 @二一的笔记 联合推出的《Notion All in One:大家高能效率系统》。其中深入浅出地讲解了 Notion 丰富的能力,由于本文会涉及一定的数据库函数编辑,没有基础的小伙伴或能在这篇终极指南中受益良多。

回到正题,通常来说,我们会希望“智能选择”的范围是当前数据库的所有页面,但由于将每一页关联上其他所有页的手动成本过高,我们需要一个自动化的“中转数据库”来代为处理。这里我将以“玩家IP地址查重”为案例来演示。

https://cdn.sspai.com/2024/03/08/dab3fd6632d79a2f8820db8663a3dd96.png

一对一查重

基于兴趣,我目前在一个非营利性的游戏服务器运营团队中任职。在调查和把控对游戏社区有害的玩家时,我们常常需要甄别该玩家是否有其他小号,以便于我们在封禁该账号的时候也能“照顾”到他的其他“马甲”。IP地址可以展示玩家所在位置的大致区域,由于我们的玩家群体遍及全球,相同IP地址的情况少之又少,所以我们选择通过它来辅助决策。

https://cdn.sspai.com/2024/03/05/af6c51ad4dfc71e225a3e7bc0d8ba832.png

如上图所示,现在我们有三名玩家以及他们各自对应的 IP 地址,我们的目的是让 查重 字段展示出有着相同 IP 地址的其他玩家的 ID。

构建“中转数据库”