使用自动编号数据库域理论
Using auto-number database fields theory
我在 "another" 编程论坛上讨论了在插入发生之前从自动递增字段获取下一个数字(有一种使用 ADOX 的方法)。顺便说一句,这是在 MS-Access 数据库中。
无论如何,讨论转向了您是否应该对发票编号、采购订单编号、提货单编号或任何其他需要唯一递增编号的内容使用自动递增字段。
我的想法是"why not"?其他人争辩说发票编号(例如)应该作为单独的 table 进行管理并随代码递增,而不是使用自动编号字段。
有人能给我一个很好的理由吗?
多年来,我一直在为这类事情使用自动编号字段,而且从来没有遇到过问题。
你的想法?
我一直避开数字auto_increment。事实证明这是有充分理由的。但本来我的理由是因为那是教授告诉我们的。
Facebook 几年前发生了一次重大违规行为——仅仅是因为他们使用 AUTO_INCREMENT 字段作为用户 ID。不用计算器就能算出,如果我的 ID 是 10320,那么很可能有人的 ID 是 10319,等等
当调试(或校对设计)具有隐式表示的数据的密钥时,要容易得多。
具有数据隐含的键可降低损坏数据(类型和用户猜测)的可能性。
隐式密钥要求开发人员将它们视为数据。我从来没有遇到过 table 使用未规范化的隐式密钥。
除了截止日期通常 运行 紧迫之外 - 没有什么理由自动递增。
通常我使用 ID 自动编号字段,所以我不需要考虑是如何生成的。
像插入和删除这样的记录集操作改变了序列跳过数字块。
当您管理 CustomerID、发票编号等时,最好完全控制它们而不是让它们受系统控制。
您可以创建一个函数,使用规则为您生成所需的数字(例如,发票可以是一个包含开票日期的函数)。
使用自动编号,您无法做到这一点。
在那之后,什么该做,什么不该做,就没有固定的规则了。
这只是你的实践和经验以及你想要拥有的自由度。
再见:-)
我在 "another" 编程论坛上讨论了在插入发生之前从自动递增字段获取下一个数字(有一种使用 ADOX 的方法)。顺便说一句,这是在 MS-Access 数据库中。
无论如何,讨论转向了您是否应该对发票编号、采购订单编号、提货单编号或任何其他需要唯一递增编号的内容使用自动递增字段。
我的想法是"why not"?其他人争辩说发票编号(例如)应该作为单独的 table 进行管理并随代码递增,而不是使用自动编号字段。
有人能给我一个很好的理由吗? 多年来,我一直在为这类事情使用自动编号字段,而且从来没有遇到过问题。
你的想法?
我一直避开数字auto_increment。事实证明这是有充分理由的。但本来我的理由是因为那是教授告诉我们的。
Facebook 几年前发生了一次重大违规行为——仅仅是因为他们使用 AUTO_INCREMENT 字段作为用户 ID。不用计算器就能算出,如果我的 ID 是 10320,那么很可能有人的 ID 是 10319,等等
当调试(或校对设计)具有隐式表示的数据的密钥时,要容易得多。
具有数据隐含的键可降低损坏数据(类型和用户猜测)的可能性。
隐式密钥要求开发人员将它们视为数据。我从来没有遇到过 table 使用未规范化的隐式密钥。
除了截止日期通常 运行 紧迫之外 - 没有什么理由自动递增。
通常我使用 ID 自动编号字段,所以我不需要考虑是如何生成的。
像插入和删除这样的记录集操作改变了序列跳过数字块。
当您管理 CustomerID、发票编号等时,最好完全控制它们而不是让它们受系统控制。
您可以创建一个函数,使用规则为您生成所需的数字(例如,发票可以是一个包含开票日期的函数)。
使用自动编号,您无法做到这一点。
在那之后,什么该做,什么不该做,就没有固定的规则了。 这只是你的实践和经验以及你想要拥有的自由度。
再见:-)