開發資料庫計劃
建立資料庫的第一步是建立計劃,作為資料庫實作時的指南以及資料庫實作之後的功能性規格。資料庫設計的複雜性和細節取決於資料庫應用程式的複雜性和大小,以及使用者的人數。
資料庫應用程式的性質和複雜性,以及規劃的過程,可能會有很大的差異。資料庫可以因專為個人使用所設計而相當簡易,也可以很龐大複雜,例如針對擁有成千上萬個用戶的銀行交易而設計。在第一個情況中,資料庫設計可能只需要在一些草稿紙上寫下注意事項即可。在第二個情況中,設計將是一份幾百頁的正式文件,裡面包含了資料庫的每個可能細節。
在規劃資料庫時,不管其大小與複雜度為何,都請使用下列基本步驟:
- 收集資訊
- 識別物件
- 建立物件模型
- 識別每個物件的資訊類型
- 識別物件之間的關聯
收集資訊
在建立資料庫之前,您必須充分瞭解資料庫所要執行的工作。若資料庫的作用是取代紙上作業或手動操作的資訊系統,現有的系統將提供您所需的大多數資訊。務必詢問系統所涵蓋的每個人,瞭解他們做什麼,以及需要從資料庫中得到什麼資料。您也需要識別他們希望新系統做什麼,並識別任何現有系統的問題、限制和瓶頸。收集客戶清單、庫存清單、管理報表和現有系統的任何其他文件副本,因為這些資料在設計資料庫和介面時都非常有用。
識別物件
在收集資訊的過程中,您必須識別資料庫所要管理的主要物件或實體。物件可為實體項目,例如人或產品,也可以是非實體項目,例如企業交易、公司中的部門或薪資發放週期。通常會有少數的主要物件,而且識別它們之後,關聯的項目就很顯而易見。資料庫中的每個個別項目都應該有對應的資料表。
在 SQL Server 2005 內檢附的 AdventureWorks 範例資料庫中,所包含的主要物件為自行車。在這家公司的運作流程中,與自行車相關的物件有製造自行車的員工、銷售製造自行車時所用元件的供應商、購買自行車的客戶,以及與客戶進行的銷售交易。每一個述及的物件都是資料庫中的一個資料表。
建立物件模型
當您識別系統中的物件之後,應該以視覺化的方式來表現該系統並進行記錄。您可使用資料庫模型作為資料庫實作過程的參考。
基於此目的,資料庫開發人員可使用各種工具,從紙筆到文書處理或試算表程式,甚至需要用到專為資料庫設計模型而寫的軟體程式。不管您決定使用什麼工具,都必須隨時更新它。
識別每個物件的資訊類型
當您識別資料庫中的主要物件,以作為資料表的候選者之後,下一步就是識別每個物件所要儲存的資訊類型。這些就是物件資料表的資料行。資料庫資料表中的資料行包含一些共同的資訊類型:
- 原始資料行
這些資料行儲存的是實際資訊 (例如姓名),取決於資料庫外部的來源。 - 類別資料行
這些資料行可將資料加以分類或群組,並儲存有限的資料選項,例如 True/False、已婚/單身,和副總裁/主任/事業群經理等等。 - 識別碼資料行
這些資料行提供了一種機制,可識別資料表中儲存的每個項目。這些資料行的名稱中通常會有識別碼或編號,例如 employee_id、invoice_number 和 publisher_id。識別碼資料行是使用者與內部資料庫處理所使用的主要元件,可用來存取資料表中某個資料列的資料。有時候資料表中的物件會使用實際形式的識別碼,例如身分證號碼,但在大多數情況下,您可以定義資料表,為資料列建立可信賴的假造識別碼。 - 關聯或參考資料行
這些資料行會在資料表的資訊與另一個資料表中的相關資訊之間建立連結。例如追蹤銷售交易的資料表一般會有一個連結指到 customers 資料表,以便讓完整的客戶資訊可與銷售交易彼此關聯。
識別物件之間的關聯性
關聯資料庫的優點之一是可替資料庫的各個項目建立相關或關聯資訊。您可個別地儲存獨立的資訊類型,不過 Database Engine 會在需要時合併資料。若要在設計的過程中識別物件之間的關聯性,您必須檢視資料表、決定它們的邏輯關係,並加入關聯資料行,以建立資料表到其他資料表的連結。
例如,AdventureWorks 資料庫的設計者替資料庫中的產品和產品型號建立了資料表。Production.Product 資料表包含每項產品的資訊,包括名為 ProductID 的識別碼資料行,以及其他各種資料行,例如產品名稱、產品價格、產品大小、產品色彩和產品重量等等。資料表包含了類別資料行 (例如 Class 或 Style),可讓產品依這些類型進行分組。每個產品也都有各自的產品型號,但該資訊是儲存在另一個資料表中。因此,Production.Product 資料表有 ProductModelID 資料行,只儲存產品型號的識別碼。為產品加入一列資料時,ProductModelID 的值必須已存在於 Production.ProductModel 資料表中。