SlideShare a Scribd company logo
1 of 4
Download to read offline
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
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
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
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

More Related Content

Viewers also liked

Viewers also liked (8)

Calc Num Zanni 02
Calc Num Zanni 02Calc Num Zanni 02
Calc Num Zanni 02
 
Branch And Network Partner
Branch And Network PartnerBranch And Network Partner
Branch And Network Partner
 
Basi Dati A1
Basi Dati A1Basi Dati A1
Basi Dati A1
 
Basi Dati C1
Basi Dati C1Basi Dati C1
Basi Dati C1
 
Lessons From The Life Of A.R.Rahman
Lessons From The Life Of A.R.RahmanLessons From The Life Of A.R.Rahman
Lessons From The Life Of A.R.Rahman
 
PUMPS+-
PUMPS+-PUMPS+-
PUMPS+-
 
Aviation disasters due to mechanical failures
Aviation disasters due to mechanical failuresAviation disasters due to mechanical failures
Aviation disasters due to mechanical failures
 
Ship Rudders
Ship RuddersShip Rudders
Ship Rudders
 

More from Bombers Falcoman (20)

Calc Num Prato 04
Calc Num Prato 04Calc Num Prato 04
Calc Num Prato 04
 
Calc Num Prato 02
Calc Num Prato 02Calc Num Prato 02
Calc Num Prato 02
 
Calc Num Prato 01(21.05.09)
Calc Num Prato 01(21.05.09)Calc Num Prato 01(21.05.09)
Calc Num Prato 01(21.05.09)
 
Calc Num Es 13.05.09
Calc Num Es 13.05.09Calc Num Es 13.05.09
Calc Num Es 13.05.09
 
Basi Dati F1 Es
Basi Dati F1 EsBasi Dati F1 Es
Basi Dati F1 Es
 
Basi Dati F1 Bis
Basi Dati F1 BisBasi Dati F1 Bis
Basi Dati F1 Bis
 
Basi Dati E6
Basi Dati E6Basi Dati E6
Basi Dati E6
 
Basi Dati E5
Basi Dati E5Basi Dati E5
Basi Dati E5
 
Basi Dati E3
Basi Dati E3Basi Dati E3
Basi Dati E3
 
Basi Dati E1
Basi Dati E1Basi Dati E1
Basi Dati E1
 
Basi Dati F1
Basi Dati F1Basi Dati F1
Basi Dati F1
 
Basi Dati E2
Basi Dati E2Basi Dati E2
Basi Dati E2
 
Basi Dati E4
Basi Dati E4Basi Dati E4
Basi Dati E4
 
Basi Dati C Riepilogo
Basi Dati C RiepilogoBasi Dati C Riepilogo
Basi Dati C Riepilogo
 
Basi Dati C5 Es
Basi Dati C5 EsBasi Dati C5 Es
Basi Dati C5 Es
 
Basi Dati C6
Basi Dati C6Basi Dati C6
Basi Dati C6
 
Basi Dati C6 Es
Basi Dati C6 EsBasi Dati C6 Es
Basi Dati C6 Es
 
Basi Dati d4
Basi Dati d4Basi Dati d4
Basi Dati d4
 
Basi Dati d3
Basi Dati d3Basi Dati d3
Basi Dati d3
 
Basi Dati d2
Basi Dati d2Basi Dati d2
Basi Dati d2
 

Basi Dati C7

  • 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