2009-10-29 20 views
2

我作爲一名學生工作的網站將在不久的將來進行重新設計和發佈,並且我已被分配了手動搜索數據庫中每個表格的任務,該網站使用該表格查找我們可以考慮刪除的表格。我正在通過Dreamweaver中的每個HTML文件源代碼進行搜索,但我希望有一種自動方式來檢查我的工作。有沒有人有任何建議,如何在商業世界中做到這一點?從大型數據庫中清除SQL表?

回答

2

如果您通過代碼進行搜索,您可能會發現從未使用過的SQL,因爲用戶從不在應用程序中選擇這些選項。

相反,我建議您打開數據庫審計並記錄實際使用的SQL。例如in Oracle you would do it like this。其他主要數據庫服務器具有相似的功能

從日誌數據中,您不僅可以識別正在使用的表格,還可以識別它們的使用頻率。如果架構中有任何表在審計周內沒有顯示,或者很少顯示,那麼您可以使用文本搜索工具在代碼中進行調查。

一旦你有候選表從數據庫中刪除,並從你的經理批准,然後不要刪除表,再次創建它們作爲空表,或者在表中放置一個虛擬記錄大多爲空值(或零或空白),除了名稱和描述性字段,您可以在其中放入「DELETED」,「報告錯誤DELE以支持中心」等。這樣,應用程序不會因爲硬錯誤而失敗,並且您有機會找出當這些未使用的表結束時用戶正在做什麼。

+0

同樣,這隻會給你自從你開始觀看以來所使用的內容。更好地評估整個應用程序並確定在改造中將會做什麼。 –

1

對DB(Visio,Toad等)進行反向工程,記錄結構並詢問他們需要的新站點的設計者 - 然後重構。

+1

謝謝。我不能投票給你,因爲我「沒有足夠的聲譽」,但這是我尋找的方法。我是一名初學者程序員,我仍然熟悉事物的過程。 – nlast

0

如果在HTML源代碼中指定了表名(如果這是他們唯一指定的地方!),那麼可以在文件中搜索數據庫中每個表的名稱。如果有很多表,可以考慮使用像grep這樣的工具,並創建一個腳本,該腳本針對每個表名稱,針對源代碼庫(HTML文件以及任何可以通過名稱引用表的其他人)運行grep。

說了這麼多之後,我仍然會遵循Damir的建議,並向數據設計人員提供刪除候選人列表以供驗證。

0

我猜你沒有對數據訪問或用戶界面進行任何測試,因此無法驗證什麼和未使用。只要數據訪問一致,腳本就是您最好的選擇。讓它搜索出正在調用的表/視圖/存儲過程,並將它們轉儲到文件以進一步分析。這至少會給你一個從某個地方實際調用的所有東西的列表。至於如果這些網頁實際上在任何地方使用,那是另一回事。

一旦獲得了正在調用的數據庫元素的列表,請將其與數據庫中的用戶定義元素列表進行比較。這會給你那些可能被刪除的。

所有這些話,如果網站正在重新設計,那麼新的數據庫模式可能實際上是一個更好的方法。開始新鮮和導入舊數據通常比查找死表和字段的密集程度要低。

1

我會通過HTML源代碼的關鍵詞梳理入手:

  • 選擇
  • INSERT
  • UPDATE
  • DELETE

...用grep在/ etc。這些都不是HTML實體,並且您不能可靠地使用表名,因爲您可能正在處理視圖(假設系統中存在任何視圖)。然後你必須自己傾吐陳述來確定使用的是什麼。

如果在系統中使用[希望]功能和/或存儲過程,大多數數據庫都有參考功能來檢查依賴關係。

這將是一個逐屏創建設計文檔的好時機,列出屏幕&上的屬性,其中的值來自數據庫中的table.column級別。

編譯使用的表的列表,並與數據庫中的實際內容進行比較。