SlideShare una empresa de Scribd logo
1 de 29
Descargar para leer sin conexión
Basi di Dati

Dichiarazione degli schemi in SQL
Basi di Dati – Dove ci troviamo?
                                                 A) Introduzione
                                                     1    2

     B) Prog. Concettuale (ER)                                     C) Modello Relazionale, 
                                                                   Algebra relazionale, SQL

      1   2    3       4       5       6     7                 1       2   3   4    5    6    7

          D) Prog. Logica e                                    E) Tecnologia di un DBMS
          Normalizzazione

           1       2       3       4                               1   2   3    4    5    6


                                           F) Programmazione DB


                                                      1   2

2                                                              Basi di Dati: Dichiarazione degli schemi in SQL
Storia di SQL

    Definito nell'ambito del progetto 
      SYSTEM R (IBM S. JOSE) nel 1976


    Nome originario: SEQUEL

    Adottato progressivamente da tutti i sistemi commerciali

    Standardizzato da ANSI e ISO


3                                        Basi di Dati: Dichiarazione degli schemi in SQL
Composizione di SQL

    Data DefinitionLanguage (DDL)
     definizione di domini, tabelle, indici, viste, vincoli, procedure, 
     trigger


    Data ManipulationLanguage (DML)
     linguaggio di query, modifica, comandi          transazionali


    Data ControlLanguage (DCL)
     linguaggio per la gestione degli utenti e dei privilegi di accesso


4                                          Basi di Dati: Dichiarazione degli schemi in SQL
Standardizzazione di SQL
    Progressione dello standard per estensioni quasi‐
    compatibili
      prima versione nel 1986 (SQL‐1)
      modifica alla prima versione nel 1989 (SQL‐89)
      seconda versione nel 1992 (SQL‐2, SQL‐92)
      terza versione nel 1999 (SQL‐3, SQL‐99)


    In SQL‐2:
      entry SQL (più o meno equivalente a SQL‐89)
      intermediate SQL
      full SQL

5                                        Basi di Dati: Dichiarazione degli schemi in SQL
Potere espressivo di standard e sistemi commerciali

    un tipico
     sistema
 commerciale



                    SQL‐1

                    SQL‐89
                    SQL‐2

                    SQL‐3

 6                             Basi di Dati: Dichiarazione degli schemi in SQL
Tipi di dati in SQL‐2 

stringhe                 numerici esatti

     CHAR (N)                 NUMERIC (P, S)

     VARCHAR (N)              DECIMAL (P, S)

     BIT (N)                  INTEGER

     VARBIT (N)               SMALLINT


 7                           Basi di Dati: Dichiarazione degli schemi in SQL
Tipi di dati in SQL‐2 (cont.)

Numerici approssimati      Domini speciali

     FLOAT(N)                   DATE
                                 YYYYMMDD

     REAL
                                TIME(N)
                                 HHMMSS.NNNN
     DOUBLE PRECISION
                                TIMESTAMP

                                INTERVAL

 8                               Basi di Dati: Dichiarazione degli schemi in SQL
Il valore "null"

     null è un valore polimorfo (che appartiene a tutti i 
     domini) col significato di valore non noto

     il valore esiste in realtà ma è ignoto al database
       Es: data di nascita


     il valore è inapplicabile
       Es: numero patente per minorenni



 9                                        Basi di Dati: Dichiarazione degli schemi in SQL
Definizione dei domini applicativi
  Un dominio è un insieme di valori consentiti

  Un dominio può essere un tipo di dato base dell’SQL 
  (dominio elementare) oppure può essere definito 
  dall’utente:

CREATE DOMAIN <nome‐dominio>
AS<tipo‐di‐dati>
             [DEFAULT<valore‐default>]
             [<vincoli‐di‐dominio>]

 10                                Basi di Dati: Dichiarazione degli schemi in SQL
Esempi

CREATE DOMAIN PrezzoQuotidiani
AS INTEGER
DEFAULT 1500
      NOT NULL

CREATE DOMAIN OreLezione
AS SMALLINT
DEFAULT 80


 11                              Basi di Dati: Dichiarazione degli schemi in SQL
Definizione delle tabelle
  Una tabella è costituita da:
      una lista di uno o più attributi (colonne) 
      un insieme di zero o più vincoli


