Download - Basi di Dati - didawiki.cli.di.unipi.itdidawiki.cli.di.unipi.it/lib/exe/fetch.php/bdd-infuma/bdd.02.rel.1.pdf · 25/02/2004 1 Basi di Dati Sistemi per Basi di Dati Relazionali: Modello

Transcript
Page 1: Basi di Dati - didawiki.cli.di.unipi.itdidawiki.cli.di.unipi.it/lib/exe/fetch.php/bdd-infuma/bdd.02.rel.1.pdf · 25/02/2004 1 Basi di Dati Sistemi per Basi di Dati Relazionali: Modello

25/02/2004

1

Basi di DatiSistemi per Basi di Dati

Relazionali: Modello Logico

Concetti Fondamentali

2

Concetti FondamentaliIntroduzione

Base di dati, tabella, ennupla, attributo, dominio

Valori nulli

Vincoli di chiave, di ennupla, di riferimento

Caratteristiche del modello

Page 2: Basi di Dati - didawiki.cli.di.unipi.itdidawiki.cli.di.unipi.it/lib/exe/fetch.php/bdd-infuma/bdd.02.rel.1.pdf · 25/02/2004 1 Basi di Dati Sistemi per Basi di Dati Relazionali: Modello

25/02/2004

2

3

IntroduzioneModello logico dei DBMS commerciali

Storia:Basato sul “Modello Relazionale”[E. F. Codd, 1970]Centrato sull’indipendenza dei datiDisponibile in DBMS reali dal 1981ANSI/ISO SQL-92

4

AttenzioneL’obiettivo di questa lezione è descrivere le caratteristiche del modello

Non ci occupiamo, per ora:delle tecniche per manipolare i dati>> linguaggiodei metodi per costruire la base di dati (come scegliere le tabelle e valutare la qualità)>> metodologia di progetto

Page 3: Basi di Dati - didawiki.cli.di.unipi.itdidawiki.cli.di.unipi.it/lib/exe/fetch.php/bdd-infuma/bdd.02.rel.1.pdf · 25/02/2004 1 Basi di Dati Sistemi per Basi di Dati Relazionali: Modello

25/02/2004

3

5

IntuizioneBase di dati

insieme di tabelle

Tabellacollezione di ennuple

Ennupla:insieme di coppie (attributo, valore)analogo nei linguaggi di programmazione: “struttura” o “record”

6

Esempio: Studenti, Corsi, EsamiBase di dati universitari

Studentinome, cognome, matricola, data di nascita

Corsicodice, nome del corso, nome del docente

Esami sostenuticorso, studente, voto

Page 4: Basi di Dati - didawiki.cli.di.unipi.itdidawiki.cli.di.unipi.it/lib/exe/fetch.php/bdd-infuma/bdd.02.rel.1.pdf · 25/02/2004 1 Basi di Dati Sistemi per Basi di Dati Relazionali: Modello

25/02/2004

4

7

Studenti, Corsi, EsamiStudenti

nome: stringacognome: stringamatricola: interodata di nascita: data

Corsicodice: stringanome: stringanome del docente: stringa

Esami sostenuticorso: “riferimento” ad un corsostudente: “riferimento” ad uno studentevoto: interolode: sì/no

8

matricola cognome nome dataNascita6554 Rossi Mario 05/12/19788765 Neri Paolo 03/11/1976

3456 Rossi Maria 01/02/19789283 Verdi Luisa 12/11/1979

Studenti

Studenti

TABLE Studenti(matricola integer,cognome char(20),nome char(20),dataNascita date);

ennupla attributo valore

schema(esempio disintassi)

dominio(tipo)

tabella(istanza)

Page 5: Basi di Dati - didawiki.cli.di.unipi.itdidawiki.cli.di.unipi.it/lib/exe/fetch.php/bdd-infuma/bdd.02.rel.1.pdf · 25/02/2004 1 Basi di Dati Sistemi per Basi di Dati Relazionali: Modello

25/02/2004

5

9

Corsi

codice titolo docentea01 Analisi Pincoc02 Chimica Brunic04 Chimica Verdi

Corsi

TABLE Corsi (codice char(3),titolo char(50),docente char(20));

10

Esami

TABLE Esami (matricola integer,voto integer,corso char(3),lode bool);

