所以我们刚刚开始为X公司做网络应用程序。应用程序必须计算很多信息,比如工作人员完成工作,工作多长时间,设备工作时间,设备速度,设备质量,部件质量,正常运行时间,停机,运行时间,浪费等等......问题是数据库是愚蠢的设计,没有ID(我在多列上加入它,但它太慢了),在视图表中进行了大量计算,(我是关于这个梦想的噩梦)数据库有很多,我的意思是很多表有数百万条记录。所以我的问题是如何处理这种情况?尝试掌握数据库并尝试完成我的工作,即使需要半年才能完成所有工作?或许他们应该聘请一些数据库设计师并改变整个系统......(但我想即使我要求他们也不会这样做)。有没有一个软件可以快速掌握我可以使用的数据库?他们使用的是Microsoft Server SQL 2012。
P.S。不要判断我的英语写作技巧,我不经常编译。
编辑: 一些桌子之间没有完整性,所以我必须一路走来。并且服务器总是很忙并且不时崩溃。有时从视图表获取1000行需要20分钟。 2.每次查询时都会执行一些昂贵的查询。
编辑: 在不同的表中重复了很多数据。
编辑: 有没有办法让数据库更有效率?
答案 0 :(得分:2)
让我们来看看这里的每一点:
没有ID(我在多个列上加入它,但它太慢了)
您是否真的意味着表之间没有参照完整性,并且没有可形成主键的列?如果这就是你的意思,那么我同意一个非规范化的表非常糟糕。但是,如果存在参照完整性(我认为存在参考完整性,这不是问题)。你继续说它很慢,定义慢。如果查询超过2万亿条记录需要10秒钟,我几乎不会说那么慢。但是,如果需要10秒钟来查询超过5行,那么这是很慢的。
视图表中的很多计算
现在这是一个物化视图吗?这意味着计算只执行一次而且表是从那个昂贵的查询构建的?或者你的意思是每次有针对性地执行一些昂贵的查询?在后一种情况下,这是不好的,前者是正确的。
数据库有很多,我的意思是很多数百万的表 记录
你的意思是? 2013年的数百万条记录并不多。此外,如果您正在融化数百万条记录,可能需要将其挂起。只有更多的数据,除非一些疯狂的磁暴摧毁了我们所知道的所有技术。
所以我的问题是如何处理这种情况?
学习集理论和关系设计。
答案 1 :(得分:0)
您需要了解更改数据库并非易事。您需要做的是很好地理解这个数据库结构。你可能不满意,因为你不太了解它。如果您了解它,您可以为常见的日常任务设计视图和预制查询。一旦您对数据库感到满意,您就可以开始列出当前设计的错误以及业务需求。那么您可以起草1.0版ERD,并根据业务需求和您在当前系统中的专业知识估算构建新系统的成本。
答案 2 :(得分:0)
实际上,与普遍看法相反,缺少人工密钥并不会自动使数据库“设计得愚蠢”。
所以是的,你应该试着掌握数据库并尝试完成你的工作。即使需要半年才能使一切正常工作,它仍然可能比调整生成数据的应用程序更便宜。
是否可以通过修改数据库来改进您的系统只能通过专家的分析来确定。它超出了本网站的范围。
答案 3 :(得分:0)
确保BD结构真的像您想象的那样糟糕。也许你错过的设计有一些逻辑?更好的检查,从长远来看,它将节省您的时间。 此外,数据库是否已标准化?如果在各种表中重复存在大量数据,那么事实并非如此。如果有一些尝试规范化数据库(最小化数据重复),那么设计中就会有一些智能。否则,你可能是对的。