我应该使用代理键还是使用自然键?

时间:2011-07-07 19:41:56

标签: php mysql surrogate-key

我正在构建一个列表类型,让用户在我的系统中列出各种事物。因此,列表元素需要引用它们将指向的事物的类型和标识符。

例如,我将允许用户制作产品列表。因此,列表元素需要知道他们持有产品(因此请查看产品表),并且需要产品ID。

存储的一些列表将具有非数字标识符。

那么,我应该将我的id / type对放在list元素中,还是应该创建一个新表来为id / type对创建一个代理键作为一个简单的int并使用它?

代理键将需要额外的查找/连接来获取密钥对,但我不需要将两列混合到我的列表元素表中。

1 个答案:

答案 0 :(得分:1)

我不确定您是否计划进行任何类型的统计或报告,但我总是发现将主键保持在一列非常有用。我总是创建一个自动递增的整数作为pk。这些表应该只是“数据”的存储区域。越简单越好。随着应用程序的发展,你可能不想知道你应该怎么做,因此随着时间的推移,保持简单可以让你更灵活。

相关问题