Esercitazione 3. Vincoli di integrità. Approccio Procedurale

Documenti analoghi
Corso di Laurea in Informatica Basi di Dati a.a

Basi di Dati Relazionali

Progettazione logica D O C E N T E P R O F. A L B E R T O B E L U S S I. Anno accademico 2012/2013

Basi di Dati. Corso di Laurea in Informatica Corso B A.A. 2015/16. Dr. Claudia d'amato. Dipartimento di Informatica, Università degli Studi Bari

DOCENTE PROF. ALBERTO BELUSSI. Anno accademico 2010/11

Informatica e Tecnologie per la Produzione del Software Crediti formativi 9

Università degli Studi di Enna Kore Facoltà di Ingegneria ed Architettura

Informatica. per laurea triennale di area non informatica. 1 Le basi di dati

Scopo Laboratorio di Informatica

Obiettivi della progettazione logica. Fasi della progettazione logica. Ristrutturazione dello schema ER. Parte VI. Progettazione logica

Basi di dati (database)

DataBase Management System - DBMS

Università degli Studi di Enna Kore Facoltà di Ingegneria ed Architettura

BASE DI DATI. Esercizio: FACEBOOK Progettazione concettuale Progettazione logica. Informatica Umanistica Università di Pisa

Università degli Studi di Enna Kore Facoltà di Ingegneria ed Architettura

Scopo. Informatica. Sistema informativo. Sistema informatico

La progettazione logica

Il modello relazionale. A. Ferrari

Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw -Hill, Progettazione logica. Dati di ingresso e uscita

Prefazione. Parte Prima Basi di dati relazionali: modello e linguaggi 15

Corso di Laurea in Informatica Basi di Dati a.a

Esercizio 6. Progettare la seguente base di dati: Studio Fotografico. L'archivio delle attività di uno studio fotografico.

Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, Obiettivo della progettazione logica. Dati di ingresso e uscita

Laboratorio di Basi di Dati

Syllabus A042 Insegnamenti disciplinari

E. Giunchiglia Basi di dati 1 (trasparenze basate su Atzeni,, Ceri, Paraboschi, Torlone: : Basi di dati, Capitolo 8) Progettazione logica

Basi di Dati Ingegneria Informatica e delle Telecomunicazioni

Le basi di dati. Lez. 2: Progettazione di un DB. Laboratorio di informatica gestionale

Basi di dati e Relazioni

Scopo Informatica. Sistema informativo. Sistema informatico. Gestione dell informazione per le lauree triennali

A. Ferrari modello relazionale

Laboratorio di Basi di Dati

Giselda De Vita Database

Sommario. Introduzione... 13

Basi di dati Modelli e linguaggi di interrogazione

Corso di Informatica

Basi di Dati CREAZIONE E POPOLAMENTO DI UNA BASE DI DATI

Basi di dati (Sistemi Informativi)

La Progettazione Logica

Ministero della Pubblica Istruzione Ufficio Scolastico Regionale per la Sicilia Direzione Generale

Microsoft Access. Nozioni di base. Contatti: Dott.ssa Silvia Bonfanti

Normalizzazione Progettazione di basi di dati Normalizzazione Normalizzazione Normalizzazione e modello ER Esempio Esame Superato

Progettazione di basi di dati D B M G

LA PROGETTAZIONE LOGICA

Basi di dati Soluzione per l appello del

PRINCIPI DI INFORMATICA CORSO DI LAUREA IN SCIENZE BIOLOGICHE

Progettazione Logica. T. Catarci, M. Scannapieco, Corso di Basi di Dati, A.A. 2008/2009, Sapienza Università di Roma

REGISTRO DELLE LEZIONI

Progettazione di basi di dati

SCHEMA E/R DI UNA UNIVERSITA'

Corso di Basi di Dati

Atzeni, Ceri, Paraboschi, Torlone Basi di dati

Progettazione di basi di dati D B M G

D B M G D B M G 2. Progettazione di basi di dati. Normalizzazione

Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, Progettazione logica. Dati di ingresso e uscita

Unità 3. Modello Relazionale

REGISTRO DELLE LEZIONI

MODULO Il sistema azienda. Sistema Informativo e Informatico Requisiti dei dati

Informatica per le Scienze Umane. Introduzione al corso: programma dettagliato

Il modello Relazionale.

LA PROGETTAZIONE LOGICA. Prima parte

Database. Cos è un database? Intro Tipi di entità Mapping ER/EER à Relazionale

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

Progettazione logica. Requisiti della base di dati. Schema concettuale. Schema logico. Schema fisico. Obiettivo della progettazione logica

Basi di dati e Relazioni

