Dichiarazione degli schemi in SQL DDL 1

Documenti analoghi
SQL SQL. Definizione dei dati. Domini. Esistono 6 domini elementari:

Domini elementari, 2. Basi di dati. Domini elementari, 4. Domini elementari, 3. Domini definiti dagli utenti. Domini elementari, 5

Basi di Dati prof. Letizia Tanca

Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, SQL

SQL. Laboratorio di Progettazione di Basi di Dati (CdS in Informatica e TPS)

Basi di dati SQL. Standardizzazione di SQL. Linguaggi di Interrogazione: SQL. Prof.Angela Bonifati

Universita di Milano Bicocca Corso di Basi di dati 1 in elearning C. Batini 6. SQL DDL 6.2 Data Description Language - 2

SQL SQL. Definizione dei dati. Domini. Esistono 6 domini elementari:

Il linguaggio SQL: DDL di base

SQL. Laboratorio di Progettazione di Basi di Dati (CdS in Informatica e TPS)

SQL. Lezione 1. Docente: Alberto Belussi

4/16/07. Le Basi di Dati Relazionali. Concetti Fondamentali. Base di dati, tabella, ennupla, attributo, dominio. Valori nulli

SQL Laboratorio di Basi di Dati a.a. 2002/2003

SQL: concetti base SQL. Definizione dei dati in SQL. SQL: "storia"

Laboratorio di Basi di Dati Esercizio 8.4/9.1

Linguaggio SQL: fondamenti D B M G. Gestione delle tabelle

Gestione delle tabelle

Corso di Informatica (Basi di Dati)

SISTEMI INFORMATIVI E TELEMEDICINA INFORMATICA MEDICA. 3. Panoramica su SQL Prof. Mauro Giacomini

Soluzione esercitazione 01

SQL: Concetti Base -Prima Parte-

Informatica B. Contenuti. Introduzione alle Basi di Dati e ai DBMS. Introduzione a dati e basi dati DBMS Modello dei dati

ESERCITAZIONE: Fornitore-Fornisce-Articolo

Basi di dati. Il Linguaggio SQL. K. Donno - Il Linguaggio SQL

DDL DML. Tipi di linguaggi per basi di dati. Si distinguono due categorie:

Basi di Dati. Laboratorio Ing. G. Laboccetta Dott.ssa. V. Policicchio. Corso di Laurea in Informatica. a.a

SQL: DDL, VI, Aggiornamenti e Viste

Lezione 4. Dallo schema ER al relazionale

Laboratorio di Basi di Dati

SQL Sintassi Dei Comandi

Interrogazioni nidificate

Transcript:

Dichiarazione degli schemi in SQL DDL 1

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 DDL 2

Composizione di SQL Data Definition Language (DDL) definizione di: domini, tabelle, indici autorizzazioni, viste, vincoli, procedure, trigger Data Manipulation Language (DML) linguaggio di query, linguaggio di modifica, comandi transazionali DDL 3

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 attesa per il 1998 (SQL-3) In SQL-2: - entry SQL (più o meno equivalente a SQL-89) - intermediate SQL - full SQL DDL 4

Potere espressivo di standard e sistemi commerciali un tipico sistema commerciale SQL-1 SQL-89 SQL-2 SQL-3 DDL 5

Domini elementari in SQL-2 a stringhe CHAR (N) VARCHAR (N) BIT (N) VARBIT (N) b numerici esatti NUMERIC (N) DECIMAL (N) INTEGER SMALLINT DDL 6

Altri domini elementari in SQL-2 c numerici approssimati b domini speciali FLOAT(N) N=2, 0.172E04 = 1700 REAL DOUBLE PRECISION DATE YYYYMMDD (es. 1998-03-12) TIME(N) HHMMSS.NNNN (es. 14:05:23.) TIMESTAMP ( DATE+TIME ) INTERVAL ( pura durata ) DDL 7

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) DDL 8