CREATE TABLE <nome‐tabella>
(<nome‐col><dominio> [<vincoli‐col>] ,
  …
<nome‐col><dominio> [<vincoli‐col>] ,
  [<vincoli‐tab>]  
)

 12                                       Basi di Dati: Dichiarazione degli schemi in SQL
Vincoli di colonna
     NOT NULL
      l’attributo non può assumere il valore null
 UNIQUE
      unicità dell’attributo
 PRIMARY KEY
      l’attributo è la chiave primaria
 CHECK
      esprime un generico vincolo sulla colonna tramite una 
      espressione logico‐relazionale
 REFERENCES 
      esprime il vincolo della Foreign Key 

13                                            Basi di Dati: Dichiarazione degli schemi in SQL
Vincoli di tabella
  PRIMARY KEY  (<lista‐colonne>)
      chiave primaria della tabella (implica NOT NULL)


  FOREIGN KEY (<lista‐colonne>) REFERENCES <tab> 
  [(<lista‐colonne>)] 
      chiave secondaria della tabella


  CHECK (<condizione>)
      predicato che deve essere soddisfatto per tutte le tuple della 
      tabella


 14                                       Basi di Dati: Dichiarazione degli schemi in SQL
Esempi
CREATE TABLE STUDENTE 
  (  MATR CHAR(6) PRIMARY KEY
     NOME VARCHAR (30) NOT NULL
     CITTÀ VARCHAR (20)
     C‐DIP CHAR (3)   )

CREATE TABLE CORSO 
  (  COD‐CORSO CHAR(6) PRIMARY KEY
     TITOLO VARCHAR(30) NOT NULL
     DOCENTE VARCHAR(20)  )

15                          Basi di Dati: Dichiarazione degli schemi in SQL
Esempi (cont.)
CREATE TABLE ESAME
  (  MATR CHAR(6)
     COD‐CORSO CHAR(6)
     DATA DATE  NOT NULL
     VOTO SMALLINT NOT NULL 
     PRIMARY KEY(MATR,COD‐CORSO) 
  )




16                          Basi di Dati: Dichiarazione degli schemi in SQL
Integrità referenziale

 Esprime un legame gerarchico (padre‐figlio) fra tabelle

 Alcuni attributi della tabella figlio sono definiti FOREIGN 
 KEY

 I valori contenuti nella FOREIGN KEY devono essere 
 sempre presenti nella tabella padre




17                                  Basi di Dati: Dichiarazione degli schemi in SQL
Esempio: studente ‐ esame

studente
      MATR
      123
      415                             esame
      702                                  MATR
                                           123
                                           123
                                           702

 18                         Basi di Dati: Dichiarazione degli schemi in SQL
Il problema degli orfani
                    ORFANI:
studente
                    tuple che restano prive di padre a 
      MATR          causa di cancellazioni 
      123           e modifiche della tabella padre
      415                                 esame
      702                                      MATR
                                               123
                                               123
                                               702

 19                             Basi di Dati: Dichiarazione degli schemi in SQL
Gestione degli orfani
 Cosa succede degli esami se si cancellano gli studenti?
     CASCADE  (si cancellano anche gli esami)
     SET NULL 
     SET DEFAULT
     NO ACTION

 Cose succede degli esami se si modifica la matricola nella 
 tabella STUDENTE? 
     CASCADE  (si modificano anche gli esami)
     SET NULL
     SET DEFAULT
     NO ACTION

20                                      Basi di Dati: Dichiarazione degli schemi in SQL
Definizione : nella tabella figlio 
CREATE TABLE ESAME
  (    ........
       FOREIGN KEY MATR REFERENCES STUDENTI 
                ON DELETE CASCADE ON UPDATE CASCADE )

  È lecito essere figli di più padri

CREATE TABLE ESAME
  (    .…
       PRIMARY KEY(MATR,COD‐CORSO) 
       FOREIGN KEY MATR REFERENCES STUDENTI 
              ON DELETE CASCADE  ON UPDATE CASCADE 
       FOREIGN KEY COD‐CORSO REFERENCES CORSO
              ON DELETE NO ACTION ON UPDATE NO ACTION )

 21                                    Basi di Dati: Dichiarazione degli schemi in SQL