ITI M. FARADAY. Programmazione a. s

Basi di dati. Progettazione logica

Progettazione logica

PROGRAMMAZIONE DIDATTICA DI DIPARTIMENTO A.S. 2017/2018

Progettazione logica relazionale (1/2)

IL MODELLO RELAZIONALE

Basi di Dati - III. La costruzione di una base di dati. Progettazione concettuale di schemi. Esercizio: Segreteria studenti

IL MODELLO RELAZIONALE. Patrizio Dazzi a.a

Prova Scritta di Basi di Dati

Elena Baralis 2007 Politecnico di Torino 1

Traduzione dal modello E/R al modello relazionale

Informatica per le Scienze Umane. Introduzione al corso: programma

Interrogare una base di dati: algebra relazionale e SQL. Savino Castagnozzi Giorgio Macauda Michele Meomartino Salvatore Picerno Massimiliano Sartor

Basi di dati McGraw-Hill

Basi di Dati. Progettazione Logica

Elena baralis 2007 Politecnico di Torino 1

Basi di Dati. Applicazioni web in PHP per l interrogazione di basi di dati. Esercitazione n. 5

Requisiti della base di dati. Schema concettuale

Basi di dati Appello del Soluzione del compito A

Informatica. Dipartimento di Economia. Ing. Cristiano Gregnanin. 20 ottobre Corso di laurea in Economia

Fondamenti di Teoria delle Basi di Dati

Corso di INFORMATICA AZIENDALE (4 CFU)

BASI DI DATI: Dal problema reale al modello concettuale. a cura del Prof. Claudio Traini

Modello relazionale e algebra relazionale

Corso di Progettazione del Software

Prima di iniziare. Diamo qualche definizione :

Microsoft Access. Microsoft Access. Maurizio Rebaudengo, Paolo Garza 1. Microsoft Access. Creazione base di dati. Apertura di una base dati

Basi di dati. Corso di Laurea in Ingegneria Informatica Canale di Ingegneria delle Reti e dei Sistemi Informatici - Polo di Rieti

Esercizi di SQL Matteo Magnani, Danilo Montesi Università di Bologna. Esercizi di SQL

La progettazione concettuale

Il modello Entità-Relazioni (entity-relationship)

Transcript:

Esercitazione 3 Vincoli di integrità Approccio Procedurale

Dalla progettazione concettuale alla realizzazione del database su MySQL Progettazione concettuale Requisiti Progettazione logica Schema concettuale Schema logico Progettazione fisica Schema fisico 2

Il Dominio Si chiede di progettare lo schema concettuale di un applicazione relativa all indirizzo PLM della facoltà di ingegneria dell università la Sapienza di Roma. Di ogni studente interessa conoscere il numero di matricola (chiave), il suo piano di studi, gli esami sostenuti ed eventualmente informazioni relative alla relazione finale che lo studente presenterà alla sessione di laurea. Ogni studente deve avere un solo piano di studi il quale definisce gli esami che devono essere superati dallo studente prima di laurearsi. Del piano di studi interessa il tipo il quale può essere PLM o Sistemi informatici. Ogni corso ha un nome che lo identifica, un certo numero di crediti e può essere di tipo progettuale o di tipo non progettuale. Gli unici esami di tipo non progettuale previsti sono Progetto di applicazioni software e Progetto di reti di calcolatori e sistemi informatici. È inoltre di interesse conoscere per ogni studente la data in cui ha sostenuto i suoi esami ed il voto. Uno studente può inoltre essere autore di una relazione finale che può essere stata discussa in una sessione di laurea in cui viene assegnato, ad ogni studente, un voto compreso tra 70 e 110. Ogni relazione finale ha come argomento un corso il quale deve essere di tipo progettuale e non appartenere al piano di studi dello studente autore della relazione. 3

Dalla progettazione concettuale alla realizzazione del database su MySQL Progettazione concettuale Requisiti Progettazione logica Schema concettuale Schema logico Progettazione fisica Schema fisico 4

Progettazione concettuale Lo schema concettuale matr (0,1) autore (1,1) Studente (0,n) verbalizza (0,1) (1,1) (0,n) stila n. crediti nome prevede Piano di studi Corso (1,n) (0,n) tipo argomento (0,n) (1,1) discussione Relazione finale (0,1) n. pag voto (1,1) data (1,n) Esame voto data Corso non progettuale Corso progettuale Sessione di laurea

