我在数据库中有这四个表:
USER
id
PERMISSION
id
OBJECT
id
CONTEXT
id
现在的问题是我想将它们链接起来说用户根据上下文对一个或多个对象具有一个或多个权限。它看起来很简单,但我找不到避免 n 元关联的方法。
希望有人能帮助我解决这个问题。提前致谢。
您可能正在寻找类似WEAK ENTITY的东西
基本上,弱实体是一个数据库实体,它本身没有意义,但需要一个(或多个)外键来假设正确的身份和含义。
这意味着您正在从 N 元关系转移到 N 个二元关系。
一种可能的方法是:假设我们称之为弱实体Rules
Rules(id, user_id, permission_id, object_id, context_id /*other columns*/);
您的每个强大实体都与规则表有关系。我不太喜欢这种方法,但对于小型数据集,它可能工作得很好。
不过,作为一般说明,我建议您多考虑一下您的数据库模型:您是否绝对肯定地确定所有这 4 个实体都具有如此牢固的关系?例如,“上下文”对用户、对象和权限有影响还是仅对权限有影响?一个对象是否同时存在于多个上下文中,或者在特定上下文中绑定一个对象有意义(变量范围的相同概念)?