Una istanza scorretta
studente MATR            NOME      CITTÀ       C‐DIP
              123
              415
              702

                                esame   MATR      COD‐            DATA                  VOTO
       viola la chiave                            CORSO
                                        123       1               2004‐09‐07            30
                                        123       2               2005‐01‐08            28
                                        123       2               2004‐08‐01            28
viola il NOT NULL
                                        702       2               2004‐09‐07            20
viola la integrità                      702       1               NULL                  NULL
referenziale                            714       1               2004‐09‐07            28

  22                                           Basi di Dati: Dichiarazione degli schemi in SQL
Una istanza corretta
studente
MATR   NOME   CITTÀ    C‐DIP
123
415
702
                                                                 esame
                       MATR    COD‐          DATA                   VOTO
                               CORSO
                       123       1           2004‐09‐07             30
                       123       2           2005‐01‐08             28
                       702       2           2004‐09‐07             20


23                              Basi di Dati: Dichiarazione degli schemi in SQL
Esempio : gestione ordini 
     COD‐CLI     INDIRIZZO        P‐IVA cliente



     COD‐ORD     COD‐CLI       DATA      IMPORTO            ordine




     COD‐ORD      COD‐PROD      QTA       dettaglio



     COD‐PROD      NOME     PREZZO        prodotto

24                                         Basi di Dati: Dichiarazione degli schemi in SQL
Definizione della tabella CLIENTE

            cliente
              COD‐CLI      INDIRIZZO       P‐IVA



CREATE TABLE CLIENTE
  (  COD‐CLI CHAR(6)  PRIMARY KEY
     INDIRIZZO CHAR(50)  
     P‐IVA CHAR(12) UNIQUE 
  ) 

25                                   Basi di Dati: Dichiarazione degli schemi in SQL
Definizione della tabella ORDINE
          ordine
           COD‐ORD      COD‐CLI      DATA      IMPORTO



CREATE TABLE ORDINE 
  (     COD‐ORD CHAR(6)  PRIMARY KEY
        COD‐CLICHAR(6)  NOT NULL  DEFAULT='999999'
        DATA DATE      
        IMPORTO INTEGER
        FOREIGN KEY COD‐CLIREFERENCESCLIENTE 
        ON DELETE SET DEFAULT
        ON UPDATE SET DEFAULT
  )

 26                                      Basi di Dati: Dichiarazione degli schemi in SQL
Definizione della tabella DETTAGLIO
            dettaglio
             COD‐ORD      COD‐PROD      QTA

CREATE TABLE DETTAGLIO
  (     COD‐ORD CHAR(6) 
        COD‐CLI CHAR(6)
        QTA SMALLINT 
        PRIMARY KEY (COD‐ORD,COD‐PROD)
        FOREIGN KEY COD‐ORDREFERENCESORDINE 
                ON DELETE CASCADE   ON UPDATE CASCADE
        FOREIGN KEY COD‐PRODREFERENCES PRODOTTO
                ON DELETE NO ACTION   ON UPDATE NO ACTION
  )

 27                                    Basi di Dati: Dichiarazione degli schemi in SQL
Definizione della tabella PRODOTTO

          prodotto
            COD‐PROD     NOME      PREZZO




CREATE TABLE PRODOTTO
  (  COD‐PROD CHAR(6)  PRIMARY KEY
     NOME CHAR(20)
     PREZZO SMALLINT 
  )

28                              Basi di Dati: Dichiarazione degli schemi in SQL
Esercizio: gestione personale
     esprimere in SQL la dichiarazione dello schema
MATR     NOME       DATA‐ASS     SALARIO       MATR‐MGR                  impiegato
1        Piero      2002‐01‐01   1500 €        2
2        Giorgio    2004‐01‐01   2000 €        null
3        Giovanni   2003‐07‐01   1000 €        2 

assegnamento                        progetto
MATR     NUM‐PROG     PERC           NUM‐PROG          TITOLO           TIPO
1        3            50             3                 Idea             Esprit
1        4            50             4                 Wide             Esprit
2        3            100
3        4            100
    29                                     Basi di Dati: Dichiarazione degli schemi in SQL

