如何链接四个表避免N-ary关联

时间:2013-10-15 06:31:29

标签: sql database

我在数据库中有这四个表:

USER
id

PERMISSION
id

OBJECT
id

CONTEXT
id

现在的问题是,我想链接它们,说用户根据上下文对一个或多个对象拥有一个或多个权限..它看起来很简单,但我找不到避免n-ary的方法协会

希望有人能够帮助我解决这个问题。 提前谢谢。

1 个答案:

答案 0 :(得分:0)

您可能正在寻找类似WEAK ENTITY

的内容

基本上,弱实体是一个数据库实体,它本身没有意义,但需要一个(或多个)外键来假设一个正确的标识和含义。

这意味着您正在从N-ary关系转变为N二元关系。

一种可能的方法是:假设我们称之为弱实体Rules

Rules(id, user_id, permission_id, object_id, context_id /*other columns*/);

每个强实体都与规则表有关系。我不太喜欢这种方法,但对于小型数据集,它可以很好地工作。

总的来说,我建议你多考虑一下你的数据库模型:你是否绝对肯定所有这4个实体都有如此强大的关系?例如,“上下文”是否会影响用户,对象和权限,还是只影响权限?对象是否跨多个上下文同时存在,或者在特定上下文中绑定对象(变量作用域的相同概念)是否有意义?