空值与特殊的预定义空值

时间:2014-02-21 23:55:39

标签: sql database design-patterns database-design schema

我有一张表myTable有一个外键,比方说它叫credential_id。大多数情况下,经过身份验证的用户通过执行某些操作来使用它,因此credential_id指向某个值(当行插入myTable时,credential_id 具有一个值)。

但是,我想允许匿名(未经过身份验证或来宾)用户也执行涉及此表的某些操作。由于未经过身份验证,credential_id无法获得任何价值。

我想知道,什么会更好:允许credential_id的空值或为匿名用户创建一个特殊帐户,并在用户未经过身份验证时使用它?问题在于某种方式所谓的空模式,但关于数据库。

1 个答案:

答案 0 :(得分:3)

此类记录通常用于数据仓库,因为NULL值通常不明确。为各种异常情况创建虚拟记录是首选,以消除这种模糊性。在您的情况下,某种“客人”凭证是完全合适的。

那就是说,如果你认为这是行动没有凭证的唯一原因,那么使用NULL值也是可以的。这是相当直观的:这个动作没有任何信誉,但确实发生了,我想用户不需要进行身份验证。

您需要权衡实施访客凭证的(适度)成本与使用NULL值混淆的可能性。