Más contenido relacionado

Similar a C3 Ddl1

F1 Vincoli Procedure Trigger
F1 Vincoli Procedure TriggerF1 Vincoli Procedure Trigger
F1 Vincoli Procedure TriggerMajong DevJfu
 
Basi di Dati - C1 - Il modello relazionale dei dati
Basi di Dati - C1 - Il modello relazionale dei datiBasi di Dati - C1 - Il modello relazionale dei dati
Basi di Dati - C1 - Il modello relazionale dei datiMajong DevJfu
 
noSQL La nuova frontiera dei Database [DB05-S]
noSQL La nuova frontiera dei Database [DB05-S]noSQL La nuova frontiera dei Database [DB05-S]
noSQL La nuova frontiera dei Database [DB05-S]Andrea Maddalena
 
Basi di Dati - A2 - Tecnologia dei sistemi informativi
Basi di Dati - A2 - Tecnologia dei sistemi informativiBasi di Dati - A2 - Tecnologia dei sistemi informativi
Basi di Dati - A2 - Tecnologia dei sistemi informativiMajong DevJfu
 
Corso Di Basi Di Dati 04 Progettazione Logica
Corso Di  Basi Di  Dati 04  Progettazione LogicaCorso Di  Basi Di  Dati 04  Progettazione Logica
Corso Di Basi Di Dati 04 Progettazione Logicaguestbe916c
 
MySQL
MySQLMySQL
MySQLjekil
 
SELDA Informatica & QlikView
SELDA Informatica & QlikViewSELDA Informatica & QlikView
SELDA Informatica & QlikViewDario Partenope
 
corso oracle plsql.ppt
corso oracle plsql.pptcorso oracle plsql.ppt
corso oracle plsql.pptssuserf7962d
 
Presentazione Nuvola Vertica Full New1
Presentazione Nuvola Vertica Full New1Presentazione Nuvola Vertica Full New1
Presentazione Nuvola Vertica Full New1guest5c2d35b
 
Presentazione Nuvola Vertica Full
Presentazione Nuvola Vertica FullPresentazione Nuvola Vertica Full
Presentazione Nuvola Vertica FullAlberto.F
 
Presentazione Nuvola Vertica F
Presentazione Nuvola Vertica FPresentazione Nuvola Vertica F
Presentazione Nuvola Vertica FAlberto.F
 

Similar a C3 Ddl1 (20)

C4es
C4esC4es
C4es
 
F1 Vincoli Procedure Trigger
F1 Vincoli Procedure TriggerF1 Vincoli Procedure Trigger
F1 Vincoli Procedure Trigger
 
Basi di Dati - C1 - Il modello relazionale dei dati
Basi di Dati - C1 - Il modello relazionale dei datiBasi di Dati - C1 - Il modello relazionale dei dati
Basi di Dati - C1 - Il modello relazionale dei dati
 
C4 Sql1
C4 Sql1C4 Sql1
C4 Sql1
 
C7 Ddl
C7 DdlC7 Ddl
C7 Ddl
 
Sql 1
Sql 1Sql 1
Sql 1
 
noSQL La nuova frontiera dei Database [DB05-S]
noSQL La nuova frontiera dei Database [DB05-S]noSQL La nuova frontiera dei Database [DB05-S]
noSQL La nuova frontiera dei Database [DB05-S]
 
Basi di Dati - A2 - Tecnologia dei sistemi informativi
Basi di Dati - A2 - Tecnologia dei sistemi informativiBasi di Dati - A2 - Tecnologia dei sistemi informativi
Basi di Dati - A2 - Tecnologia dei sistemi informativi
 
C2 Ling Interrog
C2 Ling InterrogC2 Ling Interrog
C2 Ling Interrog
 
Corso Di Basi Di Dati 04 Progettazione Logica
Corso Di  Basi Di  Dati 04  Progettazione LogicaCorso Di  Basi Di  Dati 04  Progettazione Logica
Corso Di Basi Di Dati 04 Progettazione Logica
 
Basi Di Dati 05
Basi Di Dati 05Basi Di Dati 05
Basi Di Dati 05
 
MySQL
MySQLMySQL
MySQL
 
C6es
C6esC6es
C6es
 
