2
我在数据库中的四个表:如何链接四个表避免多元关联
USER
id
PERMISSION
id
OBJECT
id
CONTEXT
id
现在的问题是,我想将它们连接到说,用户对一个一个或多个权限或许多对象取决于上下文..它看起来很简单,但我找不到一种方法来避免n元联合..
希望有人会友善地帮助我解决这个问题。 在此先感谢。
我在数据库中的四个表:如何链接四个表避免多元关联
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个实体之间有如此密切的关系?例如,“上下文”是否影响用户,对象和权限或只是权限?一个对象是否在多个上下文中同时存在,或者在特定的上下文中绑定对象(与变量作用域相同的概念)是有意义的?
嗨,你建议不要做N元关联,我可以做N元二元关联。好的,但你建议创建一个包含四个对象的每个主键的连接表,所以它仍然是一个N- ary协会,不是吗? –
好吧,是的,没有。现在它是一个具有N个二元关联的实体,而不是N个表之间的关系。我发现它们看起来很相似,但是用你目前的设计我看不到很多选择。 –