2010-03-09 40 views
22

我已經被賦予設計數據庫的任務來爲我們公司存儲大量信息。由於該任務相當大,並且包含多個模塊,用戶應該能夠完成這些任務,所以我很擔心爲此設計了一個好的數據模型。我只是不想結束設計糟糕的數據庫。查找示例的好地方數據庫設計 - 最佳實踐

我想有一些合同/結算/訂單等數據庫結構的體面的例子,以結合在一個很好的關係型數據庫中。有沒有可以幫助我解決這個問題的例子?

+1

這樣一個「大」的問題,但在你接受答案之前的這麼短的時間? – 2010-03-09 13:03:02

回答

8

在你開始閱讀規範化之前,直到你根本沒有任何問題。如果你只是在學校做過這些,你可能還沒有足夠的知識來設計它。

仔細收集每個模塊的要求。你需要知道:

業務規則(這是特定於應用程序,並且必須在礦井數據庫強制執行becasue他們必須在所有記錄中執行任何信號源),

是否有法律或監管問題(HIPAA例如或薩班斯 - 奧克斯利法案) 安全(確實的數據需要加密?)

做哪些數據需要存儲和爲什麼(可用其他地方這個數據)

哪些數據塊將只有一行數據,需要多行行

你打算如何強制每個表中的行的唯一性?你有自然鑰匙還是需要代理鑰匙(幾乎在所有情況下建議使用代理鑰匙)

你需要複製嗎?

您需要審覈嗎?

數據將如何輸入到數據庫中?它是來自應用程序一次記錄(或者甚至來自多個應用程序),還是其中一些來自ETL工具或另一個數據庫的批量插入。

你需要知道誰進入了記錄,當(極有可能,這將在企業制度是必要的。

將你需要什麼樣的查找表?數據輸入更爲精確的時候可以使用查找表和用戶限制值。

你需要什麼?

大約多少條記錄將系統有哪些?你需要有一個想法,知道有多大創建您的測試做什麼樣的數據驗證數據。

你打算如何查詢數據。你會使用存儲過程或ORM或動態查詢嗎?

在您的設計中需要記住一些非常基本的事情。爲您的數據選擇正確的數據類型。不要在字符串字段中存儲您打算進行數學計算的日期或數字。請將數學不適用的數字(零件號,郵政編碼,電話號碼等)存儲爲字符串數據,因爲您可能需要前導零。不要在一個字段中存儲多個信息。所以沒有逗號連接的列表(這些表明需要一個相關的表格),而當你發現自己正在做類似phone1,phone2,phone 3的事情時,馬上停下來設計一個相關的表格。爲了數據完整性的目的,請使用外鍵。

通過您的設計的所有方式考慮數據的完整性。沒有完整性的數據是毫無意義和無用的。爲了性能而設計,這在數據庫設計中至關重要,並不是過早的優化。數據庫不容易重構,所以重要的是首次正確地獲得性能方程中最關鍵的部分。事實上,所有數據庫都需要設計用於數據完整性,性能和安全性。

不要害怕有多個連接,正確索引這些將執行得很好。不要試圖將所有內容都放入實體值類型表中。儘量少用這些。試着學習從處理數據集的角度思考,這將有助於您的設計。數據庫經過優化,可以集中處理。

還有更多,但這足以開始消化。

2

請儘量將您的疑慮分開。能夠更新數據庫的用戶更多的是「應用程序設計」問題。如果你的數據庫設計正確,那麼它應該是爲它開發一個很好的前端。首先要看的是Normalization。這是從您的表中刪除任何冗餘數據的過程。這將有助於保持數據庫整潔,並且只存儲與您的需求相關的信息。

+0

感謝您的回答,我已經去過學校,知道正常化是什麼。我只是非常小心,因爲我不想讓我的第一個真正的項目失敗:)。這就是爲什麼我想看到一些示例規範化的關係數據庫。 – Younes 2010-03-09 10:15:58

+1

@Younes - 別擔心項目失敗,它發生在每個人身上......即使是最好的開發人員:)只要你徹底地整理了哪些信息*必須*存儲在數據庫中,那麼設計數據庫應該太難了。 – James 2010-03-09 10:50:37

+0

thx爲您的評論,我會盡量不要擔心太多。 – Younes 2010-03-09 10:58:45

0

數據庫不應該是模型。它用於在工作會話之間保存信息。

您不應該在數據模型上構建應用程序,而應該在遵循業務邏輯的良好的面向對象模型上構建應用程序。

完成對象模型後,請考慮如何保存和加載它,以及與之相關的所有數據庫設計。

(但顯然你的公司只是要你設計一個數據庫?不是應用程序?)

+0

正確,但我已經知道了。這並不是說我不知道​​數據庫是什麼或者什麼;)。只需要一個體面的數據庫工作。 – Younes 2010-03-09 10:35:54

+1

多個應用程序可能共享一個數據庫。加上公司數據的完整性對其生存至關重要。因此,數據庫準確地模擬公司的數據非常重要。 – APC 2010-03-09 10:38:54

+0

我能想到設計企業型數據庫的最糟糕的方法。 – HLGEM 2010-03-09 20:24:58

19

巴里·威廉姆斯已經公佈了約六百數據模型庫的各種應用。幾乎可以肯定的是,它將爲您提供所有子系統的「十人首發」。進入這個圖書館是免費的,所以check it out

聽起來這是你的組織想要的一個很大的「企業級」應用程序,而且你似乎有點像數據庫的初學者。如果可能的話,你應該從一個單一的子系統開始 - 比如訂單 - 並且讓它工作。不僅僅是數據庫表的構建,還有它的一些框架前端。一旦這足夠好,可以添加另一個相關的子系統,例如Billing。你不想結束一個龐大的怪物。

還要確保你有一個體面的數據建模工具。 SQL Power Architect對於免費工具來說已經足夠了。

+0

您好, 我試圖下載免費的工具。 googlecode.com給出了關於文件太大並因此被阻止的錯誤。您可以與我們分享您下載的內容嗎? 謝謝你,Anjan Bacchu – anjanb 2010-07-16 10:19:09

+1

+1對於Barry William的數據模型http://www.databaseanswers.org/data_models/ – Azi 2013-04-24 05:45:10