Progettazione concettuale Vicoli di integrità esterni 1. I corsi progettuali previsti sono solamente Progetto di applicazioni software e Progetto di reti di calcolatori e sistemi informatici. 2. Uno studente può discutere la sua tesi di laurea in una certa sessione solo se tutti gli esami previsti nel suo piano di studi sono stati superati e verbalizzati con voto maggiore o uguale a 18. 3. Esistono solo due tipi di piano di studi: PLM e sistemi informatici. 4. Se uno studente ha un piano di studi di tipo PLM, allora deve produrre una relazione finale che verta su un corso di tipo progettuale non compreso nel suo piano di studi. 5. Un voto di laurea deve essere compreso tra 70 e 110 6

Progettazione concettuale Fasi della ristrutturazione dello schema concettuale 1. analisi delle ridondanze 2. eliminazione degli attributi multivalore 3. eliminazione degli attributi composti 4. eliminazione delle ISA e delle generalizzazioni 5. scelta degli identificatori principali 6. specifica degli ulteriori vincoli esterni 7. riformulazione delle operazioni e delle specifiche sul carico applicativo in termini dello schema ristrutturato 7

Progettazione concettuale Ristrutturazione dello schema concettuale matr (0,1) autore (1,1) Studente (1,1) (0,n) Esame verbalizza (0,n) (0,1) (1,1) voto data stila n. crediti nome prevede CNP ISA C Corso non progettuale Piano di studi Corso (1,n) (0,n) (0,1) (0,1) (1,1) (1,1) tipo Corso progettuale argomento (0,n) CP ISA C (1,1) discussione data Relazione finale (0,1) (1,n) Sessione di laurea n. pag voto

Progettazione concettuale Ristrutturazione dello schema concettuale 1. I corsi progettuali previsti sono solamente Progetto di applicazioni software e Progetto di reti di calcolatori e sistemi informatici. 2. Uno studente può discutere la sua tesi di laurea in una certa sessione solo se tutti gli esami previsti nel suo piano di studi sono stati superati e verbalizzati con voto maggiore o uguale a 18. 3. Esistono solo due tipi di piano di studi: PLM e sistemi informatici. 4. Se uno studente ha un piano di studi di tipo PLM, allora deve produrre una relazione finale che verta su un corso di tipo progettuale non compreso nel suo piano di studi. 5. Un voto di laurea deve essere compreso tra 70 e 110 6. Vicolo di generalizzazione: ogni istanza di Corso partecipa o a CP_ISA_C o a CNP_ISA_C 9

Dalla progettazione concettuale alla realizzazione del database su MySQL Progettazione concettuale Requisiti Progettazione logica Schema concettuale Schema logico Progettazione fisica Schema fisico 10

Progettazione logica La traduzione diretta La traduzione diretta ha lo scopo di tradurre lo schema ER ristrutturato (con vincoli) in uno schema relazionale con vincoli che rappresenti le stesse informazioni Consiste delle seguenti attività: traduzione delle entità in relazioni dello schema logico, con relativi vincoli traduzione delle relazioni dello schema ER in relazioni dello schema logico, con relativi vincoli traduzione dei vincoli esterni riformulazione di operazioni e specifiche sul carico applicativo in termini dello schema logico 11

Corso(nome, n _crediti) Studente(matricola) Sessione_di_laurea(data) Progettazione logica Entità senza accorpamento inc: SessioneDiLaurea[data] Discussione[sessioneDiLaurea] 12

PianoDiStudio(studente, tipo) Foreign key: PianoDiStudio[studente] Studente[matricola] inclusione: PianoDiStudio[studente] Prevede [pianodistudio] RelazioneFinale(studente, n pag) Foreign key: RelazioneFinale [studente] Studente[matricola] Foreign key: RelazioneFinale[studente] Argomento[relazione] Esame(studente, corso, voto, data) Foreign key: Esame [studente] Studente[matricola] Foreign key: Esame[corso] Corso[nome] CorsoNonProgettuale(nome) Foreign key: CorsoNonProgettuale[nome] Corso [nome] CorsoProgettuale(nome) Progettazione logica entità con accorpamento Foreign key: CorsoProgettuale[nome] Corso [nome] 13

Prevede(pianoDiStudio,corso) Foreign key: Prevede[pianoDiStudio] PianoDiStudio [studente] Foreign key: Prevede[corso] Corso [nome] Argomento(relazione, corso) Progettazione logica relazioni senza accorpamento Foreign key: Argomento[relazione] RelazioneFinale[studente] Foreign key: Argomento[corso] Corso[nome] Discussione(relazioneFinale, sessionedilaurea, voto) Foreign key: Discussione[relazioneFinale] RelazioneFinale[studente] Foreign key: Discussione[sessioneDiLaurea] SessioneDiLaurea[data] 14