matricola voto corso3456 30 c043456 24 c029283 28 a016554 26 a01

lode1000

Esami

matricola di uno studente

codicedi un corso

Page 6: Basi di Dati - didawiki.cli.di.unipi.itdidawiki.cli.di.unipi.it/lib/exe/fetch.php/bdd-infuma/bdd.02.rel.1.pdf · 25/02/2004 1 Basi di Dati Sistemi per Basi di Dati Relazionali: Modello

25/02/2004

6

11

matricola cognome nome dataNascita6554 Rossi Mario 05/12/19788765 Neri Paolo 03/11/1976

3456 Rossi Maria 01/02/19789283 Verdi Luisa 12/11/1979

Studenti

codice titolo docentea01 Analisi Pincoc02 Chimica Brunic04 Chimica Verdi

Corsi

matricola voto corso3456 30 c043456 24 c029283 28 a016554 26 a01

lode1000

Esami

Base di Dati

12

SchemadellaBase di Dati

TABLE Studenti(matricola integer,cognome char(20),nome char(20),dataNascita date);

TABLE Corsi (codice char(3),titolo char(50),docente char(20));

TABLE Esami (matricola integer,voto integer,corso char(3),lode bool);

Page 7: Basi di Dati - didawiki.cli.di.unipi.itdidawiki.cli.di.unipi.it/lib/exe/fetch.php/bdd-infuma/bdd.02.rel.1.pdf · 25/02/2004 1 Basi di Dati Sistemi per Basi di Dati Relazionali: Modello

25/02/2004

7

13

Valori Nulli

Corsi

Studenti matricola cognome nome dataNascita6554 Rossi Mario 05/12/19788765 Neri Paolo 03/11/1976

3456 Rossi Maria 01/02/19789283 Verdi Luisa 12/11/1979

8999 Pinco Pallino ??

codice titolo docentea01 Analisi Pincoc02 Chimica Brunic04 Chimica Verdib05 Basi Dati ??

valore nullo

null

null

14

Vincoli sui Dati

Regole della realtà di interesse

Unicità di codici di corso e matricole“identificatori”

Voti degli studentida 18 a 30lode solo se il voto è 30

Correttezza dei riferimenti

Page 8: Basi di Dati - didawiki.cli.di.unipi.itdidawiki.cli.di.unipi.it/lib/exe/fetch.php/bdd-infuma/bdd.02.rel.1.pdf · 25/02/2004 1 Basi di Dati Sistemi per Basi di Dati Relazionali: Modello

25/02/2004

8

15

Una Base di Dati Scorretta

matricola6554

7878778787

cognomeRossiNeri

Bianchi

nomeMarioPieroLuca

Studenti

matricola voto lode corso32 0 a016554

78787 30 1 c026554 27 1 d031122 24 0 c04

Esami

unicità della matricola

voti scorretti

riferimentoscorretto

16

Vincoli di Integrità

Regole imposte sui valori della base di dati

Vincoli sulle singole tabellevincoli di chiavevincoli di ennupla

Vincoli tra tabelle diversevincoli di riferimento o di integrità referenziale

Page 9: Basi di Dati - didawiki.cli.di.unipi.itdidawiki.cli.di.unipi.it/lib/exe/fetch.php/bdd-infuma/bdd.02.rel.1.pdf · 25/02/2004 1 Basi di Dati Sistemi per Basi di Dati Relazionali: Modello

25/02/2004

9

17

Vincoli di Integrità

Vincoli di chiavechiave: identificatore per le ennuplees: “matricola” è una chiave per “Studenti”

Vincoli di ennuplapredicati sui valori delle ennuplees: (voto>=18 and voto<=30)

Vincoli di Riferimentoassenza di riferimenti inesistenties: esistono esami solo per gli studenti della bd

18

Vincoli di Chiave

matricola cognome nome dataNascita6554 Rossi Mario 05/12/19788765 Neri Paolo 03/11/1976

3456 Rossi Maria 01/02/19789283 Verdi Luisa 12/11/1979

Studenti

TABLE Studenti(matricola integer,cognome char(20),nome char(20),dataNascita date,UNIQUE(matricola));

Page 10: Basi di Dati - didawiki.cli.di.unipi.itdidawiki.cli.di.unipi.it/lib/exe/fetch.php/bdd-infuma/bdd.02.rel.1.pdf · 25/02/2004 1 Basi di Dati Sistemi per Basi di Dati Relazionali: Modello

