这似乎是一个理想的功能,但我似乎无法弄清楚当外键是主键(复合键)的一部分时我会怎么做。
该表是一个简单的联结表,用于引用用户有权访问的User.id
和Access.id
引用函数的多对多关系:
Column | References
user user.id
access access.id
因此,每个用户和每个访问级别可以有许多条目。为了简化“超级用户”的内容,我想为NULL
设置一个access
值,这意味着他们可以访问每个页面(这是我能想出如何输入值的唯一方法' t引用access
表中的一行。问题是MySQL不允许将NULL
值作为主键的一部分。
是否有办法解决主键的NULL
问题,还是有另一种方法来引用外键中的每一行(或没有行)?我能想到的另一种方法是禁用外键或者必须为表中的每个access.id添加一行。其中任何一个都是不受欢迎的。
答案 0 :(得分:0)
据推测,您的用户表上有一个超级用户标志。您可以将每个超级用户的笛卡尔联接和可用访问ID的集合联合到您需要的任何查询中。
根据您正在做的事情,您也可以不将超级用户的访问权限存储在数据库中,并在代码中对它们进行不同的处理 - 即在您将它们建立为SU后忽略访问检查。取决于您的申请。
答案 1 :(得分:0)
我认为允许使用NULL,您可以将它与user.id一起用作唯一组合。但我不确定这是否是一个很好的方法。我的意思是你可以将超级用户设置存储在一列中,并在代码中使用它而不是在这里。