TL;DR:你为什么要创建一个没有任何类型的键(甚至不是主键),也没有索引的数据库?
我加入了一个非盈利组织,该组织在 14 个月后迁移到定制的前端以进行财务处理。该组织有大约 60 名员工。
我有 6 年的软件开发经验,所以他们足够信任我,可以让我访问他们的数据库。
瞧,前端 SQL Server 生产数据库绝对没有任何类型的键,也没有索引。但是,该界面实际上运行良好。创建该系统的外部公司在创建新功能方面反应相对较快,并且该系统确实有效。
我已经在那里工作了大约 6 个月。大多数问题相对较小。我还没有看到由于公司方面的错误而导致的任何灾难性错误。再说一次,根本没有 UAT(用户验收测试),我也不知道这家外部公司的 QA 是如何工作的。我只与销售/技术联络员联系。
我高度怀疑这家公司只是为了将来的维护费而从非营利组织中掠夺。我厌倦了缓慢的数据库,以至于我根据最常用的报告添加了一堆多列、非聚集、非唯一索引,并将数据库速度提高了大约 100 倍(我没有打扰基准)。
我以前从未见过这种类型的设置,而且解决方案非常简单,以至于我很难理解为什么没有完成。我尝试询问销售联系人,但他只是不知道我在说什么。
我的评估是正确的还是有合法的理由这样做?
说明:
“DB关系是本质的吗?”
我相信是这样。他们每周和每月运行 DR/CR 报告。它在很大程度上是一个会计数据库。即使没有设置主键,它们也已在应用程序级别强制执行唯一性。
“数据库有多大”
它应该是一个全新的、定制的系统,在 SQL Server 2014 上运行。但是,我还发现他们将 DB 置于 2008 兼容模式(兼容代码 100)。我已经问过这个问题,但我的联系人没有回复我。