機房收費系統重構——資料庫設計,機房收費系統重構

來源:互聯網
上載者:User

機房收費系統重構——資料庫設計,機房收費系統重構

        終於,走到了機房收費系統重構的階段……

        之前的一遍機房收費系統的資料庫是用的給的那個,只是把每個表都看了一下,當時也沒有學習資料庫原理那本書,然後就沒有深究……

        現在不一樣了,我們進行機房收費系統重構,況且學習了資料庫原理這本書,對資料庫有了更深的認識。所以對於資料庫要好好的設計,按照步驟走……

 

        資料庫技術是資訊資源管理最有效地手段。資料庫設計是指對於一個給定的應用環境,構造最優的資料庫模式,建立資料庫及其應用系統,有效儲存資料,滿足使用者資訊要求和處理要求。

資料庫的設計的步驟和各階段的主要內容如下:



        在邏輯設計階段要注意

       將E-R圖轉換為關聯式模式實際上就是要將實體、實體的屬性和實體之間的聯絡轉化為關係模式,這種轉換一般遵循如下原則:

     (1)一個實體型轉換為一個關係模式。實體的屬性就是關係的屬性。實體的碼就是關係的碼。

     (2)一個m:n聯絡轉換為一個關係模式。與該聯絡相連的各實體的碼以及聯絡本身的屬性均轉換為關係的屬性。                  而關係的碼為各實體碼的組合。

     (3)一個1:n聯絡可以轉換為一個獨立的關係模式,也可以與n端對應的關係模式合并。如果轉換為一個獨立的關係模式,則與該聯絡相連的各實體的碼以及聯絡本身的屬性均轉換為關係的屬性,而關係的碼為n端實體的碼。

     (4)一個1:1聯絡可以轉換為一個獨立的關係模式,也可以與任意一端對應的關係模式合并。

     (5)三個或三個以上實體間的一個多元聯絡轉換為一個關係模式。與該多元聯絡相連的各實體的碼以及聯絡本身的屬性均轉換為關係的屬性。而關係的碼為各實體碼的組合。 

     (6)同一實體集的實體間的聯絡,即自聯絡,也可按上述1:1、1:n和m:n三種情況分別處理。

     (7)具有相同碼的關係模式可合并。

     (8)還有就是我們常說的三範式(確定資料依賴。消除冗餘的聯絡):

              第一範式(1NF):關係模式R中每一個原子都是不可分割的原子值。

              第二範式(2NF):關係模式R是1NF,每個非主屬性完全依賴於候選索引鍵(都可以用來做主鍵的欄位),就是滿足第二範式。

              第三範式(3NF):關係模式R是1NF,每個非主屬性都不傳遞依賴於R的候選索引鍵。

 

              首先我根據原來的資料庫進行了再次設計,將原來臃腫的表有的分開,有的減少東西……畫了一個ER圖:


 根據ER圖設計出了資料庫中每個表:

 

使用者資訊表(User_Info):

 

UsrID

使用者名稱(主鍵)

Char(10)

Password

密碼

Char(10)

Level

層級

Char(10)

UserName

真實姓名

Char(10)

Holder

開戶人

Char(10)

 

學生資訊表(Student_Info):


StudentID

學號(主鍵)

Char(10)

StudentName

姓名

Char(10)

Sex

性別

Char(2)

Department

系別

Char(10)

grade

年級

Char(10)

Class

班級

Char(10)

 

卡資訊表(card_Info):


CardID

卡號(主鍵)

Char(10)

studentID

學號

Char(10)

Status

使用狀態

Bit

Account

餘額

Decimal(10,4)

Type

卡類型

Char(10)

registDate

註冊日期

Date

registTime

註冊時間

Time

checkstatus

結賬狀態

Bit

UserID

使用者名稱

Char(10)

 

由於學生和卡是兩個不同的實體,所以將它們有關的資訊分開記錄,防止資料冗餘,防止表的臃腫。

 

充值記錄表(Recharge):


cardID

卡號

Char(10)

rechargeMoney

充值金額

Decimal(10,4)

RechargeDate

充值日期

Date

RechargeTime

充值時間

Time

userID

使用者名稱

Char(10)

checkstatus

結賬狀態

Bit

 

退卡記錄表(Cancelcard):


cardID

卡號

Char(10)

returnMoney

退還金額

Decimal(10,4)

CancelcardDate

退卡日期

Date

CancelcardTime

退卡時間

Time

UserID

使用者名稱

Char(10)

checkstatus

結賬狀態

Bit

 

上下機記錄表(OnOffLineRecord):


cardID

卡號

Char(10)

OnDate

上機日期

Date

Ontime

上機時間

Time

OffDate

下機日期

Date

Offtime

下機時間

Time

OffWay

下機方式

Char(10)

ConsumeMoney

消費金額

Decimal(10,4)

ConsumeTime

消費時間

Time

UserID

使用者名稱

Char(10)

checkstatus

結賬狀態

Bit

Computer

機器名

Char(10)

 

基本資料表(BasicData):


Leasttime

至少上機時間

Time

Unittime

單位遞增時間

Time

Rate

固定每小時費用

Decimal(10,4)

Tmprate

臨時每小時費用

Decimal(10,4)

Limitcash

最少金額

Decimal(10,4)

date

日期

Date

Time

時間

Time

UserID

使用者名稱

Char(10)

 

賬單(check):


LastcardMoney

上期充值卡金額

Decimal(10,4)

CurrentrechargeMoney

本期充值卡金額

Decimal(10,4)

CurrentcancelcardMoney

本期退卡金額

Decimal(10,4)

CurrentconsumeMoney

本期消費金額

Decimal(10,4)

CurrentcardMoney

本期充值卡金額

Decimal(10,4)

Date

日期

Date

Time

時間

Time

UserId

使用者名稱

Char(10)

 

工作記錄表(workLog):


UserID

使用者名稱

Char(10)

Ondate

登入日期

Date

Ontime

登入時間

Time

Offdate

登出日期

Date

Offtime

登出時間

Time

Status

狀態

Bit

Computer

機器名

Char(10)

 

總結:資料庫設計是很重要的一件事,但是我們不可能一次就將自己的資料庫設計的完美,每次都嚴格按照規則走,只有實踐的多了才能慢慢的設計出好的資料庫。

相關文章

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.