25/02/2004

10

19

Vincoli di Ennupla

TABLE Esami (matricola integer,voto integer,corso char(3),lode bool,CHECK (voto>=18 and voto<=30),CHECK (not lode or voto=30));

matricola voto corso3456 30 c043456 24 c029283 28 a016554 26 a01

lode1000

Esami

20

Vincoli di Riferimento

TABLE Esami (matricola integercorso char(3)voto integer,lode bool,CHECK (voto>=18 and voto<=30),CHECK (not lode or voto=30),FOREIGN KEY(matricola)

REFERENCES Studenti(matricola),FOREIGN KEY(corso)

REFERENCES Corsi(codice));

matricola voto corso3456 30 c043456 24 c029283 28 a016554 26 a01

lode1000

Esami

Page 11: Basi di Dati - didawiki.cli.di.unipi.itdidawiki.cli.di.unipi.it/lib/exe/fetch.php/bdd-infuma/bdd.02.rel.1.pdf · 25/02/2004 1 Basi di Dati Sistemi per Basi di Dati Relazionali: Modello

25/02/2004

11

21

Schemacon

vincoli di integrità

TABLE Corsi (codice char(3),titolo char(50),docente char(20),UNIQUE(codice));

TABLE Studenti(matricola integer,cognome char(20),nome char(20),dataNascita date,UNIQUE(matricola));

TABLE Esami (matricola integer,corso char(3),voto integer,lode bool,CHECK (voto>=18 and voto<=30),CHECK (not lode or voto=30),FOREIGN KEY(matricola)

REFERENCES studenti(matricola),FOREIGN KEY(corso)

REFERENCES corsi(codice),UNIQUE (matricola, corso));

22

Caratteristiche del Modello

Legami tra i dati basati sui valoriassenza di puntatori

I valori devono essere semplicivalori “atomici” : numeri, caratteri, stringhe, booleani, date ecc.non sono consentite “nidificazioni” (base di dati in “I forma normale”)differenza con altri modelli (es: strutture)

Page 12: Basi di Dati - didawiki.cli.di.unipi.itdidawiki.cli.di.unipi.it/lib/exe/fetch.php/bdd-infuma/bdd.02.rel.1.pdf · 25/02/2004 1 Basi di Dati Sistemi per Basi di Dati Relazionali: Modello

25/02/2004

12

23

Dal SudicioVia Buia, Pisa

Ricevuta Fiscale1235 del 12/10/2001

3 Coperti 3,00

2 Bistecche 18,003 Primi 12,002 Antipasti 6,20

Totale 39,20

Dal SudicioVia Buia, Pisa

Ricevuta Fiscale1240 del 13/10/2001

2 Coperti 2,00

2 Orate 20,002 Primi 8,002 Antipasti 7,00

2 Caffè 2,00

Totale 39,00

Un Esempio di Informazione Nidificata

24

1235 39,2012/10/2000numero totaledata

1240 39,0013/10/2000

Ricevute

3 Coperti 3,00

2 Bistecche 18,003 Primi 12,002 Antipasti 6,20

Dettaglio qta portata prezzo1235

numero

1240

123512351235

2 Coperti 2,00… … … …

Una Possibile Rappresentazione

Page 13: Basi di Dati - didawiki.cli.di.unipi.itdidawiki.cli.di.unipi.it/lib/exe/fetch.php/bdd-infuma/bdd.02.rel.1.pdf · 25/02/2004 1 Basi di Dati Sistemi per Basi di Dati Relazionali: Modello

25/02/2004

13

25

Concetti FondamentaliIntroduzione

Base di dati, tabella, ennupla, attributo, dominio

Valori nulli

Vincoli di chiave, di ennupla, di riferimento

Caratteristiche del modello

26

matricola cognome nome dataNascita6554 Rossi Mario 05/12/19788765 Neri Paolo 03/11/1976

3456 Rossi Maria 01/02/19789283 Verdi Luisa 12/11/1979

Studenti

codice titolo docentea01 Analisi Pincoc02 Chimica Brunic04 Chimica Verdi

Corsi

matricola voto corso3456 30 c043456 24 c029283 28 a016554 26 a01

lode1000

Esami

Base di Dati