官术网_书友最值得收藏!

2.4 數據庫的設計步驟和方法

設計數據庫的目的實質上是設計出最優的數據庫模式,使之能夠有效地存儲數據,滿足用戶的實際需求。在初始設計數據庫時,難免會發生錯誤或遺漏數據,完成初步設計后,利用示例數據對其進行測試,在Access中很容易對原設計方案進行修改,可是在輸入大量數據之后,再想修改就比較困難。正因如此,在開發完整的數據庫系統前,應確保設計方案的合理性。

2.4.1 總體設計

創建數據庫之前,第一個步驟是確定數據庫的用途,專業術語稱為“需求分析”,即開發者需要確定希望從數據庫中得到什么信息。例如,學生信息管理是學校管理工作中的主要環節之一,涉及學生基本信息管理、住宿管理、成績管理、課程管理等方面。隨著每年新學期的開始,學生的信息也在不斷地變化。為了提高學生管理的效率,可以創建一個“學生信息管理”數據庫。

在創建此數據庫之前,需要確定其完成的功能,包括以下幾點。

☆ 能輸入和修改學生的基本信息,如學號、姓名、性別、出生日期、專業等。

☆ 能輸入和修改學生每學期的課程信息,如課程名稱、授課老師、上課時間等。

☆ 能輸入和修改學生各學期各門課程的成績信息,如學期名稱、課程名稱、相應成績、是否及格等。

☆ 能輸入和修改學生的住宿信息,如宿舍號、宿舍電話、宿舍人數等。

☆ 能夠查詢學生的平均成績、最好成績、最差成績等信息。

☆ 生成標簽報表,打印每個學生的基本信息。

☆ 設置登錄名和密碼登錄系統,查詢以上信息。

從以上的例子可以看出,在確定數據庫的用途時,希望數據庫提供的一系列信息也隨之顯示出來。由此,可以確定在數據庫中存儲哪些事件,以及每個事件屬于哪個主題。這些事件與數據庫中的字段相對應,事件所屬的主題則與表相對應。

當然,構建系統所需要的大多數信息都來源于最終的用戶,這意味著開發者可以和他們進行交流探討以了解得更加全面。同時,在實際創建數據庫之前,開發者不妨先在紙面上草擬一些希望數據庫生成的報表,或者收集當前用來記錄數據的表格,還可以參考某個設計得很好且與當前要設計的數據庫相似的數據庫,從而確保設計出合理的方案。

2.4.2 設計表

這是數據庫設計過程中最重要的一個環節,也是最難處理的一個步驟。因為表對象是整個數據庫的基礎,也是查詢、窗體和報表對象的基礎。表結構設計的好壞會直接影響數據庫的性能。一個良好的數據表設計應該具備以下幾點。

☆ 表不應包含備份信息,表之間不應包含重復信息,從而減少冗余數據;否則不僅會浪費空間,還會增加出錯可能性。

☆ 每個表應該只包含關于一個主題的信息。

由此可知,開發者可以將信息劃分為各個獨立的主題,每個主題都可以被設計成為數據庫的一個表。例如,在“學生信息管理”數據庫中可以劃分為學生、課程、成績等,因此可以設計“學生信息”表、“班級”表、“成績”表、“課程”表、“宿舍”表等,如圖2-1所示。

圖2-1 “學生信息管理”數據庫中的表

2.4.3 設計字段

每個表中都應包含同一主題的信息,即表中的字段應圍繞這個主題而創建。在設計表中字段時,應注意以下幾點。

☆ 字段應涉及所有需要的信息。

☆ 以最小的邏輯部分存儲信息。例如,學生姓名通常分為兩個字段存儲,即“名字”和“姓氏”。

☆ 不要創建相互類似的字段。例如,在“供應商”表中,如果創建了“產品1”和“產品2”字段,就很難查找所有提供某一特定產品的供應商。

