DBMS distribuito - Controllo database
Il controllo del database si riferisce al compito di far rispettare le normative in modo da fornire dati corretti agli utenti autentici e alle applicazioni di un database. Affinché i dati corretti siano disponibili per gli utenti, tutti i dati devono essere conformi ai vincoli di integrità definiti nel database. Inoltre, i dati dovrebbero essere schermati da utenti non autorizzati in modo da mantenere la sicurezza e la privacy del database. Il controllo del database è una delle attività principali dell'amministratore del database (DBA).
Le tre dimensioni del controllo del database sono:
- Authentication
- Diritti di accesso
- Vincoli di integrità
Autenticazione
In un sistema di database distribuito, l'autenticazione è il processo attraverso il quale solo gli utenti legittimi possono accedere alle risorse di dati.
L'autenticazione può essere applicata a due livelli:
Controlling Access to Client Computer- A questo livello, l'accesso dell'utente è limitato durante l'accesso al computer client che fornisce l'interfaccia utente al server del database. Il metodo più comune è una combinazione nome utente / password. Tuttavia, metodi più sofisticati come l'autenticazione biometrica possono essere utilizzati per dati ad alta sicurezza.
Controlling Access to the Database Software- A questo livello, il software / amministratore del database assegna alcune credenziali all'utente. L'utente accede al database utilizzando queste credenziali. Uno dei metodi consiste nel creare un account di accesso all'interno del server database.
Diritti di accesso
I diritti di accesso di un utente si riferiscono ai privilegi concessi all'utente riguardo alle operazioni DBMS come i diritti per creare una tabella, rilasciare una tabella, aggiungere / eliminare / aggiornare le tuple in una tabella o interrogare sulla tabella.
In ambienti distribuiti, poiché esiste un numero elevato di tabelle e un numero ancora maggiore di utenti, non è possibile assegnare diritti di accesso individuali agli utenti. Quindi, DDBMS definisce determinati ruoli. Un ruolo è un costrutto con determinati privilegi all'interno di un sistema di database. Una volta definiti i diversi ruoli, ai singoli utenti viene assegnato uno di questi ruoli. Spesso una gerarchia di ruoli viene definita in base alla gerarchia di autorità e responsabilità dell'organizzazione.
Ad esempio, le seguenti istruzioni SQL creano un ruolo "Accountant" e quindi assegnano questo ruolo all'utente "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;
Controllo dell'integrità semantica
Il controllo dell'integrità semantica definisce e applica i vincoli di integrità del sistema di database.
I vincoli di integrità sono i seguenti:
- Vincolo di integrità del tipo di dati
- Vincolo di integrità dell'entità
- Vincolo di integrità referenziale
Vincolo di integrità del tipo di dati
Un vincolo del tipo di dati limita l'intervallo di valori e il tipo di operazioni che possono essere applicate al campo con il tipo di dati specificato.
Ad esempio, si consideri che una tabella "HOSTEL" ha tre campi: il numero dell'ostello, il nome dell'ostello e la capacità. Il numero dell'ostello deve iniziare con la lettera maiuscola "H" e non può essere NULL e la capacità non deve essere superiore a 150. Il seguente comando SQL può essere utilizzato per la definizione dei dati:
CREATE TABLE HOSTEL (
H_NO VARCHAR2(5) NOT NULL,
H_NAME VARCHAR2(15),
CAPACITY INTEGER,
CHECK ( H_NO LIKE 'H%'),
CHECK ( CAPACITY <= 150)
);
Controllo dell'integrità delle entità
Il controllo dell'integrità dell'entità applica le regole in modo che ogni tupla possa essere identificata in modo univoco da altre tuple. Per questo viene definita una chiave primaria. Una chiave primaria è un insieme di campi minimi che possono identificare in modo univoco una tupla. Il vincolo di integrità dell'entità afferma che due tuple in una tabella non possono avere valori identici per le chiavi primarie e che nessun campo che fa parte della chiave primaria può avere un valore NULL.
Ad esempio, nella tabella dell'ostello sopra, il numero dell'ostello può essere assegnato come chiave primaria tramite la seguente istruzione SQL (ignorando i controlli):
CREATE TABLE HOSTEL (
H_NO VARCHAR2(5) PRIMARY KEY,
H_NAME VARCHAR2(15),
CAPACITY INTEGER
);
Vincolo di integrità referenziale
Il vincolo di integrità referenziale stabilisce le regole delle chiavi esterne. Una chiave esterna è un campo in una tabella dati che è la chiave primaria di una tabella correlata. Il vincolo di integrità referenziale stabilisce la regola che il valore del campo della chiave esterna deve essere compreso tra i valori della chiave primaria della tabella di riferimento o essere completamente NULL.
Ad esempio, consideriamo un tavolo per studenti in cui uno studente può scegliere di vivere in un ostello. Per includerlo, la chiave primaria della tabella dell'ostello dovrebbe essere inclusa come chiave esterna nella tabella dello studente. La seguente istruzione SQL incorpora questo:
CREATE TABLE STUDENT (
S_ROLL INTEGER PRIMARY KEY,
S_NAME VARCHAR2(25) NOT NULL,
S_COURSE VARCHAR2(10),
S_HOSTEL VARCHAR2(5) REFERENCES HOSTEL
);