【发布时间】:2018-02-11 10:58:37
【问题描述】:
我想为 Web 应用程序设计数据库,在该数据库中,用户可以根据授予角色的权限访问特定选项卡。
到目前为止,我创建了两个表 USER_TABLE 和 USER_ROLES。
USER_TABLE 具有以下字段:
- id(主键)
- 用户名
- 密码
- 名字
- 姓氏
- 创建日期
- role_id_fk(外键)
USER_ROLES 具有以下字段:
id(主键)
角色名称(例如 ADMIN、TAB1_USER、TAB2_USER)
创建日期
在这里,角色名称为“ADMIN”的用户可以看到所有的标签,其他用户只能访问特定的标签。
我的问题是我是否需要在 USER_ROLES 表中创建一个具有外键的表 USER_PERMISSIONS,其中包含以下字段:
- id(主键)
- permission_type (ALL, TAB1, TAB2....)
或者我应该在我的代码级别进行管理?这两种方法的优缺点是什么?
【问题讨论】:
-
这取决于您的要求。如果您只想实现在运行时无法更改的静态权限,则将所有应用程序的功能绑定到代码中的角色。优点 - 更易于实施,缺点 - 每次更改权限都需要更改代码。如果你想要动态权限,可以在运行时更改(例如 admin 可以直接在应用程序中编辑单个角色的权限),那么你需要
USER_PERMISSIONS表,并在代码中将每个应用程序的功能绑定到某个权限而不是角色.
标签: sql database oracle database-design permissions