數據庫不是想象出來的,而是根據業務部門的需求設計的。因此,在形成數據庫之前,需要充分了解業務需求。1.完全理解業務需求。需求分析是整個設計過程的基礎,也是最困難最耗時的壹步。在此期間,通過與業務部門的溝通,了解用戶的想法和工作流程。通過雙方的反復溝通,會形成初步的數據模型。當然,此時的數據模型不會是最終的模型,需要我們和用戶溝通,在以後的信息系統開發過程中會反復修改。2.註意輸入和輸出。在定義數據庫表和字段需求(輸入)時,首先要了解數據的生成來源和數據流,也就是要知道每壹個數據是在哪裏生成的,數據在哪裏表示,以什麽形式表示,然後根據用戶提供的報表或者用戶設計的報表、查詢、視圖(輸出),決定需要哪些表和字段來支持這些輸出。3.創建數據字典和ER圖表。ER圖表和數據字典可以讓任何了解數據庫的人清楚如何從數據庫中獲取數據。ER圖表對於顯示表之間的關系非常有用,而數據字典顯示每個字段的用途和任何可能的別名。這對於SQL表達式的文檔來說是絕對必要的。需要註意的是,在需求分析和研究的過程中,並不是壹帆風順的,因為業務人員對業務的理解不同,信息知識的缺乏,都會影響需求分析的質量。為了提高質量,各方應該花更多的時間相互溝通和理解,業務部門需要自始至終與業務專業人員充分合作,而開發人員則盡量用用戶理解的業務術語進行溝通,這樣會避免因理解不同而產生的歧義。第三,設計合理的表格結構
通常,合理的表結構會減少數據冗余,提高數據庫的性能。設計壹個合理的表結構應該遵循以下兩點。1.數據的標準化和規範化有助於消除數據庫中的數據冗余。標準化有幾種形式,但3NF(第三範式)通常被認為是在性能、可伸縮性和數據完整性方面實現了最佳平衡。簡單來說,符合3NF標準的數據庫的表設計原則是,壹個表只包含自己的基本屬性,當不是自己的屬性時需要進行分解。表之間的關系由外鍵連接。它有以下幾個特點:有壹組專門存儲相關數據的表,用鍵連接。例如,存儲單井信息及其油井生產日常信息的3NF數據庫有兩個表:單井基本信息和油井日常信息。日常信息不包含任何單井信息,但表中會存儲壹個鍵值,指向單井基本信息中包含油井信息的那壹行。但也有例外,有時候為了效率,不規範表格是必要的。2.考慮各種變化。設計數據庫時,要考慮哪些數據字段將來可能會發生變化。使數據庫更具可擴展性,從而減少未來數據變化帶來的損失。比如日期型字段,有時候我們會考慮用字符型代替日期型,因為處理日期型字段容易出現數據錯誤,所以我們用字符型。這樣的例子很多,做初步設計的時候要考慮。表格結構的設計不可能壹次成功。在信息系統開發過程中,會出現讀取、輸入或統計數據的困難。為了解決這些問題,會修改表結構,或者增加壹些字段,或者修改壹些字段的屬性。這個過程是反復的,所以不要以為壹下子就能成功。建議使用特殊的設計工具來完成這些任務。我經常用SYBASE PowerDesigner,當然還有其他工具:ORACLE Designer 2000,ROSE等等。這樣會事半功倍。第四,選擇合理的指數
索引是從數據庫中獲取數據的最有效的方法之壹。95%的數據庫性能問題可以通過索引技術解決。1.對邏輯主鍵使用唯壹分組索引,對系統鍵使用唯壹未分組索引(作為存儲過程),對任何外鍵列使用未分組索引。考慮數據庫有多少空間,如何訪問表,這些訪問是否主要用於讀寫。2.大多數數據庫索引自動創建的主鍵字段,但不要忘記索引外鍵,外鍵也是常用的鍵,例如運行查詢以顯示主表和所有相關表中的記錄。3.不要索引大字段(字符多),這樣會使索引占用太多存儲空間。例如備忘錄和文本。4.不要索引常用的小表。不要為小數據表設置任何鍵,尤其是如果它們經常有插入和刪除操作。這些插入和刪除操作的索引維護可能比掃描表空間花費更多的時間。例如代碼表或系統參數表。五.確保數據完整性
數據的完整性很重要,關系到數據的準確性。不準確的數據是沒有價值的,所以保證數據的完整性非常重要。1.完整性實現機制:實體完整性:主鍵參照完整性:刪除父表中的數據:級聯刪除;限制性刪除;在空父表中插入數據:有限插入;遞歸地將更新數據插入父表:級聯更新;受限更新;Null DBMS可以通過兩種方式實現參照完整性:外鍵實現機制(約束規則)和觸發器實現機制自定義完整性:非NULL;;檢查;以上觸發器的完整性機制需要熟悉和掌握,對於數據的完整性非常重要。2.用約束代替業務規則強制數據完整性,用數據庫系統實現數據完整性。這不僅包括通過標準化實現的完整性,還包括數據的功能性。還可以在寫數據的時候添加觸發器,保證數據的正確性。不依賴業務層保證數據完整性;它不能保證表(外鍵)之間的完整性,所以不能強加在其他完整性規則上。3.強制完整性指示在有害數據進入數據庫之前將其清除。激活數據庫系統指示的完整性特征。這可以保持數據的整潔,並迫使開發人員花費更多的時間來處理錯誤情況。4.使用搜索控制數據完整性來控制數據完整性的最佳方法是限制用戶輸入。只要有可能,就應該為用戶提供壹個清晰的值列表以供選擇。這將減少鍵入代碼時的錯誤和誤解,並提供數據壹致性。壹些公開的數據特別適合查找:性別代碼、單位代碼等。5.視圖是壹個虛擬表,其內容由SQL語句定義。視圖不僅可以簡化用戶對數據的理解,還可以簡化用戶的操作。那些經常使用的查詢可以定義為視圖,這樣用戶就不用每次都指定未來操作的所有條件。此外,用戶只能查詢和修改他們可以通過視圖看到的數據。數據庫中的其他數據既看不見也檢索不到。數據庫授權命令可以將每個用戶對數據庫的檢索限制到特定的數據庫對象,並增強數據的安全性。不及物動詞結束語
數據庫的高效運行不僅需要技術支持,還需要硬件平臺和網絡的支持以及數據庫管理員的有效管理。本文僅從技術角度說明如何提高數據庫的效率,但在實際應用過程中其他方面的支持也是不可或缺的,尤其是數據庫管理。數據庫建設是“三分技術,七分管理,十二分基礎數據”,所以壹定要重視數據庫管理,管理到位,技術才能發揮應有的作用。