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

标签 sql database

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

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 个实体都具有如此牢固的关系?例如,“上下文”对用户、对象和权限有影响还是只对权限有影响?一个对象是否同时存在于多个上下文中,或者在特定上下文中绑定(bind)一个对象是否有意义(变量作用域的相同概念)?

关于sql - 如何链接四个表避免N元关联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19374638/

相关文章:

sql - 如何将属性值对列表转换为列为属性的平面表

mysql - 数据库设计 - 用于层次结构建模的表设计

php - 预编译语句查询不返回任何结果

mysql - 浮点类型比较

sql - 如何使用 Sequelize 获取模型的字段列表及其类型

database - 为什么在 where 条件下 oracle Number 字段忽略字符 d & f?

sql - 你如何连接到最近创建的 postgres 数据库?

sql - 为什么SQL语句分为DDL、DML、DCL和TCL语句?

mySQL:变量限制

Django:如何在 sqlite3 数据库中添加/删除字段?