一.數據庫設計的概念
數據庫設計是將數據庫中的數據實體及這些數據實體之間的關系,進行規划和結構化的過程.
二.數據庫設計的重要性
如果一個數據庫沒有進行一個良好的設計,那么這個數據庫完成之后他的缺點是:
1.效率會很低
2更新和檢索數據時會出現很多問題,
反之,一個數據庫被盡心策划了一番,具有良好的設計,那他的優點是:
1.效率會很高.
2.便於進一步擴展.
3.使得應用程序的開發變得更容易.
三.設計數據庫的步驟
1.需求分析階段:分析客戶的業務和數據處理需求.
2.概要設計階段:他主要就是繪制數據庫的E-R圖.
3.詳細設計階段:應用數據庫的三大范式進行審核數據庫的結構.
總結:在進行數據庫的系統分析時,都以下列4點位參考的基本步驟.
01.收集信息.
02.標識實體.
03.標識每個實體需要儲存的詳細信息.
04.標識實體之間的關系.
四.學會繪制E-R圖
繪制E-R圖首先要了解什么是實體,什么是屬性,什么是聯系.
1.首先實體是指現實世界中具有區分其他事物的特征或屬性與其他實體有聯系的實體,針對於數據庫中的表而言實體是指表中一行一行特定數據,但我們在開發中,也常常把整個表稱為一個實體.
2.屬性可以理解為實體的特征,針對於數據庫中的表而言實體是指表中的列.
3.聯系是兩個或多個實體之間的關聯關系.
4.實體關系圖:

例:酒店管理系統E-R圖:

五.映射基數
1.一對一:X中的一個實體最對與Y中的一個實體關聯,並且Y中的一個實體最多與X中的一個實體關聯.
Eg:一個人只有一張身份證.
2.一對多:X中的一個實體可以與Y中的任意數量的實體關聯;Y中的一個實體最多與X中的一個實體關聯.
Eg:一個班級有多名學生.
3.多對一:X中的一個實體最多與Y中的一個實體關聯;Y中的一個實體可以與X中的任意數量的實體關聯.
Eg:客人與客房之間的關系,一個客人只能住一間客房.
4.多對多:X中的一個實體可以與Y中的任意數量的實體關聯,反之亦然.
Eg:學生和課程之間的關系,一個學生可以有多門課程,一門課程可以對應多名學生.
六.繪制數據庫模型圖
以酒店管理系統為例:

七.數據庫規范化
如果數據庫沒有進行相應的規范設計,雖然在查詢數據庫可能會比較容易,但有時會造成一些問題,主要的問題如下:
1.信息重復(會造成儲存空間的浪費及一些其他問題).
2.更新異常(冗余信息不僅浪費空間,還會增加更新的難度).
3.插入異常
4.刪除異常(在某些情況下,當刪除一行時,可能會丟失有用的信息).
八.三大范式
1.第一范式:
目標是確保每列的原子性.如果每列都是不可再分的最小數據單元,則滿足第一范式.
2.第二范式:
第二范式在第一范式的基礎上更進一層,其目標是確保表中的每列都和主鍵相關,也就是說在一個數據庫表中,一個表中只能保存一種數據,不可以把多種數據保存在同一張數據庫表中.如果一個關系滿足第一范式,並且除了主鍵以外的其他列都依賴與該主鍵.則滿足第二范式.
3.第三范式:
第三范式在第二范式的基礎上更進一層,第三范式的目標是確保每列都和主鍵列直接相關,而不是間接相關.如果一個關系滿足第二范式,並且除了主鍵以外的其他列都這能依賴於主鍵列,列和列之間不存在相互依賴關系,則滿足第三范式.
九.規范性和性能的關系
為了滿足三大范式,我們的數據操作性能會受到相應的影響,所以,在實際的數據庫設計中,既要考慮三大范式,避免數據的冗余和各種數據操作異常;有要考慮到數據訪問性能,有時,為了減少表間連接,提高數據庫的訪問性能,允許適當的數據冗余列,這可能是最合適的數據庫設計方案.
