Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何链接四个表避免N元关联_Sql_Database - Fatal编程技术网

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

Sql 如何链接四个表避免N元关联,sql,database,Sql,Database,我在数据库中有这四个表: USER id PERMISSION id OBJECT id CONTEXT id 现在的问题是,我想将它们链接起来,表示用户根据上下文对一个或多个对象拥有一个或多个权限。。它看起来很简单,但我找不到避免n元关联的方法 希望有人能帮我解决这个问题。 提前谢谢。您可能正在寻找类似 基本上,弱实体是一个数据库实体,它本身没有意义,但需要一个(或多个)外键来假定正确的标识和意义 这意味着您正在从N元关系转移到N个二元关系 一种可能的方法是这样的:假设我们称这个弱实体

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

USER
id

PERMISSION
id

OBJECT
id

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

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

您可能正在寻找类似

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

这意味着您正在从N元关系转移到N个二元关系

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

Rules(id, user_id, permission_id, object_id, context_id /*other columns*/);
每个强实体都与规则表有关系。我不太喜欢这种方法,但对于小数据集来说,它可能工作得很好


不过,总的来说,我建议您对您的数据库模型多想一想:您是否绝对肯定这四个实体之间有着如此紧密的关系?例如,“上下文”对用户、对象和权限有影响还是仅对权限有影响?一个对象是否同时存在于多个上下文中,或者在特定上下文中绑定一个对象(变量范围的相同概念)是有意义的?

您好,您建议我可以进行N元关联,而不是N元关联。。好的,但是您建议创建一个包含四个对象的每个主键的联接表,所以它仍然是一个N元关联,不是吗?是和否。现在它是一个具有N个二进制关联的实体,而不是N个表之间的关系。我看到它们看起来很相似,但就你目前的设计而言,我看不到太多的替代方案。