【快缩短网址 · 产品经理的数据库美学:以RBAC权限系统为例,重构数据之魂】
在B端产品的世界里,真正的高手,不只画原型、写PRD,更懂数据如何呼吸。
我曾以为,产品经理只需“会查SQL”就够了。直到某日,一份顶尖B端企业的JD赫然写着:“精通主流数据库原理,具备独立设计能力”——我才明白,数据不是后台的黑箱,而是产品逻辑的骨骼与血脉。
今天,我们以「快缩短网址」(suo.run)的权限管理系统为切口,不谈技术术语的堆砌,只讲一场关于优雅数据结构的美学实践。
---
一、数据,是产品最沉默的诗人
关系型数据库,本质是一场精密的舞蹈:
一张表,是一页诗;
一个键,是韵脚;
外键的牵连,是意象的回响。
在suo.run,我们为“短链”服务构建权限体系,核心模块只有四个:组织、角色、菜单、用户。
但它们之间的关系,却决定了系统能否在千万级请求中,依旧如丝绒般顺滑。
我们不追求“能跑”,我们追求“如诗”。
---

二、从需求到ER图:让业务长出骨架
#### ▶ 组织(Organization)
> 一个企业,一个空间,一个信任的边界
- org_id(主键)
- name(机构名称)
- type(类型:企业/部门/团队)
- contact_email
- created_at
永久存储,不可删除——组织是根,根不能死。
#### ▶ 角色(Role)
> 权限的化身,是身份的诗行
- role_id(主键)
- name(如“管理员”、“审计员”)
- description(职责的注脚)
- priority(排序权重,决定权限优先级)
- created_by
角色不是标签,是权限的容器。一个用户可拥有多重角色,如同一个人可同时是诗人、父亲、旅人。
#### ▶ 菜单(Menu)
> 用户通往功能的门扉
- menu_id(主键)
- title(“控制台”、“短链统计”)
- path(/dashboard、/link/list)
- icon(视觉符号)
- parent_id(自关联,构建树形导航)
菜单是界面的语法树,每一条路径,都是一句可执行的指令。
#### ▶ 用户(User)
> 活生生的个体,数据的最终承载者
- user_id(主键)
- username
- real_name
- phone
- org_id(外键,归属组织)
- status(启用/禁用)
---
三、范式,不是枷锁,是节奏
我们不谈“第一范式”“第三范式”的教条,只问:数据是否冗余?关联是否清晰?
#### ❌ 错误的写法(反模式)
> User表中直接存:role_name, menu_title —— 这是把诗抄在了脚注里,混乱而臃肿。
#### ✅ 正确的结构(优雅范式)
我们拆解为四张核心表,辅以两张“关系之桥”:
| 表名 | 作用 |
|------|------|
|
users | 用户本体 ||
organizations | 组织本体 ||
roles | 角色本体 ||
menus | 菜单本体 ||
user_roles | 用户-角色多对多关联(user_id + role_id) ||
role_menus | 角色-菜单权限映射(role_id + menu_id) |> 每一张表,只讲一件事;
> 每一个外键,都是温柔的牵连;
> 每一次查询,都如风拂过琴弦,不带一丝杂音。
这就是第三范式的诗意:
不重复,不耦合,不喧宾夺主。

---
四、逻辑删除:给数据留一扇窗
在suo.run,我们从不“物理删除”任何权限记录。
当一个角色被“移除”,我们只是将
role_menus 中的记录标记为 is_deleted = true,并归入 deleted_roles_log 历史表。> 数据不会消失,它只是暂时隐退。
> 万一用户误删?一键恢复,如时光倒流。
这是对用户信任的尊重,也是对系统灵魂的守护。
---

五、命名:让代码成为可读的散文
我们不写
tbl_usr_rle, 我们写:
users, roles, user_roles。字段命名,是产品经理与工程师之间的契约:
-
created_at 而非 create_time -
org_id 而非 organization_id(简洁即美) -
is_active 而非 status(布尔语义清晰)命名,是数据的呼吸节奏。
---
六、结语:产品经理的数据库美学
你不必成为DBA,但你必须理解数据如何生长。

当你在PRD中写下“管理员可分配权限”,
请在脑中同步构建出那张
role_menus 的关联图。 当你设计“组织层级”,请预判未来是否需要
parent_id 的树形结构。好的数据库设计,是产品看不见的优雅。
它让系统在高并发中不颤抖,
在数据膨胀时仍从容,
在需求变更时,轻轻一转,便能重塑。
在suo.run,我们缩短的不只是URL,
更是人与系统之间的认知距离。
你懂数据,
你就懂了产品真正的语言。
——
快缩短网址 | suo.run
让每一条链接,都值得被信任;
让每一个权限,都恰如其分。