一、畫ER圖
E-R圖也稱實體-聯繫圖(Entity Relationship Diagram),提供了表示實體類型、屬性和聯 系的方法,用來描述現實世界的概念模型。
繪製方法:
⑴確定所有的實體集合
⑵選擇實體集應包含的屬性
⑶確定實體集之間的聯繫
⑷確定實體集的關鍵字,用下劃線在屬性上表明關鍵字的屬性組合
⑸確定聯繫的類型,在用線將表示聯繫的菱形框聯繫到實體集時,在線旁註明是1或n(多)來表示聯繫的類型
二、將ER圖轉化成關係模式
1:1 :例如 CardInfo 和StudentInfo 是1:1的關係
CardInfo(CardNo,Balance,CardState)
StudentInfo(StuID,StuName,StuDept,StuSex,StuClass,,StuState)
轉化後
StudentInfo(StuID,CardNo,StuName,StuDept,StuSex,StuClass,,StuState)
或
CardInfo(CardNo,StuNo,Balance,CardState)
即把主鍵加入到任一方均可
1:n : 例如UserInfo 和 CardInfo 是在註冊方面是1:n的關係
UserInfo(UserID,Password,UserName,UserLevel)
CardInfo(CardNo,Balance,CardState)
轉換後
CardInfo(CardNo,UserID,Balance,CardState)
即把主鍵放到n方
n:m :例如UserInfo 和 CardInfo 是在充值方面是n:m的關係(一個用戶可以充值多 張卡,一張卡可以被多個用戶充值)
CardInfo(CardNo,Balance,CardState)
UserInfo(UserID,Password,UserName,UserLevel)
轉化後
CardInfo(CardNo,Balance,CardState)
UserInfo(UserID,Password,UserName,UserLevel)
Recharge(CardNo,UserID,Money,OpTime)
加入一個新的關係模式並把兩個的主鍵分別加入到新的關係模式中
三、用三範式規範數據庫
1、第一範式(原子性)
本系統中沒有找到很好的例子,隨便舉一個例子說明問題
非第一範式關係
系名稱 |
高級職稱人數 |
|
教授 |
副教授 |
|
計算機系 |
6 |
10 |
信息管理系 |
3 |
5 |
第一範式關係
系名稱 |
教授人數 |
副教授人數 |
計算機系 |
6 |
10 |
信息管理系 |
3 |
5 |
第一個表中“高級職稱人數”不是原子屬性,他還包括兩個子值
2、第二範式(不存在局部依賴)
Recharge(CardNo,UserID,Money,OpTime)
在這個充值關係中,CardNo,UserID 決定 OpTime,所以他倆組合做主鍵,但是CardNo 自己就可以決定Money,因此存在局部依賴。
優化爲
Recharge(CardNo,UserID,OpTime)
Balance(CardNo,Money)
即滿足第二範式要求
3、第三範式(不含傳遞依賴)
沒有在此係統中找到合適的例子,舉其他例子說明此問題
Student(StuNo,StuDept,StuDeptTeacher)
stuNo 可以決定stuDept
StuDept可以決定 StuDeptTeacher
這樣就存在傳遞依賴
優化後
Student(StuNo,StuDept)
Dept(StuDept,StuDeptTeacher)
4、三範式的關係
滿足第三範式必須滿足第一和第二範式