天天看點

【個人重構】資料庫設計之深度思考1、對表的思考:

背景:在浏覽網頁的時候看見了一篇文字,文章中寫的有關于資料庫的設計,看了之後感覺自己資料庫設計的太low了,是以對自己的資料庫進行了深度的剖析,又做了修改,以下是從幾方面對資料庫的思考。

1、對表的思考:

之前的表:   

【個人重構】資料庫設計之深度思考1、對表的思考:

  現在的表

【個人重構】資料庫設計之深度思考1、對表的思考:

首先對之前是checkDay和checkWeek 兩張表,因為兩個表字段是完全一樣的,導緻了資料庫的臃腫,是以這次設計我就把兩個表和成了一個表。同時把line表和online表也和成了一個表,為T_OnLineRecord.  對于表的命名遵循了命名規範。之前的注冊的時候是把學号和學生都注冊了,學号和卡号都在一個表裡,這樣就違背了資料庫的第三範式。是以這次我就把表分開了。也就是我們常說到的解耦。但是發現分開後并不是很友善,剛開始是想:如果這個系統是學校用的話,那麼學号肯定學校都是已經注冊好的了。這個學号就跟着四年,而卡号應該是自動生成的,比如從000001到999999之類的,這樣應該就很好了,還有一種就是如果點選注冊的話把兩個窗體都show出來,并排顯示,然後先注冊學生,然後繼續注冊卡号就友善多了。

于是在設計資料庫的時候表就從11到9個了

 2、對于資料類型

可以清晰的看出來我上次的資料庫設計完全都是char(10), 雖然char的效率比較高,但是占用的記憶體也大,如果說一個特别大的資料庫的畫,每個字段的資料類型設定的都不太合适,那勢必會給資料庫帶來很多麻煩,資料庫也就變得很臃腫,經過思考後,将學号改成char(12)

因為咱們學校的學号是12位的,學生姓名資料類型改成char(8),性别改成char(2),系别改成char(20),年級在窗體上設計的是選擇,選大一,大二等等,是以改成char(4),對每個表進行這樣的思考後,感覺資料庫都瘦了一圈。同時在網上查後發現有用資料類型的簡寫加上字段的名字來命名資料庫的列名,是以自己也就那麼改了,比如CardNo 改成了Chr_CardNo 這樣在機房收費系統中看見後就知道它的資料類型是什麼了。

numeric(a,b)函數有兩個參數,前面一個為總的位數,後面一個參數是小數點後的位數,例如numeric(5,2)是總位數為5,小數點後為2位的數,也就是說這個字段的整數位最大是3位。

date是SQL Server 2008新引進的資料類型。它表示一個日子,不包含時間部分,可以表示的日期範圍從公元元年1月1日到9999年12月31日。隻需要3個位元組的存儲空間。

  DateTime 日期和時間部分,可以表示的日期範圍從公元1753年1月1日00:00:00.000到9999年12月31日23:59:59.997 ,精确到3.33毫秒,它需要8個位元組的存儲空間。

【個人重構】資料庫設計之深度思考1、對表的思考:

下面是設計好的部分字段。

【個人重構】資料庫設計之深度思考1、對表的思考:

為了程式的更加簡便性這次資料庫用到了視圖和存儲過程

【個人重構】資料庫設計之深度思考1、對表的思考:

小結:這篇部落格寫的有點亂,想到哪裡也哪裡,并沒有什麼條理,但是對資料庫思考後感覺收獲很多,不僅複習了有關資料類型的知識,而且也為整個系統着想,如何為系統瘦身,更重要為使用者着想,沒事兒想想使用者需要的是什麼樣的系統。經常這樣想我相信以後做項目會越做越好。

同時希望各位大神指導。

繼續閱讀