SELDA Informatica & QlikView
SELDA Informatica & QlikViewSELDA Informatica & QlikView
SELDA Informatica & QlikView
 
SQL Server2000
SQL Server2000SQL Server2000
SQL Server2000
 
corso oracle plsql.ppt
corso oracle plsql.pptcorso oracle plsql.ppt
corso oracle plsql.ppt
 
Oai Data Adapter
Oai Data AdapterOai Data Adapter
Oai Data Adapter
 
Presentazione Nuvola Vertica Full New1
Presentazione Nuvola Vertica Full New1Presentazione Nuvola Vertica Full New1
Presentazione Nuvola Vertica Full New1
 
Presentazione Nuvola Vertica Full
Presentazione Nuvola Vertica FullPresentazione Nuvola Vertica Full
Presentazione Nuvola Vertica Full
 
Presentazione Nuvola Vertica F
Presentazione Nuvola Vertica FPresentazione Nuvola Vertica F
Presentazione Nuvola Vertica F
 

Más de Majong DevJfu

9 - Architetture Software - SOA Cloud
9 - Architetture Software - SOA Cloud9 - Architetture Software - SOA Cloud
9 - Architetture Software - SOA CloudMajong DevJfu
 
8 - Architetture Software - Architecture centric processes
8 - Architetture Software - Architecture centric processes8 - Architetture Software - Architecture centric processes
8 - Architetture Software - Architecture centric processesMajong DevJfu
 
7 - Architetture Software - Software product line
7 - Architetture Software - Software product line7 - Architetture Software - Software product line
7 - Architetture Software - Software product lineMajong DevJfu
 
6 - Architetture Software - Model transformation
6 - Architetture Software - Model transformation6 - Architetture Software - Model transformation
6 - Architetture Software - Model transformationMajong DevJfu
 
5 - Architetture Software - Metamodelling and the Model Driven Architecture
5 - Architetture Software - Metamodelling and the Model Driven Architecture5 - Architetture Software - Metamodelling and the Model Driven Architecture
5 - Architetture Software - Metamodelling and the Model Driven ArchitectureMajong DevJfu
 
4 - Architetture Software - Architecture Portfolio
4 - Architetture Software - Architecture Portfolio4 - Architetture Software - Architecture Portfolio
4 - Architetture Software - Architecture PortfolioMajong DevJfu
 
3 - Architetture Software - Architectural styles
3 - Architetture Software - Architectural styles3 - Architetture Software - Architectural styles
3 - Architetture Software - Architectural stylesMajong DevJfu
 
2 - Architetture Software - Software architecture
2 - Architetture Software - Software architecture2 - Architetture Software - Software architecture
2 - Architetture Software - Software architectureMajong DevJfu
 
1 - Architetture Software - Software as a product
1 - Architetture Software - Software as a product1 - Architetture Software - Software as a product
1 - Architetture Software - Software as a productMajong DevJfu
 
10 - Architetture Software - More architectural styles
10 - Architetture Software - More architectural styles10 - Architetture Software - More architectural styles
10 - Architetture Software - More architectural stylesMajong DevJfu
 

Más de Majong DevJfu (20)

9 - Architetture Software - SOA Cloud
9 - Architetture Software - SOA Cloud9 - Architetture Software - SOA Cloud
9 - Architetture Software - SOA Cloud
 
8 - Architetture Software - Architecture centric processes
8 - Architetture Software - Architecture centric processes8 - Architetture Software - Architecture centric processes
8 - Architetture Software - Architecture centric processes
 
7 - Architetture Software - Software product line
7 - Architetture Software - Software product line7 - Architetture Software - Software product line
7 - Architetture Software - Software product line
 
6 - Architetture Software - Model transformation
6 - Architetture Software - Model transformation6 - Architetture Software - Model transformation
6 - Architetture Software - Model transformation
 
5 - Architetture Software - Metamodelling and the Model Driven Architecture
5 - Architetture Software - Metamodelling and the Model Driven Architecture5 - Architetture Software - Metamodelling and the Model Driven Architecture
5 - Architetture Software - Metamodelling and the Model Driven Architecture
 
4 - Architetture Software - Architecture Portfolio
4 - Architetture Software - Architecture Portfolio4 - Architetture Software - Architecture Portfolio
4 - Architetture Software - Architecture Portfolio
 
