我最近從事IT方面的工作,雖然我的專長是應用程序設計,但我一直負責修復和更新他們當前的數據庫結構和應用程序。多個數據庫,更少的表?一個數據庫,很多表?
他們當前的數據庫包含20個相互關聯的數據庫,與數百名在數百個不同的意見(無存儲過程)。一切都與一系列訪問前端相關聯。
現在服務器架構是非常奇怪的,對面有含有相同或接近相同數據的數據庫一噸重複的表,所以很明顯這在很大程度上可以被合併了。然而,以前的開發奠定了應用程序的方式是讓每一個單一的應用程序單獨的數據庫,一個名爲「Shared_Tables」另一個數據庫包含一些的需要表之間傳遞信息。
現在我的主要問題是,因爲我基本上是從頭開始爲公司創建一個新的系統結構,是否有使用分離數據庫的任何真正的優勢,或者將它們合併到一個數據庫中一樣有效,假設他們都在同一個實例上運行?值得注意的是,沒有一個數據庫具有主鍵,唯一鍵,外鍵等等。而且,當它們應該相同時,跨多個字段的數據類型會有所不同。
** **首先修復*沒有主鍵,外鍵*問題 - 一旦這項工作到位,以及工作 - *那麼*想想別的....誰「設計」這樣的數據庫應該從禁止再次觸摸鍵盤...... –
數據庫中包含近5年的數據,在某些情況下,我試圖開始吱吱作響主鍵和外鍵,但它導致了其他一些問題出現。當我說這個數據庫是一場噩夢時,這是一個巨大的輕描淡寫。 和固定的PK/FK的問題是許多跨多個數據庫的PK/FK跨度的另一個主要問題... –
一旦系統有所穩定,有適當的PK + FK,我會嘗試,看看有多少表可以通過合併這些數據庫來消除。我傾向於認爲一般數據庫越少越好 - 不要將表分成過多的數據庫。例如,您無法跨數據庫邊界執行聲明性參照完整性。如果你有太多的表 - 嘗試使用SQL Server的** schema **功能 - 對於處理權限也非常適合,基於功能的「區域」。 –