数据库原理及应用【五】安全性和完整性约束
生活随笔
收集整理的這篇文章主要介紹了
数据库原理及应用【五】安全性和完整性约束
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
數據庫一致性被破壞:
- 系統故障
- 許多用戶的并發訪問
- 人為破壞
- 事務本身不正確
保護數據庫一致性的方法:
- 視圖/查詢修改
- 訪問控制
- 普通用戶
- 擁有資源特權的用戶
- DBA
數據庫的安全問題
- 身份驗證
- 口令
- 物理設備
- 角色
- 數據加密
- 審計追蹤
統計數據庫
個體追蹤器
通用追蹤器
完整性約束
每一個合法實例都必須滿足的條件
如果不滿足完整性約束,DBMS不會允許進入數據庫
- 靜態約束
- 數據模型固有的約束
- 隱含約束:域完整性約束、主鍵約束(實體完整性約束)、外鍵約束(引用完整性約束)
- 顯式約束
- 動態約束:數據庫在轉換過程中應該遵循的規則
靜態約束
當有引用完整性約束的時候,如果要刪除所引用的表中的元組,需要檢查該元組的主鍵是否在引用表的外鍵中出現,如果出現,有兩個選擇:
- 報錯(默認)
- 級聯刪除(需要進行設置)
引用完整性約束更新主鍵:
- 報錯(默認)
- 級聯更新
顯式約束
- 程序進行限制
- 使用DBMS斷言ASSERTION
- 使用CHECK:在建表的時候
如果牽涉到兩個以上的表的約束就不能在CREATE語句中使用CHECK,因為這樣只有對其中一個表進行增刪改的時候才會觸發CHECK約束,如果不進行增刪改就沒法保持約束。應該使用斷言進行約束。
CREATE ASSERTION smallClub CHECK ((SELECT COUNT(*) FROM Sailors) + (SELECT COUNT(*) FROM Boats)<100)可以保證在兩個表任何一個進行增刪改操作的時候都要滿足約束
動態約束+觸發器
主動數據庫:數據庫中的數據達到某種狀態的時候主動進行一些動作
觸發器:E(事件)C(檢查數據庫)A(動作)規則
實現方法:
- 立即執行(常見)
- 延遲
- 分離
觸發器的連鎖觸發:
- 根據觸發圖,限制觸發器執行
- 連續觸發的次數進行限制
觸發器的定義需要小心,不能定義太多的觸發器
觸發器實現方法:
- 松耦合
- 緊耦合
- 嵌套
總結
以上是生活随笔為你收集整理的数据库原理及应用【五】安全性和完整性约束的全部內容,希望文章能夠幫你解決所遇到的問題。