我在数据库中有这四个表:
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 个实体都具有如此牢固的关系?例如,“上下文”对用户、对象和权限有影响还是只对权限有影响?一个对象是否同时存在于多个上下文中,或者在特定上下文中绑定(bind)一个对象是否有意义(变量作用域的相同概念)?
关于sql - 如何链接四个表避免N元关联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19374638/