機房收費系統的資料庫設計

來源:互聯網
上載者:User

這次機房收費系統的資料庫設計與上一次有很大不同,之所以會引起不同,是因為遵循了資料庫設計第三範式。
 
什麼是資料庫設計第三範式在我以前的文章中有所體現,《資料庫設計第三範式》
 
我們先來看看前後的不同之處:
 
第一次共有10張表:結賬資訊,基本資料,上下機記錄,退卡資訊,正在上機資訊,正在工作老師資訊,
儲值記錄,學生資訊,使用者資訊,工作記錄。
 
而第二次,精簡到了9張表:

合并正在上機資訊表和上下機記錄表,合并了正在值班老師資訊表和工作記錄表,將學生資訊表分為學生基本資料表和上機卡資訊表

減少了冗餘資訊。
 
到底怎麼減少了冗餘資訊,舉個例子:
原來的上下機記錄欄位包括:

序號,卡號,學號,學生姓名,學院,年級,性別,上機日期,上機時間,下機日期,下機時間,消費時間,消費金額,餘額,卡狀態,機器號

學生資訊包括:

學號,姓名,卡號,學院,年級,性別,餘額,操作員,卡狀態,是否結賬,註冊日期,註冊時間
 
正在上機資訊表欄位包括:卡號,學號,學生姓名,學院,年級,性別,上機日期,上機時間,機器號
 
我們看到:

序號,卡號,學號,學生姓名,學院,年級,性別這些資訊是重複的,而且學生資訊中,學生資訊和上機卡資訊是混合在一起的。這些明顯不符合資料庫設計第三範式。
 
在本次資料庫設計中,
正在上機資訊表和上下機記錄表合并為上下機記錄表,包括欄位:

卡號,上機日期,上機時間,下機日期,下機時間,消費時間,消費金額,操作員,機器號,卡狀態,是否結賬

將學生資訊分解為卡資訊和學生資訊
卡資訊表欄位:卡號,註冊日期,註冊時間,學號,餘額,操作員,是否結賬,卡狀態
學生資訊表欄位:學號,姓名,學院,年級,班級,性別
 
對比兩次設計,我們明顯可以看到,減少了資料冗餘,學生表和卡資訊表之間有外鍵約束,而卡資訊與上下機記錄是一對多的關係。如果以後機房收費系統的學生資訊要和教務系統的學生資訊掛鈎,那麼只需替換掉學生資訊一張表就可以搞定。反觀第一種設計,會發現,整個資料庫設計必須重新推倒
 
事物往往具有多面性,設計範式也會帶來一定的麻煩:操作查詢困難,因為需要聯絡多個表才能得到所需要資料,而且範式越高效能就會越差。

打個比方:查詢上下機記錄需要顯示,學號,卡號,學生姓名,上下機資訊相關欄位。
第一次的設計,只需要查詢一張表就可以搞定
而遵循資料庫第三範式的設計,卻要查詢三張表。
 
所以使用多高的範式需要權衡利弊,一般在項目中,使用到第三範式也就足夠了,效能好而且方便管理資料。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.