IL MODELLO RELAZIONALE (CAP 2) R. Basili, aa. 2011/2012

Documenti analoghi
IL MODELLO RELAZIONALE (CAPITOLO 2)

IL MODELLO RELAZIONALE

IL MODELLO RELAZIONALE

Il Modello Relazionale

LABORATORIO di INFORMATICA

Lezione 3. Il modello relazionale

Laboratorio di Basi di Dati

Laboratorio di Basi di Dati e Multimedia

SQL: DDL, VI, Aggiornamenti e Viste

Lezione 4. Dallo schema ER al relazionale

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

Tipi numerici esatti Valori interi o con parte decimale di lunghezza prefissata

Corso di Basi di Dati

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

LA PROGETTAZIONE LOGICA

Informatica documentale Laurea in Scienze della Comunicazione Prova scritta del 25 giugno Cognome e nome: Matricola:

Progettazione concettuale usando il modello Entità-Relazione (ER)

Sistemi di Elaborazione delle Informazioni

SQL: Definizione e Manipolazione di Relazioni. Capitolo 2

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

IL MODELLO CONCETTUALE ENITÀ-RELAZIONE (ER) (CAPITOLO 5 DELLA VERSIONE ITALIANA)

Il Modello Concettuale Enità-Relazione (ER)

Stringhe di caratteri

Vincoli. Chiavi esterne Vincoli locali e globali Triggers Leggere Cap 2 Riguzzi et al. Sistemi Informativi

Corso integrato di Sistemi di Elaborazione. Modulo I. Prof. Crescenzio Gallo.

PRODOTTO CARTESIANO Caso Generale

Il linguaggio SQL. Il linguaggio SQL. Il linguaggio SQL. Il linguaggio SQL. Il linguaggio SQL: fondamenti. Il linguaggio SQL

SQL. SQL come Data Manipulation Language - Inserimento, cancellazione e aggiornamento di righe

Corso di Basi di Dati A.A. 2015/2016

Aspetti avanzati nella definizione degli schemi DDL2 1

Modello relazionale: Concetti Base. T. Catarci, M. Scannapieco, Corso di Basi di Dati, A.A. 2008/2009, Sapienza Università di Roma

Creazione di una tabella Modifica della struttura di una tabella Cancellazione di una tabella Dizionario dei dati Integrità dei dati

Elena Baralis 2007 Politecnico di Torino 1

Dichiarazione degli schemi in SQL DDL 1

Il Modello Concettuale Enità-Relazione (ER)

Modello relazionale e algebra relazionale

Linguaggio SQL: fondamenti D B M G

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

D B M G 2. Linguaggio SQL: fondamenti. Istruzioni di aggiornamento. Introduzione Istruzione INSERT Istruzione DELETE Istruzione UPDATE

Modello relazionale e algebra relazionale

Laboratorio di Basi di Dati

Corso sul linguaggio SQL

D B M G. Sistemi informativi. Modello relazionale e algebra relazionale. Modello relazionale. Algebra relazionale

SQL Matteo Magnani, Danilo Montesi Università di Bologna SQL. Linguaggio di interrogazione per basi di dati relazionali

DataBase Management System - DBMS

Le Basi di Dati per i Beni culturali

Elena Baralis 2007 Politecnico di Torino 1

Elena Baralis 2007 Politecnico di Torino 1

SQL. Dott.ssa Elisa Quintarelli

Elena Baralis 2007 Politecnico di Torino 1

Elena Baralis 2013 Politecnico di Torino 1

Corso di. Basi di Dati I. 7. Esercitazioni in SQL: Definizione e manipolazione dei dati

Laboratorio di Basi di Dati Esercizio 8.4/9.1

Progettazione concettuale usando il modello Entità-Relazione (ER) II parte

Il linguaggio SQL costrutti DDL.

Elena baralis 2007 Politecnico di Torino 1

IL MODELLO RELAZIONALE

Corso di. Basi di Dati I. 7. Esercitazioni in SQL: Definizione e manipolazione dei dati

Modello logico dei dati utilizzato nell ambito delle basi di dati, introdotto da Codd nel 1970.

Interrogazioni nidificate

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

Modello Relazionale. Concetti e definizioni

Appunti dalle lezioni. Sistemi informativi e basi di dati. Il modello relazionale. SQL come DCL Utilizzo di un DBMS Reale.

Modello Relazionale. Esempio (Relazione) A x B. Introduzione. Relazione: definizione. I fattori del successo. Relazione

