標籤:資料類型 實體 演算法 limit logo card 換算 logout 進一步
之前第一遍機房收費的時候,用的資料庫是別人的。認知也僅僅能建立在別人的基礎上,等自考中《資料庫系統原理》這本書學完了之後,再去看曾經的資料庫,探索資料庫真的還須要進一步的最佳化。以下是我設計資料庫的一些見解。希望大家多提些意見。
資料庫設計 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版機房收費系統—資料庫設計