分散式資料庫管理系統 - 資料庫控制



資料庫控制是指執行規章制度的任務,以便為資料庫的合法使用者和應用程式提供正確的資料。為了確保使用者可以使用正確的資料,所有資料都應符合資料庫中定義的完整性約束。此外,應將資料遮蔽在未經授權的使用者之外,以維護資料庫的安全性和隱私性。資料庫控制是資料庫管理員 (DBA) 的主要任務之一。

資料庫控制的三個維度是:

  • 身份驗證
  • 訪問許可權
  • 完整性約束

身份驗證

在分散式資料庫系統中,身份驗證是隻有合法使用者才能訪問資料資源的過程。

身份驗證可以在兩個級別強制執行:

  • 控制對客戶端計算機的訪問 - 在此級別,在登入到為資料庫伺服器提供使用者介面的客戶端計算機時,將限制使用者訪問。最常見的方法是使用者名稱/密碼組合。但是,對於高安全性資料,可以使用更復雜的方法,例如生物識別身份驗證。

  • 控制對資料庫軟體的訪問 - 在此級別,資料庫軟體/管理員會向用戶分配一些憑據。使用者使用這些憑據訪問資料庫。一種方法是在資料庫伺服器中建立一個登入帳戶。

訪問許可權

使用者的訪問許可權是指賦予使用者的關於資料庫管理系統操作的特權,例如建立表、刪除表、在表中新增/刪除/更新元組或查詢表的許可權。

在分散式環境中,由於表數量眾多,使用者數量更多,因此為使用者分配單個訪問許可權是不可行的。因此,DDBMS 定義了某些角色。角色是在資料庫系統中具有某些特權的構造。定義不同的角色後,將向各個使用者分配這些角色之一。通常會根據組織的權力和責任等級定義角色層次結構。

例如,以下 SQL 語句建立角色“Accountant”,然後將此角色分配給使用者“ABC”。

CREATE ROLE ACCOUNTANT; 
GRANT SELECT, INSERT, UPDATE ON EMP_SAL TO ACCOUNTANT; 
GRANT INSERT, UPDATE, DELETE ON TENDER TO ACCOUNTANT; 
GRANT INSERT, SELECT ON EXPENSE TO ACCOUNTANT; 
COMMIT; 
GRANT ACCOUNTANT TO ABC; 
COMMIT;

語義完整性控制

語義完整性控制定義並強制執行資料庫系統的完整性約束。

完整性約束如下:

  • 資料型別完整性約束
  • 實體完整性約束
  • 參照完整性約束

資料型別完整性約束

資料型別約束限制可以應用於具有指定資料型別的欄位的值範圍和操作型別。

例如,讓我們考慮一個名為“HOSTEL”的表,它包含三個欄位:宿舍編號、宿舍名稱和容量。宿舍編號應以大寫字母“H”開頭,不能為 NULL,容量不應超過 150。可以使用以下 SQL 命令進行資料定義:

CREATE TABLE HOSTEL ( 
   H_NO VARCHAR2(5) NOT NULL, 
   H_NAME VARCHAR2(15), 
   CAPACITY INTEGER, 
   CHECK ( H_NO LIKE 'H%'), 
   CHECK ( CAPACITY <= 150) 
); 

實體完整性控制

實體完整性控制強制執行規則,以便可以唯一地識別每個元組與其他元組。為此,定義主鍵。主鍵是可以唯一標識元組的一組最小欄位。實體完整性約束規定表中不允許有兩個元組具有相同的主鍵值,並且任何作為主鍵一部分的欄位都不能具有 NULL 值。

例如,在上例的宿舍表中,可以透過以下 SQL 語句將宿舍編號分配為主鍵(忽略檢查):

CREATE TABLE HOSTEL ( 
   H_NO VARCHAR2(5) PRIMARY KEY, 
   H_NAME VARCHAR2(15), 
   CAPACITY INTEGER 
); 

參照完整性約束

參照完整性約束規定了外部索引鍵的規則。外部索引鍵是資料表中的一個欄位,它是相關表的主鍵。參照完整性約束規定外部索引鍵欄位的值必須屬於被引用表的主鍵值,或者完全為 NULL。

例如,讓我們考慮一個學生表,其中學生可以選擇住在宿舍。為此,應將宿舍表的主鍵作為外部索引鍵包含在學生表中。以下 SQL 語句包含此內容:

CREATE TABLE STUDENT (  
   S_ROLL INTEGER PRIMARY KEY, 
   S_NAME VARCHAR2(25) NOT NULL, 
   S_COURSE VARCHAR2(10), 
   S_HOSTEL VARCHAR2(5) REFERENCES HOSTEL 
); 
廣告