Gestione delle informazioni. Tot. h 10. Base di Dati. Tot. h 56. Grafica in C# - Laboratorio- Tot. h 40. Dipartimento Informatica Materia Informatica

Manuale SQL. Manuale SQL - 1 -

SQL quick reference. piccolo manuale di riferimento dei principali comandi SQL (prof. Claudio Maccherani, Perugia, 2013)

Interpretazione delle query nidificate

Elena baralis 2007 Politecnico di Torino 1

Il modello Relazionale.

IL MODELLO RELAZIONALE. Patrizio Dazzi a.a

DDL (Data Definition Language) schemi DML (Data Manipulation Language) DQL (Data Query Language) DCL (Data Control Language)

Elena baralis 2007 Politecnico di Torino 1

Linguaggio SQL: fondamenti

Viste come strumenti di programmazione

Basi di Dati. Dettagli e Approfondimenti

Laboratorio di Basi di Dati

Vincoli, procedure e regole attive in SQL. SQL: vincoli, trigger 1

Principi di Progettazione del Software a.a Il linguaggio SQL. Prof. Luca Mainetti Università del Salento

Basi di Dati 1 Prof. L. Tanca e F. A. Schreiber APPELLO DEL 1 OTTOBRE 2015 Tempo: 2h30m

Principi di Progettazione del Software a.a Il linguaggio SQL. Linguaggi per DBMS

V. Moriggia Modelli di Base Dati. Modelli di Base Dati. a.a. 2001/

ESERCITAZIONE: Fornitore-Fornisce-Articolo

Interrogazioni nidificate

Il linguaggio SQL. TUTORATO DIFONDAMENTI DIINFORMATICA

Appunti su SQL. Query Language. Comando Select

Corso di Laurea in Ingegneria Informatica Fondamenti di Informatica II Modulo Basi di dati a.a

SQL. Università degli Studi di Salerno. Corso di Laurea in Scienze della Comunicazione Informatica generale (matr. Dispari) Docente: Angela Peduto

Corso di Informatica Linguaggio SQL prima parte

Basi di Dati - Informatica umanistica Esercitazione (Lab)

Basi di Dati. Dettagli e Approfondimenti SQL-92 25/02/2004. Dettagli e Approfondimenti. DDL: Tabelle. DML: Aggiornamenti.

Tabelle esempio: Impiegato/Dipartimento

Esercizi di Informatica Documentale

Basi di Dati SQL-92. Dettagli e Approfondimenti

Basi di Dati SQL-92. Dettagli e Approfondimenti

Corso di Basi di Dati

PROGETTAZIONE DI DATABASE Linguaggio SQL

Il linguaggio SQL: DDL di base

Transcript:

1 IL MODELLO RELAZIONALE (CAP 2) R. Basili, aa. 2011/2012

IL MODELLO RELAZIONALE (CAPITOLO 2) Cood 1970 Indipendenza dei dati Distinzione nella descrizione dei dati tra livello fisico e livello logico Vendors IBM,Informix,Microsoft,Oracle,Sybase 2

Progettazione Dominio Applicativo PROGETTAZIONE CONCETTUALE PROGETTAZIONE LOGICA VALUTAZIONE PRESTAZIONI SCHEMA CONCETTUALE(E-R) SCHEMA LOGICO (SQL DDL) DBMS (SQL DDL+DML) Basi di dati Voi siete qui DB 3

DATABASE RELAZIONALE : DEFINIZIONI Database Relazionale: Un insieme di relazioni Relazione: insieme di righe o tuple distinte Istanza: una TABELLA con righe e colonne Cardinalità = numero di righe Grado = numero di campi (colonne) Schema: specifica il nome della relazione, il nome ed il tipo di ogni colonna 4

ESEMPIO: RELAZIONE STUDENTI Istanza sid nome login età gpa 0012 Rossi ro@ec 18 3.4 0072 Bianchi bi@ec 19 3.2 0033 Bianchi bi@tt 18 3.8 cardinalita 3 grado 5 Schema Studenti(sid:string, nome:string, login:string, età:integer, gpa:real) Non e definito alcun ordinamento tra le n-uple/righe Le n-uple/righe di una relazione sono distinte Due n-ple uguali (in tutti i valori) sono LA STESSA n-pla Ciascuna n-upla e ordinata al suo interno; all i-esimo valore corrisponde l i-esimo dominio definito nello schema 5 (Constraint/Vincolo di Dominio)

LINGUAGGI DI INTERROGAZIONE Uno dei vantaggi principali del modello relazionale e che esso supporta un intuitivo metodo di interrogazione. Le interrogazioni possono essere scritte intuitivamente e successivamente analizzate dal DBMS Due tipologie di linguaggi di interrogazione: DML Data Manipulation Language DDL Data Definition Language 6 }

