-4

所以我们刚开始为 X 公司做 Web 应用程序。应用程序必须计算很多信息,比如工人完成的工作、他工作了多长时间、设备工作了多长时间、设备速度、设备质量、零件质量、正常运行时间、停机时间、运行时间时间,浪费等等......等等......问题是数据库设计很愚蠢,没有ID(我在多个列上加入它,但它太慢了),视图表内有很多计算,(我会做梦关于这个的噩梦)数据库有很多,我的意思是很多表有数百万条记录。所以我的问题是如何处理这种情况?尝试掌握数据库并尝试完成我的工作,即使需要半年时间才能使一切正常?或者也许他们应该聘请一些数据库设计师并改变整个系统......(但我想即使我要求他们也不会这样做)。是否有软件可以快速掌握我可以使用的数据库?他们使用 Microsoft Server SQL 2012。

PS不要评判我的英文写作能力,我不经常编译。

编辑: 1. 一些表之间没有完整性,所以我必须解决问题。并且服务器总是很忙并且不时崩溃。有时需要 20 分钟才能从视图表中获取 1000 行。2. 每次我查询某些东西时都会执行一些昂贵的查询。

编辑:在不同的表中有很多重复的数据。

编辑:有没有办法让数据库更有效率?

4

4 回答 4

2

让我们来看看这里的每一点:

没有 ID(我在多个列上加入它,但它太慢了)

你真的是说你在表之间没有参照完整性并且没有可以形成主键的列吗?如果这就是你的意思,那么我同意非标准化表格非常糟糕。但是,如果存在参照完整性(我认为存在,这不是问题)。你继续说它很慢,定义慢。如果查询超过 2 万亿条记录需要 10 秒,我不会说那么慢。但是,如果查询超过 5 行需要 10 秒,那么是的,这很慢。

视图表中的大量计算

现在这是一个物化视图吗?这意味着计算只执行一次,并且表是由那个昂贵的查询构建的?或者您的意思是每次定位时都会执行一些昂贵的查询?在后一种情况下是坏的,在前一种情况下是正确的。

数据库有很多,我的意思是很多表有数百万条记录

你的意思是?2013 年的数百万条记录并不多。此外,如果您正在融化数百万条记录,那么可能是时候将其挂起。只会有更多的数据,除非一些疯狂的磁暴摧毁了我们所知道的所有技术。

所以我的问题是如何处理这种情况?

学习集合论和关系设计。

于 2013-11-04T13:20:02.077 回答
0

您需要了解更改数据库并非易事。你需要做的是很好地理解这个数据库结构。你可能对它不满意,因为你不太了解它。如果您了解它,您可以为常见的日常任务设计视图和预设查询。一旦您对数据库感到满意,您就可以开始列出当前设计的问题以及业务需求。那时您可能可以起草 1.0 版 ERD,并根据业务需求和您在当前系统中的专业知识估算构建新系统的成本。

于 2013-11-04T13:06:38.030 回答
0

实际上,与流行的看法相反,缺少人工键并不会自动使数据库“设计愚蠢”。

所以,是的,您应该尝试掌握数据库并尝试完成您的工作。即使你需要半年时间才能让一切正常运行,它可能仍然比调整生成数据的应用程序便宜。

是否可以通过修改数据库来改进您的系统,只能通过专家的分析来确定。它超出了本网站的范围。

于 2013-11-04T13:12:48.980 回答
0

确保BD结构真的像你想象的那么糟糕。也许您错过的设计有一些逻辑?最好检查一下,从长远来看,它将为您节省时间。另外,数据库是否标准化?如果在各个表中有很多重复的数据,那就不是。如果有一些尝试规范化数据库(最小化数据重复),那么设计中就有一些智能。否则,你可能是对的。

于 2013-11-04T13:18:18.067 回答