哪个更好,自动增量数据库或通过代码?

时间:2014-12-09 08:38:33

标签: database auto-increment

哪个更好,自动增量数据库还是通过代码? 我的导师告诉我,让数据库尽可能“愚蠢”更好,让程序完成所有工作。不是相反吗?

3 个答案:

答案 0 :(得分:3)

我认为让数据库"尽可能愚蠢"是一种错误的做法。锁定数据库与使用不连贯数据的次数越多,您就越安静。

数据库为您提供了许多工具(如外键),以确保数据的完整性和一致性,而无需使用代码。它可以保护您,以防您的代码不完美。更好的是,如果有人使用您的数据库编写新代码,他可以通过查看其结构来了解您创建数据库时的意图。

所以,回答你的问题,对我而言,我认为自动增量更好。数据库可以轻松地管理它,它可以帮助您完成这项任务。

答案 1 :(得分:0)

我同意数据库应该是"愚蠢的"尽管如此,无论如何autoinc是一个例外,就好像你将这个任务留给代码,你冒着很多冲突的风险。 想象一下需要增加相同字段的两个线程/进程:您必须手动处理冲突。

具有2个流程的工作流程:

      1. p1 get the field value and put in a variable (var==FIELD==0)
      2. p2 get the same field                        (var==FIELD==0)
      3. p1 increment the value                       (var++)
      4. p1 store the value                           (FIELD==1)

      SCENARIO 1

      5.a p2 store the value as is (he "think" nothing changed) (FIELD=0) !!! ERROR reset value

      SCENARIO 2
      5.a p2 increment the value                       (var++)
      5.b p2 store the value                           (FIELD==1)        !!! ERROR lost 1 increment

每个"规则"并且最佳实践有其例外,您需要分析上下文以获得正确的选择。

答案 2 :(得分:0)

数据库列中自动增量的问题是应用程序不知道该值,因此需要额外的客户端 - 服务器通信来获取它。这可能会降低您的申请速度。它还限制了某些类型的继承映射。使用其他一些增量方法(序列)可以改善这一点,但缺点是表格ID中存在差距。 请阅读this优秀帖子,了解基本自动增量的替代方案。