用于引用所有记录的外键或在联结表中没有记录

时间:2014-11-10 22:50:34

标签: mysql foreign-key-relationship composite-key junction-table

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

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

Column |  References
user      user.id
access    access.id

因此,每个用户和每个访问级别可以有许多条目。为了简化“超级用户”的内容,我想为NULL设置一个access值,这意味着他们可以访问每个页面(这是我能想出如何输入值的唯一方法' t引用access表中的一行。问题是MySQL不允许将NULL值作为主键的一部分。

是否有办法解决主键的NULL问题,还是有另一种方法来引用外键中的每一行(或没有行)?我能想到的另一种方法是禁用外键或者必须为表中的每个access.id添加一行。其中任何一个都是不受欢迎的。

2 个答案:

答案 0 :(得分:0)

据推测,您的用户表上有一个超级用户标志。您可以将每个超级用户的笛卡尔联接和可用访问ID的集合联合到您需要的任何查询中。

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

答案 1 :(得分:0)

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