Progettazione logica Ristrutturazione dello schema logico In questo esempio non è presente la ristrutturazione dello schema logico. NOTA: nel progetto ogni fase della progettazione della base di dati deve essere presente ed opportunamente descritta. (fare riferimento alle slide del corso di basi di dati) 15

Dalla progettazione concettuale alla realizzazione del database su MySQL Progettazione concettuale Requisiti Progettazione logica Schema concettuale Schema logico Progettazione fisica Schema fisico 16

Progettazione fisica Creazione dello schema in MySQL Task1: Connettersi al DBMS MySQL: 1. Aprire il programma QueryBrowser (Start-->MySQL-->QueryBrowser) 2. Nella casella server inserire: 192.168.51.254 3. Nella casella user inserire: prog10xx (sostituire xx con il numero assegnato) 4. Nella casella password inserire: prog10 5. Premere il tasto IGNORE nella schermata successiva Task2: Aprire e modificare lo script sql denominato creazione_schema in modo che crei un nuovo database denominato esercitazione + proprio numero di matricola. Per eseguire lo script andare su MENU-->File-->OpenScript e successivamente premere su Execute DOMANDA: Come risolvere il problema dei vincoli di FK ciclici nella creazione delle tabelle? 17

Progettazione fisica Vincoli esterni VINCOLO 5): Un voto di laurea deve essere compreso tra 70 e 110 Task3: Creare una user defined function che, dato un voto di laurea in input (con tipo di dato coerente con la definizione della tabella Discussione), restituisca true se il voto di laurea è compreso tra 70 e 110, false altrimenti. Task4: Creare un trigger che verifichi che le tuple che si stanno tentando di inserire nella tabella Discussione abbiamo un valore del campo voto valido. 18

Progettazione fisica Vincoli esterni VINCOLO 2): Uno studente può discutere la sua tesi di laurea in un certa sessione solo se tutti gli esami previsti nel suo piano di studi sono stati superati e verbalizzati. Task5: Creare una user defined function che, dato l identificatore di una relazione finale in input (con tipo di dato coerente con la definizione della tabella RelazioneFinale) restituisca true se lo studente autore di quella relazione finale può laurearsi, ovvero se per ogni corso previsto dal piano di studi di quello studente esiste un esame, relativo a quel corso e verbalizzato da quello studente con voto maggiore o uguale a 18. Task6: Creare un trigger che, prima dell inserimento di una nuova tupla nella tabella Discussione, verifichi se la relazione finale può essere discussa. ATTENZIONE: Il task 6 richiede di creare un trigger che si attivi prima dell inserimento di una tupla nella tabella Discussione come richiesto anche dal Task 4. 19

Progettazione fisica Vincoli esterni VINCOLO DI INCLUSIONE: SessioneDiLaurea[data] Discussione[sessioneDiLaurea] Task7: Creare una stored procedure con un parametro di input e uno di output: il parametro di input rappresenta una sessione di laurea (con tipo di dato coerente con la definizione della tabella SessioneDiLaurea) mentre il parametro di output è un booleano che rappresenta il risultato della computazione della stored procedure, che è la seguente: se la sessione di laurea compare almeno una volta nella tabella Discussione, allora il valore che viene scritto nel parametro di output è true, altrimenti viene scritto false Task8: Creare un trigger che prima dell'inserimento di una tupla nella tabella SessioneDiLaurea verifichi che la sessione compaia almeno una volta nella tabella Discussione. 20

Progettazione fisica Gestione dei vincoli ciclici Nello schema sono presenti diversi vincoli di foreign key ed inclusione ciclici i quali impediscono l'inserimento di tuple nelle tabelle coinvolte nel ciclo. Si considerino i seguenti vincoli ciclici: CICLO 1: CICLO 2: Fk: RelazioneFinale[studente] Argomento[relazione] Fk: Argomento[relazione] RelazioneFinale[studente] Inc: SessioneDiLaurea[data] Discussione[sessioneDiLaurea] Fk: Discussione[sessioneDiLaurea] SessioneDiLaurea[data] 21

Progettazione fisica Gestione dei vincoli ciclici Task9: risolvere il problema dei vincoli ciclici adottando la seguente strategia: permettere gli inserimenti nelle varie tabelle solo attraverso transazioni appropriate, che disabilitano e riabilitano i vincoli di foreign key o i trigger all'interno di un'unica transazione. Domanda: quale livello di isolamento conviene impostare per le transazioni di cui sopra? Task11: Interrogarsi sulla politica di cancellazione/aggiornamento relative ai vincoli di foreign key. Domanda: la ciclicità di vincoli pone problemi rispetto alla cancellazione/aggiornamento? Se sì, come si risolvono? 22