建立資料庫的第一步是制訂計劃,該計劃可在實作資料庫時用作指南;也可以在資料庫實作完成後,用作資料庫的功能說明。資料庫設計的複雜性和細節由資料庫應用程式的複雜性和大小及使用者數确定。
資料庫應用程式的性質和複雜性以及對其進行計劃的過程可以變化很大。資料庫可以相對簡單,如為單人使用設計的資料庫;它也可以很大、很複雜,如為處理數百萬顧客的所有銀行事務而設計的資料庫。對于前一種情況,資料庫設計可能隻需要在一些草稿紙上寫幾個備注即可。對于後一種情況,設計可能是數百頁的正式文檔,其中包含有關資料庫的各種可能細節。
在計劃資料庫時,不管其大小和複雜性如何,都要經過下列基本步驟:
收集資訊。
辨別對象。
建立對象模型。
辨別每個對象的資訊類型。
辨別對象之間的關系。
收集資訊
在建立資料庫之前,必須對期望資料庫執行的工作有一個透徹的了解。如果資料庫用于替換基于紙張或手工執行的資訊系統,則現有的系統能為您提供所需的大多數資訊。與系統中所涉及的每個人進行交流,以找出他們所做的工作以及他們需要從資料庫中獲得的内容是很重要的。了解他們希望新系統完成的工作,以及找出現有系統的問題、限制和瓶頸也很重要。收集客戶結算、庫存清單、管理報表以及屬于現有系統的任何其它文檔的複本,因為這些對于設計資料庫和界面非常有用。
辨別對象
在收集資訊的過程中,必須辨別将由資料庫管理的主要對象或實體。對象可以是一個有形的實體(如一個人或一個産品),也可以是一個無形的項目(如某項業務事務、公司中的某個部門或某個付薪周期)。通常會有幾個主要對象,辨別了這些對象之後,相關的項目就會變得清晰。資料庫中每個不同的項目都應有一個對應的表。
Microsoft® SQL Server™ 2000 附帶的 pubs 示例資料庫中的主要對象是書籍。在該公司的業務内,與書籍相關的對象有:撰寫該書的作者、生産該書的出版商、銷售該書的書店和書店所執行的銷售事務。這些對象中每一個都是資料庫中的一個表。
建立對象模型
辨別了系統中的對象後,使用該系統的一種直覺表示方式對這些對象進行記錄是很重要的。在資料庫實作期間,可以使用資料庫模型作為參考。
鑒于此目的,資料庫開發人員使用各種工具進行資料庫設計,在技術複雜性方面,這些工具可以是簡單的鉛筆和草稿紙,也可以是字處理或電子表格程式,甚至可以是專門為資料庫模組化工作設計的軟體程式。不管決定要使用哪一種工具,總保持使用最新的工具是很重要的。
SQL Server 企業管理器包括可視化設計工具(如資料庫設計器),可用于設計和建立資料庫中的對象。
辨別每個對象的資訊類型
将資料庫中的主要對象辨別為候選表後,下一步是辨別必須為各對象存儲的資訊類型。這些資訊是對象的表中的列。資料庫表中的列包含幾個常見的資訊類型:
原始資料列
這些列存儲有形資訊(如名稱),由資料庫外部的源确定。
分類列
這些列對資料進行分類或分組,并存儲有限選擇範圍的資料(如真/假、已婚/單身、副總裁/主管/組長等等)。
辨別符列
這些列提供對存儲在表中的每個項目進行辨別的機制。這些列的名稱中有一個 id 或 number(例如,employee_id、invoice_number 和 publisher_id)。辨別符列是使用者和内部資料庫處理通路表中的一行資料時所用的主要元件。有時,可以在表中使用對象的有形 ID(如社會保險号),但在大多數情況下,定義表時可以為行建立可靠的人工 ID。
關系或引用列
這些列建立一個表中的資訊和另一個表中相關資訊的連結。例如,跟蹤銷售事務的表通常與 customers 表有連結,以便可以将完整的客戶資訊與銷售事務關聯。
辨別對象間的關系
關系資料庫的一種優勢是聯系或關聯資料庫中各種項目的有關資訊的能力。可以單獨地存儲獨立的資訊類型,但資料庫引擎可以在必要時組合資料。在設計過程中,辨別對象間的關系需要檢視各種表,确定它們邏輯相關的方式,以及添加關系列以建立一個表與另一個表間的連結。
例如,pubs 資料庫的設計者已經在資料庫中為書名和出版商建立了表。Titles 表包含每種書的資訊:一個名為 title_id 的辨別符列;書名的原始資料列、書價、出版日期和一些有關書的銷售資訊列。該表包含名為 type 的分類列,利用該列可按照書中的内容類型對書進行分組。另外,每本書都有一個出版商,但出版商資訊是在另一個表中,是以,titles 表有一個 pub_id 列以存儲出版商的 ID。當為某一種書添加一行資料時,出版商 ID 與書的其它資訊一起存儲。