>>>> 為什麼需要規範的資料庫設計在實際的項目開發中,如果系統的數據存儲量較大,設計的表比較多,表和表之間的關係比較複雜,就需要首先考慮規範的資料庫設計,然後進行創建庫,創建表的工作. 如果設計不當,會存在數據操作異常,修改複雜,數據冗餘等問題,程式性能會受到影響,通過進行規範化的資料庫設計,可....
>>>> 為什麼需要規範的資料庫設計
在實際的項目開發中,如果系統的數據存儲量較大,設計的表比較多,表和表之間的關係比較複雜,就需要首先考慮規範的資料庫設計,然後進行創建庫,創建表的工作.
如果設計不當,會存在數據操作異常,修改複雜,數據冗餘等問題,程式性能會受到影響,通過進行規範化的資料庫設計,可以消除不必要的數據冗餘,獲得合理的資料庫設計,提高項目的應用性能.
>>>>設計資料庫的步驟
1.收集信息
需要瞭解資料庫需要存儲哪些信息(數據),實現哪些功能.
2.標識實體
在收集需求信息後,必須標識資料庫要管理的關鍵對象或實體,實體可以是有形的事物,如人和產品;也可以是無形的事物,如商業交易公司部門或發薪周期...
3.標識每個實體需要存儲的詳細信息(即實體的屬性)
就是需要細分出每個實體中包含的子成員信息,也稱為該實體的屬性,這些屬性將組成表中的列.
4.標識實體之間的關係
要標識實體之間的關係,需要分析資料庫表,確定這些表在邏輯上是如何相關的,然後添加關係列建立起表之間的連接.
--在需求分析階段解決了客戶的業務和數據處理需求後,就進入了概要設計階段,我們需要和項目的其他成員及客戶溝通,討論資料庫的設計是否滿足客戶的業務和數據的處理需求,資料庫的設計也需要圖形化的表達方式--E-R(Entity-Relationship)圖,也稱之為 實體-關係圖
>>>>E-R(Entity-Relationship)圖
(實體使用矩形表示,一般是名詞;屬性使用橢圓表示,一般也是名詞;聯繫使用菱形表示,一般是動詞)
1.實體
就是指現實世界中具有區分其他事物的特征或屬性並與其他實體有聯繫的實體.嚴格的說,實體是指表中一行特定數據,也 常把整個表稱之為一個實體.
2.屬性
屬性可以理解為實體的特征.屬性對應表中的列.
3.聯繫
聯繫是兩個或多個實體之間的關聯關係
根據E-R圖繪製酒店管理系統的E-R圖
>>>>映射基數
映射基數表示通過聯繫與該實體關聯的其他實體的個數,對於實體集X和Y之間的二元關係,映射基數必須為下列技術之一:
>>一對一:X中的一個實體最多與Y中的一個實體相關聯,並且Y中的一個實體最多與X中的一個實體相關聯.
>>一對多:X中的一個實體可以與Y中的任意數量實體相關聯;Y中的實體最多與X中的一個實體相關聯.
>>多對一:X中的一個實體最多與Y中的一個實體相關聯;Y中的實體可以與X中的任意數量實體相關聯.
>>多對多:X中的一個實體可以與Y中的任意數量實體相關聯,反之亦然.
>>>>邏輯設計——繪製資料庫模型圖
操作步驟:(1.新建資料庫模型圖 2.添加實體 3.添加數據列及相應的屬性 4.添加實體之間的映射關係)
>>>>資料庫規範化
從用戶的角度而言,將所有信息放在一個表中很方便,因為這樣查詢資料庫可能會比較容易,但是在資料庫的實際操作中會出現很多的問題:
1.信息重覆:會造成存儲空間的浪費及一些其他的問題,如(不小心輸入"標準間","標準" ,則在資料庫中將表示兩種不同的 客房類型)
2.更新異常:冗餘信息不僅浪費存儲空間,還會增加更新的難度.
3.插入異常(無法表示某些信息):如(同樣是標準間,卻因為入住人數不同而造成價格的差異)
4.刪除異常(丟失有用的信息):當刪除一行的信息時可能會丟失有用的信息.如(當"標準間"的住房記錄中只有一條信息,那 麽當我們刪除此記錄的時候會把"標準間"這一記錄刪除,而"標準間"也就不復存在了)
>>>>規範設計
在設計資料庫時,三大範式良好的規避了以上可能出現的錯誤
1.第一範式
確保每列的原子性.
2.第二範式
確保表中的每列都和主鍵相關(直接相關和間接相關皆可).
3.第三範式
確保每列都和主鍵直接相關,而不是間接相關. (在上面的那張資料庫設計E-R圖就是符合第三範式的)