3 - Architetture Software - Architectural styles
3 - Architetture Software - Architectural styles3 - Architetture Software - Architectural styles
3 - Architetture Software - Architectural styles
 
2 - Architetture Software - Software architecture
2 - Architetture Software - Software architecture2 - Architetture Software - Software architecture
2 - Architetture Software - Software architecture
 
1 - Architetture Software - Software as a product
1 - Architetture Software - Software as a product1 - Architetture Software - Software as a product
1 - Architetture Software - Software as a product
 
10 - Architetture Software - More architectural styles
10 - Architetture Software - More architectural styles10 - Architetture Software - More architectural styles
10 - Architetture Software - More architectural styles
 
Uml3
Uml3Uml3
Uml3
 
Uml2
Uml2Uml2
Uml2
 
6
66
6
 
5
55
5
 
4 (uml basic)
4 (uml basic)4 (uml basic)
4 (uml basic)
 
3
33
3
 
2
22
2
 
1
11
1
 
Tmd template-sand
Tmd template-sandTmd template-sand
Tmd template-sand
 
26 standards
26 standards26 standards
26 standards
 

C3 Ddl1

  • 2. Basi di Dati – Dove ci troviamo? A) Introduzione 1 2 B) Prog. Concettuale (ER) C) Modello Relazionale,  Algebra relazionale, SQL 1 2 3 4 5 6 7 1 2 3 4 5 6 7 D) Prog. Logica e  E) Tecnologia di un DBMS Normalizzazione 1 2 3 4 1 2 3 4 5 6 F) Programmazione DB 1 2 2 Basi di Dati: Dichiarazione degli schemi in SQL
  • 3. Storia di SQL Definito nell'ambito del progetto  SYSTEM R (IBM S. JOSE) nel 1976 Nome originario: SEQUEL Adottato progressivamente da tutti i sistemi commerciali Standardizzato da ANSI e ISO 3 Basi di Dati: Dichiarazione degli schemi in SQL
  • 4. Composizione di SQL Data DefinitionLanguage (DDL) definizione di domini, tabelle, indici, viste, vincoli, procedure,  trigger Data ManipulationLanguage (DML) linguaggio di query, modifica, comandi  transazionali Data ControlLanguage (DCL) linguaggio per la gestione degli utenti e dei privilegi di accesso 4 Basi di Dati: Dichiarazione degli schemi in SQL
  • 5. Standardizzazione di SQL Progressione dello standard per estensioni quasi‐ compatibili prima versione nel 1986 (SQL‐1) modifica alla prima versione nel 1989 (SQL‐89) seconda versione nel 1992 (SQL‐2, SQL‐92) terza versione nel 1999 (SQL‐3, SQL‐99) In SQL‐2: entry SQL (più o meno equivalente a SQL‐89) intermediate SQL full SQL 5 Basi di Dati: Dichiarazione degli schemi in SQL
  • 6. Potere espressivo di standard e sistemi commerciali un tipico sistema commerciale SQL‐1 SQL‐89 SQL‐2 SQL‐3 6 Basi di Dati: Dichiarazione degli schemi in SQL
  • 7. Tipi di dati in SQL‐2  stringhe numerici esatti CHAR (N) NUMERIC (P, S) VARCHAR (N) DECIMAL (P, S) BIT (N) INTEGER VARBIT (N) SMALLINT 7 Basi di Dati: Dichiarazione degli schemi in SQL
  • 8. Tipi di dati in SQL‐2 (cont.) Numerici approssimati Domini speciali FLOAT(N)       DATE YYYYMMDD REAL TIME(N) HHMMSS.NNNN DOUBLE PRECISION TIMESTAMP INTERVAL 8 Basi di Dati: Dichiarazione degli schemi in SQL
  • 9. Il valore "null" null è un valore polimorfo (che appartiene a tutti i  domini) col significato di valore non noto il valore esiste in realtà ma è ignoto al database Es: data di nascita il valore è inapplicabile Es: numero patente per minorenni 9 Basi di Dati: Dichiarazione degli schemi in SQL
  • 10. Definizione dei domini applicativi Un dominio è un insieme di valori consentiti Un dominio può essere un tipo di dato base dell’SQL  (dominio elementare) oppure può essere definito  dall’utente: CREATE DOMAIN <nome‐dominio> AS<tipo‐di‐dati> [DEFAULT<valore‐default>] [<vincoli‐di‐dominio>] 10 Basi di Dati: Dichiarazione degli schemi in SQL
  • 11. Esempi CREATE DOMAIN PrezzoQuotidiani AS INTEGER DEFAULT 1500 NOT NULL CREATE DOMAIN OreLezione AS SMALLINT DEFAULT 80 11 Basi di Dati: Dichiarazione degli schemi in SQL
  • 12. Definizione delle tabelle Una tabella è costituita da: una lista di uno o più attributi (colonne)  un insieme di zero o più vincoli CREATE TABLE <nome‐tabella> (<nome‐col><dominio> [<vincoli‐col>] , … <nome‐col><dominio> [<vincoli‐col>] , [<vincoli‐tab>]   ) 12 Basi di Dati: Dichiarazione degli schemi in SQL
  • 13. Vincoli di colonna NOT NULL l’attributo non può assumere il valore null UNIQUE unicità dell’attributo PRIMARY KEY l’attributo è la chiave primaria CHECK esprime un generico vincolo sulla colonna tramite una  espressione logico‐relazionale REFERENCES  esprime il vincolo della Foreign Key  13 Basi di Dati: Dichiarazione degli schemi in SQL
  • 14. Vincoli di tabella PRIMARY KEY  (<lista‐colonne>) chiave primaria della tabella (implica NOT NULL) FOREIGN KEY (<lista‐colonne>) REFERENCES <tab>  [(<lista‐colonne>)]  chiave secondaria della tabella CHECK (<condizione>) predicato che deve essere soddisfatto per tutte le tuple della  tabella 14 Basi di Dati: Dichiarazione degli schemi in SQL
  • 15. Esempi CREATE TABLE STUDENTE  ( MATR CHAR(6) PRIMARY KEY NOME VARCHAR (30) NOT NULL CITTÀ VARCHAR (20) C‐DIP CHAR (3)   ) CREATE TABLE CORSO  ( COD‐CORSO CHAR(6) PRIMARY KEY TITOLO VARCHAR(30) NOT NULL DOCENTE VARCHAR(20)  ) 15 Basi di Dati: Dichiarazione degli schemi in SQL
  • 16. Esempi (cont.) CREATE TABLE ESAME ( MATR CHAR(6) COD‐CORSO CHAR(6) DATA DATE  NOT NULL VOTO SMALLINT NOT NULL  PRIMARY KEY(MATR,COD‐CORSO)  ) 16 Basi di Dati: Dichiarazione degli schemi in SQL
  • 17. Integrità referenziale Esprime un legame gerarchico (padre‐figlio) fra tabelle Alcuni attributi della tabella figlio sono definiti FOREIGN  KEY I valori contenuti nella FOREIGN KEY devono essere  sempre presenti nella tabella padre 17 Basi di Dati: Dichiarazione degli schemi in SQL
  • 18. Esempio: studente ‐ esame studente MATR 123 415 esame 702 MATR 123 123 702 18 Basi di Dati: Dichiarazione degli schemi in SQL
  • 19. Il problema degli orfani ORFANI: studente tuple che restano prive di padre a  MATR causa di cancellazioni  123 e modifiche della tabella padre 415 esame 702 MATR 123 123 702 19 Basi di Dati: Dichiarazione degli schemi in SQL
  • 20. Gestione degli orfani Cosa succede degli esami se si cancellano gli studenti? CASCADE  (si cancellano anche gli esami) SET NULL  SET DEFAULT NO ACTION Cose succede degli esami se si modifica la matricola nella  tabella STUDENTE?  CASCADE  (si modificano anche gli esami) SET NULL SET DEFAULT NO ACTION 20 Basi di Dati: Dichiarazione degli schemi in SQL
  • 21. Definizione : nella tabella figlio  CREATE TABLE ESAME ( ........ FOREIGN KEY MATR REFERENCES STUDENTI  ON DELETE CASCADE ON UPDATE CASCADE ) È lecito essere figli di più padri CREATE TABLE ESAME ( .… PRIMARY KEY(MATR,COD‐CORSO)  FOREIGN KEY MATR REFERENCES STUDENTI  ON DELETE CASCADE  ON UPDATE CASCADE  FOREIGN KEY COD‐CORSO REFERENCES CORSO ON DELETE NO ACTION ON UPDATE NO ACTION ) 21 Basi di Dati: Dichiarazione degli schemi in SQL
  • 22. Una istanza scorretta studente MATR NOME CITTÀ C‐DIP 123 415 702 esame MATR COD‐ DATA VOTO viola la chiave CORSO 123 1 2004‐09‐07 30 123 2 2005‐01‐08 28 123 2 2004‐08‐01 28 viola il NOT NULL 702 2 2004‐09‐07 20 viola la integrità  702 1 NULL NULL referenziale 714 1 2004‐09‐07 28 22 Basi di Dati: Dichiarazione degli schemi in SQL
  • 23. Una istanza corretta studente MATR NOME CITTÀ C‐DIP 123 415 702 esame MATR COD‐ DATA VOTO CORSO 123 1 2004‐09‐07 30 123 2 2005‐01‐08 28 702 2 2004‐09‐07 20 23 Basi di Dati: Dichiarazione degli schemi in SQL
  • 24. Esempio : gestione ordini  COD‐CLI     INDIRIZZO        P‐IVA cliente COD‐ORD     COD‐CLI       DATA      IMPORTO ordine COD‐ORD      COD‐PROD      QTA dettaglio COD‐PROD      NOME     PREZZO prodotto 24 Basi di Dati: Dichiarazione degli schemi in SQL
  • 25. Definizione della tabella CLIENTE cliente COD‐CLI      INDIRIZZO       P‐IVA CREATE TABLE CLIENTE ( COD‐CLI CHAR(6)  PRIMARY KEY INDIRIZZO CHAR(50)   P‐IVA CHAR(12) UNIQUE  )  25 Basi di Dati: Dichiarazione degli schemi in SQL
  • 26. Definizione della tabella ORDINE ordine COD‐ORD      COD‐CLI      DATA      IMPORTO CREATE TABLE ORDINE  ( COD‐ORD CHAR(6)  PRIMARY KEY COD‐CLICHAR(6)  NOT NULL  DEFAULT='999999' DATA DATE       IMPORTO INTEGER FOREIGN KEY COD‐CLIREFERENCESCLIENTE  ON DELETE SET DEFAULT ON UPDATE SET DEFAULT ) 26 Basi di Dati: Dichiarazione degli schemi in SQL
  • 27. Definizione della tabella DETTAGLIO dettaglio COD‐ORD      COD‐PROD      QTA CREATE TABLE DETTAGLIO ( COD‐ORD CHAR(6)  COD‐CLI CHAR(6) QTA SMALLINT  PRIMARY KEY (COD‐ORD,COD‐PROD) FOREIGN KEY COD‐ORDREFERENCESORDINE  ON DELETE CASCADE   ON UPDATE CASCADE FOREIGN KEY COD‐PRODREFERENCES PRODOTTO ON DELETE NO ACTION   ON UPDATE NO ACTION ) 27 Basi di Dati: Dichiarazione degli schemi in SQL
  • 28. Definizione della tabella PRODOTTO prodotto COD‐PROD     NOME      PREZZO CREATE TABLE PRODOTTO ( COD‐PROD CHAR(6)  PRIMARY KEY NOME CHAR(20) PREZZO SMALLINT  ) 28 Basi di Dati: Dichiarazione degli schemi in SQL
  • 29. Esercizio: gestione personale esprimere in SQL la dichiarazione dello schema MATR NOME DATA‐ASS SALARIO MATR‐MGR impiegato 1 Piero 2002‐01‐01 1500 € 2 2 Giorgio 2004‐01‐01 2000 € null 3 Giovanni 2003‐07‐01 1000 € 2  assegnamento progetto MATR NUM‐PROG PERC NUM‐PROG TITOLO TIPO 1 3 50 3 Idea Esprit 1 4 50 4 Wide Esprit 2 3 100 3 4 100 29 Basi di Dati: Dichiarazione degli schemi in SQL