范式是什么?
簡單給大家百度一下什么是范式
范式(資料庫設計范式,資料庫的設計范式)是符合某一種級別的關系模式的集合,構造資料庫必須遵循一定的規則,在關系資料庫中,這種規則就是范式,關系資料庫中的關系必須滿足一定的要求,即滿足不同的范式,
目前關系資料庫有六種范式 咱們先講解三種
第一范式(1NF)
1NF的定義:一張表每一列都拆分到不可拆分 資料庫表中不能出現重復記錄 則符合第一范式 (原子性)
例1:
上面班級資訊列則不符合1NF范式應該進行拆分
例2
上面則滿足第一范式的要求
當完成第一范式后會發現存在了很多問題如
1.如果電風扇新增了 數學成績則又會多一條 這樣存在很多冗余資料
2.并且如果更換了班級則是個很麻煩的程序
3.如果將六班的學生全部洗掉則6班也不存在了
上述問題解決需要進行第二范式(2NF)
第二范式(2NF)
2NF的定義:如果一個關系滿足第一范式,并且除了主鍵之外的其他列,都依賴于該主鍵,則滿足第二范式
例1
表一中分數完全依賴于學生ID和課程的屬性
表二中姓名、年級、老師完全依賴于學生ID
第二范式消除了第一范式的部分依賴
但是上面以然沒解決班級和班主任的問題 如果六級六班有很多學生 還是會有很多六年級六班強強老師
第三范式(3NF)
3NF的定義:在第二范式的基礎上更進一步,目標是確保表中的列都和主鍵直接相關,而不是間接相關,
例1
范式的利弊:
優點:范式可以避免資料冗余,減少資料庫的空間,減輕維護資料完整性的麻煩,
缺點:按照范式的規范設計出來的表,等級越高的范式設計出來的表越多,如第一范式可能設計出來的表可能只有一張表而已,再按照第二范式去設計這張表時就可能出來兩張或更多張表,如果再按第三范式或更高的范式去設計這張表會出現更多比第二范式多 的表,表的數量越多,當我們去查詢一些資料,必然要去多表中去查詢資料,這樣查詢的時間要比在一張表中查詢中所用的時間要高很多,也就是說我們所用的范式越高,對資料操作的性能越低,所以我們在利用范式設計表的時候,要根據具體的需求再去權衡是否使用更高范式去設計表,
反范式:
故名思義,跟范式所要求的正好相反,在反范式的設計模式,我們可以允許適當的資料的冗余,用這個冗余去取操作資料時間的縮短,也就是用空間來換取時間,把資料冗余在多個表中,當查詢時可以減少或者是避免表之間的關聯,
反范式的利弊:
優點:查詢時可以減少表的關聯;可以更好的進行索引優化;
缺點:存在資料冗余以及資料維護例外;對資料的修改需要更多的成本;
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/142069.html
標籤:其他
上一篇:對索引的了解







