VB.NET版機房收費系統—資料庫設計

來源:互聯網
上載者:User

標籤:資料類型   實體   演算法   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版機房收費系統—資料庫設計

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.