1. 程式人生 > >VB.NET版機房收費系統—數據庫設計

VB.NET版機房收費系統—數據庫設計

階段 數據類型 多人 不能 can log lai tex asi

之前第一遍機房收費的時候,用的數據庫是別人的。認知也僅僅能建立在別人的基礎上,等自考中《數據庫系統原理》這本書學完了之後,再去看曾經的數據庫,發現數據庫真的還須要進一步的優化。以下是我設計數據庫的一些見解。希望大家多提些意見。

數據庫設計

E-R模型:

在觀念模型設計階段,一個系統都是建立在ER模型上的,設計好ER模型,非常重要。

我設計的ER圖:

技術分享

系統中的實體:非常easy,就是將系統中的名詞都抽象出來,再詳細了就是轉換為數據庫的邏輯設計時才要考慮的。

系統中的聯系:在圖中能夠看得非常清楚,這裏我要重點說的是:

(1)我將T_student表和T_card表分開。是由於之前的設計違反了第三範式,學生和卡號為什麽是一對一的關系呢?由於我的設計思想是:一個學生僅僅能有一張卡能夠正常使用。其它的,比方說,學生丟了卡了,之前的那張卡不能夠使用了。可是卡表裏面還是會保存這張不在使用的卡的信息。因此,卡表和學生表分開。但一個學生僅僅能使用一張卡。

(2)這次設計,將曾經的line表和online表和為一張表T_online表,圖1所看到的;將曾經的onWork和wordlog表合為一張表T_WordLog表。圖2所看到的。將CheckWeek表刪除(由於和CheckDay表一樣,僅僅是查詢條件不同罷了。


技術分享


設計後的T_line表:

技術分享

圖1


技術分享

設計後的T_WordLog表:

技術分享

圖2

ER的聯系:系統ER圖中,能夠非常清楚的看到他們之間的聯系。有1對1。1對多。多對1。多對多的,這個關系一定要理清,就算你的和別人的不一樣。沒有關系。由於設計的時候,想法不一樣,就會產生不同的效果。

ER的屬性:詳見後面關系模型。

綜上就是ER圖的設計,事實上。ER設計出來的時候,非常多人都有不同的想法,比方,有的人說我的學生表和卡表分開就會非常亂,註冊的時候。要分開註冊,非常復雜。我認為大家能夠各自嘗試一下,仁者見仁、智者見智嘛!

僅僅要別人問的時候。給自己一個說法即可了。

關系模型:

ER圖中的主要成分是實體類型和聯系類型。轉換算法就是怎樣把實體類型、聯系類型轉換成聯系模式。

ER實體類型轉換:(ER圖中矩形框的都為實體,可建表):

T_BasicData(Rate,TmpRate,unitTime,leastTime,PrePareTime,limitCash,Head)

T_Card(CardNo,RegisterDateTime,CacncelDateTime,Cash,Head,Type,status) T_Student(studentNo,CardNo,StudentName,Age,Sex,Department,Grade,Class,Date,Time,Explain)

T_User(UserID,serName,Level,Password。Computer,Head)

T_CheckDay(LastCash,Head,Recharge,CancelCash,ConsumeCash,nowCash,Computer,Status) T_WordLog(UserID,Level,LoginDate,LoginTime,LogoutDate,LogoutTime,Computer,Status)

ER關系轉換:

對於1比1關系,T_student表中能夠增加CardNo的字段(StudentNo為主鍵,CardNo為外鍵)。

對於1:N關系,能夠適當的增加屬性值。

對於N:M關系。關系就是一個模式(藍色菱形 T_Line和T_Recharge)

T_Line(Cardno,Head,OnlienDateTim,OutlineDateTime,ConsumeTime,Consume,Computer,Status)

T_Recharge(CardNo,Head,Recharge,DateTime,Ischeck)

好了一定看看是夠符合三範式的要求:

第一範式:屬性不可分。事實上這個非常easy就能夠看出來。屬性值僅僅能是多個單值屬性。

第二範式:消除部分依賴,這一條非常easy被功能打亂。由於非常多人都是依據功能來安排屬性的,這裏能夠這麽做,做好了之後。檢查一下,有沒有存在局部依賴。去掉即可了。

第三範式:消除傳遞依賴,這個得好好看看了。向之前的student表和card表合為一個表事實上裏面存在著傳遞依賴,分開就對了。

設計數據庫:

最基本的是註意數據類型吧。這個還是須要看看代碼的,我第一版的系統中d全部的日期時間。都是用的DateTime這種數據類型。在vb.net中一定要看看是不是會出問題。

綜上,我們要學會應用我們學習到了知識,我學的數據庫太淺,非常多還是建立在原來數據庫的基礎上的。可是我相信,當我們努力學習。大膽嘗試,還是非常快就會有所收獲的,上面的數據庫僅僅是個人的一些想法,有更好的。大家一起分享,交流。




VB.NET版機房收費系統—數據庫設計