今天在设计数据库的时候突然纠结一个问题
场景是一个后台用户的权限管理系统
我们都知道设计一个权限管理系统最基本的需要:
一张用户表user
一张角色表role
一张中间表连接用户和角色user-role
但是在设计中间表的时候,一开始有点不知道是该用roleID还是roleName作为属性。
其实这里理论上来说应该是要用roleID的,但是又觉得用roleID的话如果前端要展示的话得去查表拿到roleName,感觉挺麻烦的。
后来,在别人的提醒下才想起一个问题,如果这里用roleName的话,虽然是方便了展示,但是一旦role表发生修改的话,对中间表的修改就会非常麻烦。
现在再想一想,当初的设计也违背了数据库第三范式:属性不依赖于其它非主属性。感觉数据库规范的三个范式确实还是非常有用的。