Vincoli di integrità di dominio NOT NULL esclude il valore nullo PRIMARY KEY chiave primaria (implica NOT NULL) UNIQUE chiave secondaria (non implica NOT NULL) CHECK predicato che deve essere soddisfatto DDL 9

Definizione dei domini applicativi CREATE DOMAIN PrezzoQuotidiani AS INTEGER DEFAULT 1500 NOT NULL CREATE DOMAIN OreLezione AS SMALLINT DEFAULT 80 DDL 10

Definizione delle tabelle CREATE TABLE STUDENTE ( MATR CHAR(6) PRIMARY KEY, NOME VARCHAR (30) NOT NULL, 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) ) DDL 11

Definizione delle tabelle (2) CREATE TABLE ESAME ( MATR CHAR(6), COD-CORSO CHAR(6), DATA DATE NOT NULL, VOTO SMALLINT NOT NULL, PRIMARY KEY(MATR,COD-CORSO) ) DDL 12

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 DDL 13

Esempio: studente - esame studente MATR 415 esame 702 MATR 702 DDL 14

Il problema degli orfani studente MATR 415 orfani: tuple che restano prive di padre a causa di cancellazioni e modifiche della tabella padre esame 702 MATR 702 DDL 15

Gestione degli orfani Cosa succede degli esami se si cancellano gli studenti? a CASCADE b SET NULL c SET DEFAULT d NO ACTION (si cancellano anche gli esami) (viene impedita l operazione) Cose succede degli esami se si modifica la matricola nella tabella STUDENTE? a CASCADE (si modifica la FOREIGN KEY b SET NULL anche nei corrispondenti esami) c SET DEFAULT d NO ACTION (viene impedita l operazione) DDL 16

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 ) DDL 17

MATR 415 702 NOME CITTÀ C-DIP Una istanza scorretta esame viola la chiave viola il NULL viola la integrità referenziale MATR 702 702 714 COD- CORSO 1 2 2 2 1 1 DATA 1997-09-07 1998-01-08 1997-08-01 1997-09-07 NULL 1997-09-07 VOTO 30 28 28 20 NULL 28 DDL 18

Una istanza corretta MATR 415 702 NOME CITTÀ C-DIP esame MATR COD- CORSO DATA VOTO 1 1997-09-07 30 2 1998-01-08 28 702 2 1997-09-07 20 DDL 19

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 DDL 20

Definizione delle tabelle CLIENTE e ORDINE CREATE TABLE CLIENTE ( COD-CLI CHAR(6) PRIMARY KEY, INDIRIZZO CHAR(50), P-IVA CHAR(12) UNIQUE ) CREATE TABLE ORDINE ( COD-ORD CHAR(6) PRIMARY KEY, COD-CLI CHAR(6) NOT NULL DEFAULT='999999', DATA DATE, IMPORTO INTEGER, FOREIGN KEY COD-CLI REFERENCES ORDINE ON DELETE SET DEFAULT ON UPDATE SET DEFAULT) DDL 21

Definizione delle tabelle DETTAGLIO e PRODOTTO CREATE TABLE DETTAGLIO ( COD-ORD CHAR(6), COD-CLI CHAR(6), QTA SMALLINT, PRIMARY KEY(COD-ORD,COD-PROD), FOREIGN KEY COD-ORD REFERENCES ORDINE ON DELETE CASCADE ON UPDATE CASCADE, FOREIGN KEY COD-PROD REFERENCES PRODOTTO ON DELETE NO ACTION ON UPDATE NO ACTION) CREATE TABLE PRODOTTO ( COD-PROD CHAR(6) PRIMARY KEY, NOME CHAR(20), PREZZO SMALLINT ) DDL 22

Esercizio:gestione personale esprimere in SQL la dichiarazione dello schema MATR NOME DATA-ASS SALARIO MATR-MGR impiegato 1 Piero 1995-01-01 3 M 2 2 Giorgio 1997-01-01 2,5 M null 3 Giovanni 1996-07-01 2 M 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 DDL 23