2013-11-04 26 views
-2

因此,我們剛剛開始爲X公司開發Web應用程序。應用程序必須計算大量的信息,如工作完成的工作,工作了多久,設備工作了多長時間,設備速度,設備質量,部件質量,正常運行時間,停機時間,運行時間,浪費等...等等...問題是數據庫是愚蠢的設計,沒有ID(我加入它在多列,但它很慢),視圖表內的很多計算,(我要去夢想做這個噩夢)數據庫有很多,我的意思是很多表有數百萬條記錄。所以我的問題是如何處理這種情況?試着去掌握數據庫並嘗試做我的工作,即使需要半年的時間才能完成所有工作?或者,也許他們應該聘請一些數據庫設計師,並改變整個系統......(但我想他們不會去,即使我問)。有沒有一種軟件可以快速掌握我可以使用的數據庫?他們使用Microsoft Server SQL 2012.如何處理愚蠢的設計數據庫?

P.S.不要評價我的英語寫作技巧,我不會經常編輯它。

編輯: 1.有些表格之間沒有完整性,所以我必須工作。而且服務器總是很忙,不時崩潰。有時從查看錶中獲取1000行需要20分鐘。 2.每次查詢時都會執行一些昂貴的查詢。

編輯: 在不同的表中有很多重複的數據。編輯: 有沒有辦法讓數據庫更有效率?

+6

+1爲標題。 – DontVoteMeDown

+5

@DontVoteMeDown不鼓勵這個地方成爲reddit。這是一個專業的網站。 – Woot4Moo

+0

*將它連接到多列*您的意思是複合鍵? –

回答

0

您需要明白,更改數據庫不是微不足道的。你需要做的是很好地理解這個數據庫結構。有機會,你不滿意,因爲你不瞭解它。如果你瞭解它,你可以設計視圖和常見的每一天的任務罐頭查詢。一旦你對數據庫感到滿意,你就可以開始列出當前設計的錯誤以及業務需求。也許你可以起草一個1.0版本的ERD,並根據業務需求以及你在當前系統中的專業知識來估算構建新系統的成本。

0

實際上,與流行的觀點相反,丟失的人造鑰匙並不會自動將數據庫設計爲「愚蠢的設計」。

所以是的,你應該試着去掌握數據庫,並嘗試做你的工作。即使需要半年才能完成所有工作,它仍然可能比調整生成數據的應用程序更便宜。

您的系統是否可以通過修改數據庫來改進,只能由專家分析確定。它超出了本網站的範圍。

0

請確保BD結構真的和您想象的一樣糟糕。也許你錯過了設計的邏輯嗎?更好地檢查,從長遠來看它會爲您節省時間。 另外,數據庫是否正常化?如果在各種表格中有很多重複的數據,那就不是。如果有一些嘗試對數據庫進行規範化(儘量減少數據重複),那麼設計中就有一些智能。否則,你可能是對的。

+0

有很多,我的意思是很多數據在各種表中重複。 – willCodeForBeer

+0

@willCodeForBeer這是一個嚴重的爭論,贊成愚蠢的陳述。把它放在你的問題! – geomagas

2

讓我們通過每個點的位置:

沒有標識(我加盟這對多列,但它是如此之慢)

你實際上意味着你有表之間沒有引用完整性有沒有列可以形成主鍵?如果那是你的意思,那麼我同意一個非標準化的表格是非常糟糕的。但是,如果有參照完整性(我認爲這是有問題的,這不是問題)。你繼續說它很慢,定義緩慢。如果需要10秒鐘查詢2萬億條記錄,我幾乎不會那麼慢。但是,如果需要10秒鐘查詢5行以上,則比較慢。

視圖表

內大量的計算現在,這是一個物化視圖?這意味着計算只執行一次,而表格是建立在昂貴的查詢之上的?或者你的意思是每次有針對性地執行一些昂貴的查詢?在後一種情況下,這是不好的,前者是正確的。

數據庫有很多的,我的意思是很多表的數以百萬計的 記錄

而且你的觀點是什麼? 2013年的數百萬條記錄並不多。此外,如果您正在融化數百萬條記錄,則可能是時候掛斷它。只有更多的數據,除了一些瘋狂的磁暴,破壞我們所知道的所有技術。

所以我的問題是如何處理這種情況?

學習集合論和關係設計。

+0

1.一些表格之間沒有完整性,所以我必須按照我的方式工作。而且服務器總是很忙,不時崩潰。有時從查看錶中獲取1000行需要20分鐘。 2.不,它不是。每次查詢時都會執行一些昂貴的查詢。 – willCodeForBeer

+1

@willCodeForBeer確定這是有用的信息。你能否用這些類型的細節更新你原來的問題,以便我們重新打開它?現在,我們沒有足夠的具體信息來幫助你。 – Woot4Moo

+0

@willCodeForBeer我同意Woot4Moo。如果你在你的問題中提出論據,事實,測量和例子(甚至是實際設計/數據的一部分),這很可能成爲一個很有趣的主題。 – geomagas