IL LINGUAGGIO DI INTERROGAZIONE SQL sid nome login eta gpa 0012 Rossi ro@ec 18 3.4 SELECT * FROM Studenti S WHERE S.eta =18 0072 Bianchi bi@ec 19 3.2 0033 Bianchi bi@tt 18 3.8 sid nome login eta gpa 0012 Rossi ro@ec 18 3.4 0033 Bianchi bi@tt 18 3.8 Basi di dati Estrae dalla tabella S tutti gli studenti diciottenni! 7

IL LINGUAGGIO DI INTERROGAZIONE SQL sid nome login eta gpa 0012 Rossi ro@ec 18 3.4 0072 Bianchi bi@ec 19 3.2 0033 Bianchi bi@tt 18 3.8 SELECT S.nome,P.cid FROM Studenti S, pianods P WHERE S.sid=P.sid AND P.grade= A sid cid grade gpa 0012 Mate1 C 3.4 0012 Bd1 A 3.2 0033 Bd1 A 3.8 S.nome P.cid Rossi Bd1 Bianchi Bd1 Basi di dati Vincolo di integrità referenziale 8

CREAZIONE DI TABELLE IN SQL Creare la relazione Studenti Creare la tabella PianoDS contenente informazioni riguardanti i corsi che ogni studente segue CREATE TABLE Studenti (sid: CHAR(20), nome: CHAR(10), login: CHAR(10), eta : INTEGER, gpa:real) CREATE TABLE PianoDS (sid: CHAR(20), cid:char(20), grade: CHAR(2)) 9

CANCELLAZIONE E MODIFICA DI RELAZIONI Cancellare la relazione Studenti. L informazione relativa allo schema ed alle nuple viene cancellato DELETE TABLE Studenti Modificare lo schema della relazione Studenti aggiungendo il campo primoanno. (Ogni nupla dell istanza viene estesa con un valore null in corrispondenza del nuovo campo) ALTER TABLE Studenti ADD COLUMN primoanno 10

INSERIMENTO E CANCELLAZIONE DI TUPLE Inserire una tupla nella tabella Studenti. (ATTENZIONE: Vincolo di Dominio) Cancellare tutte le tuple che soddisfano una certa condizione INSERT INTO TABLE Studenti (sid,nome,login,eta,gpa) VALUES ( 566, Verdi, ve@ee,18,3.2) DELETE FROM Studenti S WHERE S.nome= Verdi 11

VINCOLI DI INTEGRITÀ (ICS) Vincolo di Integrità Condizione che deve essere soddisfatta da ogni istanza del database Il Vincolo di Integrità viene: Definito in fase di progettazione Verificato quando la relazione viene modificata Una istanza di una relazione e legale se soddisfa tutti i vincoli di integrità Il DBMS scarta le operazioni che non rispettano i vincoli di integrità 12

VINCOLO DI CHIAVE Un insieme K di campi di una relazione r e : Superchiave di r se K identifica in maniera univoca una tupla Esempio: K=(sid e name) in Studenti Chiave per una relazione r se K e superchiave minimale. Non esiste un altra superchiave K di r che sia contenuta in K come sottoinsieme proprio Esempio: K=(sid) in Studenti Chiave Primaria la chiave scelta tra più chiavi candidate 13

SQL: VINCOLO DI CHIAVE CREATE TABLE Studenti (sid: CHAR(20), nome: CHAR(10), login: CHAR(10), VINCOLO DI CHIAVE età INTEGER, gpa: REAL UNIQUE (nome,età), CONSTRAINT Matricola PRIMARY KEY (sid)) VINCOLO di CHIAVE PRIMARIA 14

VINCOLO DI INTEGRITÀ REFERENZIALE (FOREIGN KEY CONSTRAINTS) Foreign Key insieme di campi in una relazione che fanno riferimento a campi di un altra relazione. Un Vincolo di integrità referenziale fra un insieme di attributi X di una relazione R1 ed un altra relazione R2 è soddisfatto se i valori su X di ciascuna tupla dell istanza di R1 compaiono come valori della chiave (primaria) dell istanza di R2. 15

