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