【发布时间】:2014-03-23 17:49:09
【问题描述】:
我有一个表myTable 有一个外键,假设它叫做credential_id。大多数情况下,经过身份验证的用户通过执行某些操作来使用它,因此credential_id 指向某个值(当将一行插入myTable 时,credential_id 具有 一个值)。
但是,我想允许匿名(未经过身份验证或访客)用户也执行一些涉及此表的操作。由于它们没有经过身份验证,credential_id 不能有任何价值。
我想知道,有什么更好的方法:允许credential_id 使用空值,或者为匿名用户创建一个特殊帐户并在用户未通过身份验证时使用它?这个问题在某种程度上是关于所谓的空模式,但关于数据库。
【问题讨论】:
-
我认为特殊帐户更好,因为它明确说明了您要做什么。
-
如果您有任何相关数据存储在凭据表或匿名用户的硬代码中,那么存储它是有意义的。除非您没有任何类似的值/数据 - 基本上您不会对匿名用户做任何其他事情,否则没有额外的条目和指向它的值是不值得的。然而,第一种情况更有可能
-
顺便提一下,与数据库设计相关的这些问题可以在 dba.stackexchange.com 上得到更详细的解决。
标签: sql database design-patterns database-design schema