☆ 不應包含派生或計算得到的數據。例如,如果有“單價”和“數量”字段,就不要額外再創建一個“總價”字段存儲這兩個字段值的乘數。該數據完全可以通過建立查詢來實現。

☆ 明確有唯一性的字段。

為了連接保存在不同數據表中的信息,Access數據庫中的每個數據表必須設置主鍵字段。例如,在“學生信息”表中設計“學號”“姓名”“性別”“出生日期”“籍貫”等字段,其中,設置“學號”字段為主鍵,如圖2-2所示。

圖2-2 “學生信息”表中的字段

2.4.4 設計關系

Access數據庫中的數據被保存在不同的表中,因此必須要有一些方法能夠連接這些數據,使之作為一個整體使用,建立表間的關系即可解決此問題。

例如,在“學生信息管理”數據庫中,想要查看一個學生的基本信息及其所住宿舍的信息,一個學生只能有一個宿舍,而一個宿舍可以有多位學生,在“宿舍”表和“學生信息”表之間建立一對多關系后,就可以把這兩個表中的數據結合在一起查詢了,如圖2-3所示。

圖2-3 “學生信息管理”數據庫中的表關系

數據庫表關系要求關系中所涉及的兩個表內有唯一的字段,如果表中沒有唯一的字段,則數據庫引擎無法正確鏈接并提取相關的數據。這時就需要向表中添加一個額外的字段,讓該字段作為與其他表形成關系的點。

2.4.5 優化設計

在設計完需要的表、字段和關系后,應該檢查設計并盡量找出任何可能存在的不足,因為改變當前數據庫的設計要比改變已經輸入數據的表容易得多。

開發者應在每個表中輸入充足的示例數據,以方便檢查設計。可以創建各種查詢,從得到的結果來檢查數據庫中的關系,還可以創建窗體和報表的草稿,檢查顯示的數據是否符合期望,從中查找不需要的重復數據,并對其修改。

另外,許多表結構在當時使用效果非常好,但常常會因為用戶修改或添加數據而崩潰。在用戶使用過程中,開發人員會發現經常需要重新設計表的結構來適應這些變化;并且表結構發生變化時,所有相關的內容也會發生變化。因此,預測這些變化可以減少問題的發生。

2.4.6 創建窗體

經過優化設計后,如果當前的表結構符合期望,就可以在表中添加所有的數據了,然后是設計窗體。在Access數據庫系統中,開發者和使用者往往是分離的,而窗體設計更多地需要站在使用者的角度。因此,設計一個操作方便、外觀美觀的界面在數據庫設計中占有相當重要的地位。

窗體以表或查詢為數據源。設計窗體之前,若當前存在的表不滿足需求,開發者還需創建查詢來作為數據源。

設計窗體時需要在屏幕上放置以下三類對象。

☆ 標簽和文本框控件,方便輸入數據。

☆ 其他特殊控件,如按鈕、列表框、復選框等。

☆ 美化窗體效果的圖表對象,如顏色、線條、矩形等。

設計窗體時,將上述控件放置在窗體中的相應位置,并設置對應的事件屬性,即設置對應的宏,至此,一個簡單的數據庫系統就設計完成了。若要完成更復雜的功能,設計相應的VBA模塊對象即可。

主站蜘蛛池模板: 仁化县| 卓资县| 汤原县| 平湖市| 当雄县| 安国市| 南溪县| 昆山市| 武乡县| 宜宾市| 阳城县| 阳原县| 赤壁市| 沧州市| 新干县| 禄丰县| 莆田市| 隆化县| 二连浩特市| 农安县| 化德县| 弥勒县| 三门峡市| 龙山县| 涡阳县| 互助| 姚安县| 奉新县| 阿拉善左旗| 墨玉县| 嘉定区| 东宁县| 濉溪县| 凤冈县| 洱源县| 宜兰县| 古田县| 龙里县| 绥滨县| 开鲁县| 拉萨市|