1. 程式人生 > >Oracle學習筆記第二十天

Oracle學習筆記第二十天

Oracle學習筆記第二十天

資料庫設計

概念:規劃資料庫中資料物件以及之間關係的過程

為什麼進行資料庫設計:

   	1. 空間
    	2. 完整性:實體完整性、域完整性、使用者自定義的完整性
     	3. 程式開發:方便程式開發

正規化:

1NF:第一正規化:

​ 如果每列都是不可再分的最小資料單元(也稱為最小的原子單元),則滿足第一正規化(1NF)

​ 第一正規化的目標是確保每列的原子性

2NF:第二正規化

​ 如果一個關係滿足1NF,並且除了主鍵以為的其他列都依賴與該主鍵,則滿足第二正規化(2NF)

​ 第二正規化要求每個表值描述一件事情

3NF:第三正規化

​ 如果一個關係滿足2NF,並且除了主鍵以外的其他列都不傳遞依賴於主鍵列,則滿足第三正規化。

資料庫設計步驟:

   	1. 收集資訊
    	2. 標識物件
     	3. 標識物件的屬性
     	4. 標識物件之間的關係

為了設計結構良好的資料庫,需要遵守一些專門的規則,稱為資料庫的設計正規化

​ 第一正規化(1NF)的目標:確保每列的原子性

​ 第二正規化(2NF)的目標:確保表中的每列,都和主鍵相關

​ 第三正規化(3NF)的目標:確保每列都和主鍵列直接相關,而不是間接相關

練習用例:

收集資訊:
  公司承擔多個工程專案,每一項工程有:工程號、工程名稱、施工人員等
  公司有多名職工,每一名職工有:職工號、姓名、性別、職務(工程師、技術員)等
  公司按照工時和小時工資率支付工資,小時工資率由職工的職務決定(例如,技術員的小時工資率與工程師不同)
  工資報表
工程號 工程名稱 職工號 姓名 職務 小時工資率 工時
A1 花園大廈 1001 齊光明 工程師 65 13
A1 花園大廈 1002 李思岐 技術員 60 16
A2 立交橋 1001 齊光明 工程師 65 13
A2 立交橋 1003 鞠明亮 工人 55 17
A3 臨江飯店 1002 李思岐 技術員 60 18
A3 臨江飯店 1004 葛宇洪 技術員 60 14

標識物件
標識物件2

標識物件3

SQL優化

一般優化技巧

  1. 建議不用“*”代替所有列名
  2. 刪除所有資料用TRUNCATE代替DELETE
  3. 用NOT EXISTS 代替NOT IN
  4. 用EXISTS代替IN
  5. 用EXISTS代替DISTINCT
  6. where子句的連線順序:1. 表連線關係放在前面;2. 過濾記錄越多的條件子句應放置到後面

索引

索引分類:

邏輯分類 物理分類
單列或組合索引 分割槽或非分割槽索引
唯一或非唯一索引 B 樹索引
基於函式索引 正常或反向鍵索引
點陣圖索引

其他索引: 唯一索引、反向鍵索引、點陣圖索引、組合索引、函式索引等

建立索引原則:

  1. 頻繁搜尋的列
  2. 經常排序、分組的列
  3. 經常連線的列
  4. 指定單獨的表空間

不適合建立索引原則:

  1. 資料量小
  2. 僅包含幾個不同值的列
  3. 資料表操作特別頻繁、業務效能要求高

表分割槽

概念:把表中資料劃分成若干部分,並存儲在不同的位置

優點:

  1. 改善查詢效能
  2. 表更容易管理
  3. 便於備份和恢復
  4. 提高資料安全性

表分割槽分類:

  1. 範圍分割槽
    • 列值的範圍作為劃分條件
  2. 雜湊分割槽
    • 列的hash值自動分配
  3. 列表分割槽
    • 列值必須明確指定
    • 一個分割槽列
  4. 複合分割槽
    • 先按第一分割槽方法分割槽
    • 再按第二分割槽方法劃分子分割槽
  5. 其他分割槽