如何链接四个表以避免 N 元关联



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

USER
id
PERMISSION
id
OBJECT
id
CONTEXT
id

现在的问题是我想将它们链接起来,说用户根据上下文对一个或多个对象具有一个或多个权限。它看起来很简单,但我找不到避免n元关联的方法。

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

您可能正在寻找类似弱实体的东西

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

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

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

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

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

不过,作为一般说明,我建议您多考虑一下您的数据库模型:您是否绝对确定所有这 4 个实体在一起具有如此牢固的关系?例如,"上下文"是否对用户、对象和权限有影响,还是只对权限有影响?一个对象是否同时存在于多个上下文中,或者在特定上下文中绑定一个对象是否有意义(变量作用域的相同概念)?

最新更新