1. Aspetti avanzati del DDL Creazione di indici
` `
Creazione di indici INDICI:
` meccanismi di accesso efficiente ai dati
` Modifica degli schemi
` Gestione di viste
` CREATE INDEX
` Autorizzazioni d'accesso
CREATE INDEX DATA IX
ON ORDINI (DATA)
Basi di Dati
` CREATE UNIQUE INDEX
CREATE UNIQUE INDEX ORD KEY
Aspetti avanzati nella definizione degli schemi
ON ORDINI (ORD COD)
Basi di Dati Aspetti avanzati nella definizione degli schemi Basi di Dati Aspetti avanzati nella definizione degli schemi
3 4
Comandi di modifica degli schemi Cancellazione degli oggetti Modifica degli oggetti
` ` `
Necessari per garantire l’evoluzione della base di dati a DROP (domini, tabelle, indici, view, asserzioni, procedure, ALTER (domini, tabelle)
fronte di nuove esigenze trigger) ` Es: ALTER TABLE ORDINI ADD COLUMN NUM FATT CHAR(6)
` Es: DROP TABLE ORDINI ` Es: ALTER TABLE ORDINI ALTER COLUMN IMPORTO ADD
DEFAULT 0
` Es: DROP INDEX DATA IX
` E’ possibile:
` Es: ALTER TABLE ORDINI DROP COLUMN DATA
` CREARE NUOVI OGGETTI (CREATE)
` OPZIONI RESTRICT e CASCADE
` MODIFICARE OGGETTI PREESISTENTI (ALTER)
` `
CANCELLARE OGGETTI (DROP) RESTRICT: impedisce drop se gli oggetti comprendono istanze
` CASCADE: applica drop agli oggetti collegati
Basi di Dati Aspetti avanzati nella definizione degli schemi Basi di Dati Aspetti avanzati nella definizione degli schemi Basi di Dati Aspetti avanzati nella definizione degli schemi
5 6 7
Viste relazionali Sintassi delle viste relazionali Esempio di vista semplice
` ` `
Offrono la quot;visionequot; di tabelle virtuali (schemi esterni) CREATE VIEW <Nome> AS <QUERY> Ordini di importo superiore a 10.000 €
CREATE VIEW ORDINI PRINCIPALI AS
` `
Classificate in CREATE VIEW <Nome> ( <Nome attributi>) AS <QUERY> SELECT * FROM ORDINI
` SEMPLICI (Selezione e proiezione su una sola tabella) WHERE IMPORTO > 10.000
ordini
` COMPLESSE ` Le query possono includere al loro interno viste definite
VISTA :
in precedenza ordini principali
1 3 2003-06-01 50.000
4 1 2004-07-01 12.000
6 3 2004-09-03 27.000
Basi di Dati Aspetti avanzati nella definizione degli schemi Basi di Dati Aspetti avanzati nella definizione degli schemi Basi di Dati Aspetti avanzati nella definizione degli schemi
8 9 10
2. Uso della vista per query Modifiche tramite le viste Esempio di vista complessa
` ` Vista:
Vista: CREATE VIEW CLI PRO (CLIENTE,PRODOTTO)
CREATE VIEW ORDINI PRINCIPALI AS
CREATE VIEW ORDINI PRINCIPALI AS
AS
SELECT * FROM ORDINI
SELECT *
WHERE IMPORTO > 10.000 SELECT COD CLI, COD PROD
FROM ORDINI
WHERE IMPORTO > 10.000
FROM ORDINE JOIN DETTAGLIO
` Modifica:
UPDATE ORDINI PRINCIPALI ON ORDINE.COD ORD = DETTAGLIO.COD ORD
` Query:
SET IMPORTO = IMPORTO * 1.05
SELECT NUM CLI WHERE NUM CLI = 3
FROM ORDINI PRINCIPALI
` Composizione della vista con la modifica:
` Composizione della vista con la query: UPDATE ORDINI
SELECT NUM CLI SET IMPORTO = IMPORTO * 1.05
FROM ORDINI WHERE NUM CLI = 3
WHERE IMPORTO > 10.000 AND IMPORTO > 10.000
Basi di Dati Aspetti avanzati nella definizione degli schemi Basi di Dati Aspetti avanzati nella definizione degli schemi Basi di Dati Aspetti avanzati nella definizione degli schemi
11 12 13
Vista complessa (JOIN) Interrogazione sulla vista complessa Modifiche sulla vista complessa
` `
Query: Non è possibile modificare le tabelle di base tramite la
CLIENTE PRODOTTO vista perché l’interpretazione è ambigua
SELECT CLIENTE
` Es: UPDATE CLI PROD SET PRODOTTO=43 WHERE CLIENTE=12
12 45 FROM CLI PROD
WHERE PRODOTTO = 45
` il cliente ha cambiato l'ordine
` il codice del prodotto è cambiato
` Composizione della vista con la query:
JOIN
SELECT COD CLI
FROM ORDINE JOIN DETTAGLIO
COD-ORD COD-PROD …..
…..
COD-CLI COD-ORD ON ORDINE.COD ORD = DETTAGLIO.COD ORD
12 33 33 45 WHERE COD PROD = 45
Basi di Dati Aspetti avanzati nella definizione degli schemi Basi di Dati Aspetti avanzati nella definizione degli schemi
14 Basi di Dati Aspetti avanzati nella definizione degli schemi 15 16
Vista complessa (JOIN) Autorizzazioni d’accesso Autorizzazioni d’accesso
` `
PRIVATEZZA: protezione selettiva della base di dati in Si attribuiscono agli UTENTI dei PRIVILEGI DI ACCESSO alle
CLIENTE PRODOTTO
modo da garantire l’accesso solo agli utenti autorizzati. RISORSE
12 43
45
` Utenti: identificati tramite password
` Risorse: tabelle, view (e altre)
` Meccanismi per identificare l’utente (tramite PAROLA
CHIAVE o PASSWORD):
JOIN ` GRANT <privilegi> ON <risorse> TO <utenti>
` Quando si collega al sistema informatico
` Quando accede al DBMS
COD-ORD COD-PROD …
…
COD-CLI COD-ORD
` UTENTI individuali e GRUPPI di utenti
12 33 33 45
48 43
48 43
Basi di Dati Aspetti avanzati nella definizione degli schemi Basi di Dati Aspetti avanzati nella definizione degli schemi
17 Basi di Dati Aspetti avanzati nella definizione degli schemi 18 19
3. Principali privilegi di accesso Concessione dei privilegi Esempio di uso, grant option
` ` `
SELECT [ATTRIBUTI] Il creatore di una risorsa ha tutti i privilegi Database administrator:
` GRANT ALL PRIVILEGES ON ORDINE TO User1 WITH GRANT
` UPDATE [ATTRIBUTI]
OPTION
` `
INSERT Spesso l'utente DATABASE ADMINISTRATOR crea l'intera
base di dati
` DELETE
` User1
` ALL PRIVILEGES
` GRANT SELECT ON ORDINE TO User2 WITH GRANT OPTION
` Chi detiene un privilegio può concederlo con GRANT
OPTION:
` ESEMPI:
` User2
` GRANT ALL PRIVILEGES ON ORDINE TO User1 WITH GRANT
` GRANT ALL PRIVILEGES ON ORDINE TO User1
OPTION ` GRANT SELECT ON ORDINE TO User3
` GRANT UPDATE(IMPORTO) ON ORDINE TO User2
` GRANT SELECT ON ORDINE TO User2, User3
Basi di Dati Aspetti avanzati nella definizione degli schemi Basi di Dati Aspetti avanzati nella definizione degli schemi Basi di Dati Aspetti avanzati nella definizione degli schemi
20 21 22
Revoca dei privilegi Revoca di un privilegio con cascata Revoca di un privilegio con cascata
` `
REVOKE <privilegi> ON <risorsa> FROM <utente> Database administrator
A
` `
REVOKE UPDATE ON ORDINE FROM User1 GRANT SELECT ON ORDINE TO User1 WITH GRANT OPTION B D
C
` REVOKE SELECT ON ORDINE FROM User3
` User1
` Revoca dei privilegi con cascata ` GRANT SELECT ON ORDINE TO User2
` REVOKE <privilegi> ON <risorsa> FROM <utente> CASCADE
A C
B
` Database administrator
` REVOKE SELECT ON ORDINE FROM User1 CASCADE
Non si revoca ciò che
Z ha concesso a C
Z
Basi di Dati Aspetti avanzati nella definizione degli schemi Basi di Dati Aspetti avanzati nella definizione degli schemi
23 24 25 Basi di Dati Aspetti avanzati nella definizione degli schemi
Algoritmo dei Time Stamp Algoritmo dei Time Stamp Algoritmo dei Time Stamp
CATALOGO DEI GRANT User tabella grantor read insert delete
read, insert, delete
read, insert T=15
A
X Y
User tabella grantor read insert delete X EMP A 15 15 -
T=25
T=20
read, delete X EMP B 20 - 20
B X EMP A 15 15 - Y EMP X 25 25 25
X EMP B 20 - 20
T=30 X EMP C 30 - 30
read, delete Y EMP X 25 25 25
C
X EMP C 30 - 30
Se B revoca tutti i diritti a X si elimina la tupla (X,B)
X può continuare a read, insert e delete perché li ha
ricevuti anche da A e C
Al tempo T=35 B revoca (con cascata) tutti i diritti a X
Ad ogni GRANT si inserisce una tupla con il tempo
Ad Y si revoca il delete perché al tempo 25 X poteva
della concessione in corrispondenza del privilegio
averlo ricevuto solo da B
26 Basi di Dati Aspetti avanzati nella definizione degli schemi 27 Basi di Dati Aspetti avanzati nella definizione degli schemi 28 Basi di Dati Aspetti avanzati nella definizione degli schemi
4. Viste e autorizzazioni di accesso Esempio: gestione dei conti correnti Requisiti di accesso
conto-corrente
` Viste = unità di autorizzazione
filiale 3
filiale 1 N.
filiale 2 NUM- SALDO
…
` Consentono la gestione ottimale della privatezza CONTO FILIALE
all previleges
funzionari1
1
x
rete 1
y filiale1
Banca 1
z
CONTO CORRENTE (NUM CONTO, FILIALE, transazione
cassieri1
NUM-
CLIENTE, COD FISC, DATA APERTURA, SALDO) …
CONTO
x
TRANSAZIONE (NUM CONTO, DATA, PROGR, x
filiale1
select
CAUSALE, AMMONTARE) y
cassieri2,3
cassieri2
...
Basi di Dati Aspetti avanzati nella definizione degli schemi Basi di Dati Aspetti avanzati nella definizione degli schemi
29 30 31 Basi di Dati Aspetti avanzati nella definizione degli schemi
Viste relative alla prima filiale Autorizzazioni relative ai dati della prima filiale Esercizi
CREATE VIEW CONTO1 AS `
GRANT ALL PRIVILEGES ON CONTO1 TO FUNZIONARI1 Riprendere le basi di dati per la gestione del personale ed
SELECT * esprimere:
GRANT UPDATE(SALDO) ON CONTO1 TO CASSIERI1
FROM CONTO CORRENTE ` i comandi per modificare la tabella IMPIEGATO aggiungendo il
GRANT SELECT ON CONTO1 TO CASSIERI1, CASSIERI2,
campo COD FISC
WHERE FILIALE = 1 CASSIERI3
` una vista complessa che contiene i nomi degli impiegati che
GRANT SELECT ON TRANSAZIONE1 TO FUNZIONARI1 lavorano ai vari progetti
CREATE VIEW TRANSAZIONE1 AS GRANT ALL PRIVILEGES ON TRANSAZIONE1 TO CASSIERI1 ` la vista che seleziona gli IMPIEGATI che lavorano al progetto
SELECT * “Wide”
GRANT SELECT ON TRANSAZIONE1 TO CASSIERI2, CASSIERI3
FROM TRANSAZIONE ` le istruzioni che consentono all’utente MGR WIDE il pieno
WHERE NUM CONTO IN controllo sulla vista
( SELECT NUM CONTO
FROM CONTO1 )
Basi di Dati Aspetti avanzati nella definizione degli schemi Basi di Dati Aspetti avanzati nella definizione degli schemi Basi di Dati Aspetti avanzati nella definizione degli schemi
32 33 34