SQL: FOREIGN KEY CREATE TABLE PianoDS (sid: CHAR(20),cid: CHAR(20), grade CHAR(2), PRIMARY KEY (sid,cid), FOREIGN KEY(sid) REFERENCES Studenti) S sid cid grade 0012 Mate1 C 0012 Bd1 A 0033 Bd1 B sid nome login eta gpa 0012 Rossi ro@ec 18 3.4 0072 Bianchi bi@ec 19 3.2 0033 Bianchi bi@tt 18 3.8 Basi di dati Cosa accade se si tenta di inserire in PianoDS una tupla con 16 sid non presente nella tabella Studenti? E se viene cancellata una tupla di S utilizzata da PianoDS?

SQL: INTEGRITY CONSTRAINT Su DELETE ed UPDATE 4 operazioni: CASCADE (delete tuple e tutte quelle che fanno riferimento ad essa) NO ACTION (delete/update rifiutati) SET NULL/DEFAULT CREATE TABLE Iscrizioni (studid: CHAR(20), cid:char(20), grade: CHAR(2), PRIMARY KEY(studid,cid), FOREIGNB KEY (studid) REFERENCES Studenti, ON DELETE CASCADE, ON UPDATE NO ACTION 17

VINCOLI DI INTEGRITÀ I Vincoli di integrità (ICs) aiutano ad imporre una interpretazione ai dati che rispetta la semantica (il significato) delle informazione nel dominio della applicazione E possibile dire se una certa istanza verifica (viola) tutti gli ICs ma la verita di un ICs non dipende mai da UNA SOLA istanza: Un IC deve valere per tutte le istanze possibili (la presente e le future!) 18

DISEGNO DELLO SCHEMA LOGICO- DA SCHEMA E-R A RELAZIONALE ssn name lot since did dname budget Employees Manages Departments CREATE TABLE Employees (ssn CHAR(11), name CHAR(20), lot INTEGER, PRIMARY KEY (ssn) ) CREATE CREATE TABLE Manages TABLE Departments (ssn CHAR(11), (did INTEGER, did INTEGER, dname CHAR(20), since DATE, budget REAL, PRIMARY PRIMARY KEY KEY (ssn, (did) did), FOREIGN ) KEY (snn) REFERENCES Employees, FOREIGN KEY (did) REFERENCES Departments) 19

VINCOLO DI CHIAVE (REMIND) 1-a-1 1-a-Molti Molti-a-1 Molti-a-molti Mtr nome cf Dal rid dnome budget VINCOLO DI CHIAVE: Ogni Reparto può essere gestito al più da un dipendente. Dipendenti Dirige Reparti 20

ESEMPI DI VINCOLI DI CHIAVE Molti a uno: GiocatoreSerie_A gioca_per - Squadra Album contiene TitleTrack Uno-a-Molti Scrittore scrive libro Molti-a-Molti Studente segue Corso Compilation contiene - Canzone 21

DA SCHEMA E-R CON VINCOLO DI CHIAVE SCHEMA RELAZIONALE ssn name lot since did dname budget Employees Manages Departments CREATE TABLE Employees (ssn CHAR(11), name CHAR(20), lot INTEGER, PRIMARY KEY (ssn) ) Basi di dati CREATE TABLE Dep_Mgr ( did INTEGER, dname CHAR(20), budget REAL, ssn CHAR(11), since DATE, PRIMARY KEY (did), 22 FOREIGN KEY (snn) REFERENCES Employees)

DA SCHEMA E-R CON VINCOLO DI CHIAVE SCHEMA RELAZIONALE ssn name lot since did dname budget Employees Manages Departments Basi di dati La tabella Dep_Mgr rappresenta sia l entita Deps che la relazione Manages con (l unico) manager rappresentato tramite l attributo ssn CREATE TABLE Dep_Mgr ( did INTEGER, dname CHAR(20), budget REAL, ssn CHAR(11), since DATE, PRIMARY KEY (did), 23 FOREIGN KEY (snn) REFERENCES Employees)

DA SCHEMA E-R CON VINCOLO DI PARTECIPAZIONE ssn name lot since Employees Manages Departments SCHEMA RELAZIONALE dname did budget CREATE TABLE Employees (ssn CHAR(11), name CHAR(20), lot INTEGER, PRIMARY KEY (ssn) ) Basi di dati CREATE TABLE Dep_Mgr (did INTEGER, dname CHAR(20), budget REAL, ssn CHAR(11) NOT NULL, since DATE, PRIMARY KEY (did), FOREIGN KEY (snn) 24 REFERENCES Employees ON DELETE NO ACTION)

DA SCHEMA E-R CON VINCOLO DI PARTECIPAZIONE ssn name lot since Employees Manages Departments SCHEMA RELAZIONALE dname did budget Basi di dati Il vincolo NOT NULL impone che nessuna tupla di Dep_Mgr possa escludere il manager sottotinteso. Questo (insieme al vincolo di foreign key) realizza la semantica di partecipazione totale. CREATE TABLE Dep_Mgr (did INTEGER, dname CHAR(20), budget REAL, ssn CHAR(11) NOT NULL, since DATE, PRIMARY KEY (did), FOREIGN KEY (snn) 25 REFERENCES Employees ON DELETE NO ACTION)

DA SCHEMA E-R CON WEAK ENTITY SET SCHEMA RELAZIONALE name cost ssn lot pname A age Impiegato Polizza Familiari CREATE TABLE Impiegato (ssn CHAR(11), name CHAR(20), lot INTEGER, PRIMARY KEY (ssn) ) Basi di dati CREATE TABLE Polizza_Familiare (pname CHAR(20), age INTEGER, cost REAL, ssn CHAR(11) NOT NULL, PRIMARY KEY (pname,ssn), FOREIGN KEY (snn) 26 REFERENCES Employees ON DELETE CASCADE)

DA SCHEMA E-R CON GERARCHIA ISA RELAZIONALE A SCHEMA Tre approcci: Mantengo le tre entità distinte Collasso verso l alto mantenendo solo l entita piu generale Collasso verso il basso mantenendo SOLO le entita specifiche (non applicabile ad ISA che ricoprono solo parzialmente la entita piu generale) hourly_wages ssn hours_w name Employees ISA lot Contr_id Hourly_Emps Contract_Emps 27

DA SCHEMA E-R CON GERARCHIA ISA RELAZIONALE A SCHEMA Tre approcci (1): Mantengo le tre entità distinte Tre tabelle Stessa chiave primaria Foreign key dai figli al padre Utile quando: Basi di dati Molti accessi agli attributi condivisi (tabella padre) Molti attributi specifici (i data records delle tabelle figlie hanno una taglia significativa) hourly_wages ssn hours_w Hourly_Emps name Employees ISA lot Contr_id Contract_Emps 28

DA SCHEMA E-R CON GERARCHIA ISA RELAZIONALE Tre approcci (2): Collasso verso l alto mantenendo solo l entita piu generale Una tabella Tutti gli attributi hourly_wages ssn name Employees A SCHEMA lot Utile Nessuna preferenza nell accesso all una o all altra entita specifica Pochi attributi distinguono le due entità figlie => basta un solo data record poiché non c e molta ridondanza hours_w Contr_id 29

DA SCHEMA E-R CON GERARCHIA ISA RELAZIONALE A SCHEMA Tre approcci (3): Collasso verso il basso mantenendo SOLO le entita specifiche Due tabelle distinte con chiavi primarie indipendenti Si ripetono gli attributi condivisi ssn hours_w name ssn lot name lot Contr_id Basi di dati Utile se: Tipi di accesso alle due entita specifiche completamente differenti e Pochi attributi condivisi e La ISA non ricopre parzialmente la entita piu generale hourly_wages Hourly_Emps Contract_Emps 30

LE VISTE (1) Una Vista è una relazione definita non in termini di tuple, quindi non esplicitamente registrata in un database, ma calcolata da una definizione (di DDL). CREATE VIEW StudentiInCorso (nome, corso) AS SELECT S.nome, P.corso FROM Studenti S, PianoDS P WHERE S.sid=P.sid AND S.age<21 31

LE VISTE (2) Le viste rappresentano dei dizionari alternativi per le applicazioni Alle relazioni dello schema logico (materializzate nelle tabelle di un DB) vengono sostituite nuove relazioni che virtualizzano le informazioni sottostanti: Ne consentono un uso selettivo, in modo da separare informazioni distinte delle stesse entità per diverse applicazioni Ne nascondono dettagli irrilevanti Ne nascondono dettagli critici per aumentare la sicurezza Ne migliorano l astrazione, poiche possono esprimere relazioni piu ricche (nell esempio StudentiInCorso e una informazione piu specifica di Studenti e di Piano di Studio) 32

LE VISTE (3) Alle viste possono essere assegnati dei diritti d accesso (GRANTS) selettivi per le diverse applicazioni Per rimuovere una vista: DROP VIEW <nome_view> 33

LE VISTE: VANTAGGI Indipendenza dei dati Una vista presenta le informazioni di interesse per l applicazione, viene interrogata come le tabelle base. Alle variazioni irrilevanti delle tabelle debbono essere solo ridefinite le viste ma non le applicazioni che ne fanno uso Sicurezza Nasconde i dati delle altre relazioni dello schema Posso sfruttare le grant di una vista 34