0

这似乎是一个理想的功能,但我似乎无法弄清楚当外键是主键(复合键)的一部分时我会怎么做。

该表是一个简单的联结表,用于多对多关系引用User.idAccess.id用户有权访问的引用函数:

Column |  References
user      user.id
access    access.id

因此,每个用户和每个访问级别都可以有许多条目。为了简化“超级用户”的操作,我希望有一个NULL值,access这意味着他们可以访问每个页面(这是我能弄清楚如何输入未引用access表中行的值的唯一方法)。问题是 MySQL 不允许将NULL值作为主键的一部分。

是否有解决NULL主键问题的方法,或者是否有另一种方法可以引用外键中的每一行(或无行)?我能想到的唯一其他方法是禁用外键或必须为表中的每个 access.id 添加一行。其中任何一种都是不可取的。

4

2 回答 2

0

我认为 NULL 是允许的,您可以将它与 user.id 一起用作唯一组合。但我不确定这是否是一个好方法。我的意思是你可以将超级用户设置存储在一个列中并在代码中使用它而不是在这里。

于 2014-11-11T00:48:45.527 回答
0

大概您的用户表上有一个超级用户标志。您可以将每个超级用户的笛卡尔连接和一组可用的访问 ID 合并到您需要的任何查询中。

根据您正在做的事情,您也可以不将超级用户的访问权限存储在数据库中,并在代码中对它们进行不同的处理——即,一旦您将它们建立为 SU,就忽略访问检查。不过取决于您的应用程序。

于 2014-11-11T00:21:59.170 回答