我有一个用户表,
每个 USR_ID 可以有多个角色、 View 、品牌和单位。
所以我想到的最优设计是这样的:
Users
USR_ID USR_Username USR_Password
Matrix
M_ID M_USR_ID M_ROLE_ID M_VIEW_ID M_BRAND_ID M_UNIT_ID
_ROLES
ROLE_ID ROLE_Name ROLE_Active
_VIEWS
VIEW_ID VIEW_Name VIEW_Active
_BRANDS
BRAND_ID BRAND_Name BRAND_Active
_UNITS
UNIT_ID UNIT_Name UNIT_Active
所以基本上在矩阵表中,我保留了有关哪个用户做了什么的所有数据。
我的问题是,这是最优的结构和设计吗?除此之外,矩阵表中的行会是什么样子? 这是 ROLE_ID = 1 的某人的示例
Matrix
1 30 1 4 7 2 4
现在我想为该人添加另一个角色,下一行会是什么样子?我是否保留所有其他定义(品牌、单位、 View ...)的值?或者我是否只插入除 ROLE_ID 之外的所有内容?
非常感谢您的帮助,
谢谢
最佳答案
我不会使用你的矩阵表。相反,请使用交叉引用表。
链接用户和角色:
User_Roles
USR_ID ROLE_ID
为每个表创建跨引用表:角色、 View 、品牌、单位。例如,通过这种方式,您可以为一个用户拥有多个单元,而无需将每个单元与特定角色绑定(bind)。您可以拥有三个单位、三个角色和三个品牌,而无需创建 27 个矩阵记录。
关于php - 对于此类数据,最佳的数据库设计是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3449072/