我有一个表myTable
有外键,假设它叫做credential_id
。大多数情况下,经过身份验证的用户通过执行某些操作来使用它,因此credential_id
指向某个值(当一行被插入myTable
时,credential_id
有一个值)。
但是,我希望允许匿名(未经身份验证或来宾)用户也执行一些涉及此表的操作。因为它们没有经过身份验证,credential_id
不能有任何值。
我想知道,什么更好:允许credential_id
的空值,或者为匿名用户创建一个特殊帐户,并在用户未经身份验证时使用它?问题在于所谓的空模式,但在某种程度上是关于数据库的。
最佳答案
此类记录通常在数据仓库中使用,因为空值通常是不明确的。最好为各种异常情况创建虚拟记录,以消除这种模糊性。在你的情况下,某种“客人”证书是非常合适的。
也就是说,如果您希望这是操作没有凭据的唯一原因,那么使用空值也可以。这是相当直观的:这个操作没有任何凭据,但确实发生了,我想用户不需要验证。
您需要权衡实现来宾凭证的(适度)成本与使用空值造成混淆的可能性。
关于sql - 空值与特殊的预定义空值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21947557/