Docsity
Docsity

Prepara i tuoi esami
Prepara i tuoi esami

Studia grazie alle numerose risorse presenti su Docsity


Ottieni i punti per scaricare
Ottieni i punti per scaricare

Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium


Guide e consigli
Guide e consigli

Appunti Informatica Documentale, Appunti di Elementi di Informatica

Appunti presi a lezione uniti alle slide

Tipologia: Appunti

2020/2021

In vendita dal 10/06/2022

camy00_cc
camy00_cc 🇮🇹

4

(2)

6 documenti

Anteprima parziale del testo

Scarica Appunti Informatica Documentale e più Appunti in PDF di Elementi di Informatica solo su Docsity! INFORMATICA DOCUMENTALE – PROF. MANTOVANI Basso livello: più vicino alla macchina Alto livello: più vicino all’uomo Gestire i dati: creare, modificare e cancellare i dati CAPITOLO 1 – INTRODUZIONE Nozioni generali e definizioni introduttive Studio delle basi di dati, ovvero insiemi organizzati di dati Da un punto di vista informatico le basi di dati sono un supporto digitale su cui immagazzinare i dati, un software che permetta di recuperare i dati e una rete che ne permetta la condivisione Quando noi guardiamo dal punto di vista informatico, dobbiamo distinguere tra hardware e software Modelli per l’organizzazione di dati Linguaggi per l’utilizzo di dati Metodologie di progettazione di basi di dati Perché? La comunicazione prevede lo scambio e quindi la trasmissione e il recupero di informazioni (cercare su Google) I dati devono essere conservati, aggiornati e gestiti in modo efficiente SISTEMI INFORMATIVI INFORMAZIONI E DATI Basi di dati: insieme organizzato di dati utilizzati per il supporto allo svolgimento di attività (di ente azienda ufficio persona) Informatica: scienza del trattamento razionale specialmente per mezzo di macchine automatiche, dell’informazione considerata come supporto alla conoscenza umana e alla comunicazione. Due anime: - Metodologica - tecnologica SISTEMA INFORMATIVO componente di una organizzazione che gestisce le informazioni di interesse (cioè utilizzate per il perseguimento degli scopi dell’organizzazione) - Ogni organizzazione ha un sistema informativo eventualmente non esplicitato nella struttura - Il sistema informativo è di supporto ad altri sottoinsiemi e va quindi studiato nel contesto in cui è inserito GESTIRE LE INFORMAZIONI - Raccolta acquisizione (quali dati?) - Archiviazione conservazione (su che supporto?) - Elaborazione, trasformazione produzione→ possiamo memorizzare i dati come sono o elaborarli e trasformali per fare altro - Distribuzione, comunicazione scambio SISTEMI INFORMATIVI E AUTOMAZIONE Il concetto di sistema informativo è indipendente da qualsiasi automazione - esistono organizzazioni la cui ragion d’essere è la gestione di info e che operano da soli sistema informatico→ porzione automatizzata del sistema informativo - parte del sistema informativo che gestisce informazioni con tecnologia informatica GESTIONE DELLE INFORMAZIONI Nelle attività umane le informazioni vengono gestite in forme diverse: - idee informali, linguaggio naturale (scritto o parlato formale, colloquiale, varie lingue) - disegni grafici schemi - numeri e codici e su vari supporti: mente umana, pc, carta.. INFORMAZIONI E DATI Nei sistemi informatici (e non solo) le informazioni vengono rappresentate in modo essenziale attraverso i dati Informazione: notizia, dato o elemento che consente di avere conoscenza più o meno esatta di fatti, situazioni o modi di essere Dato: ciò che è immediatamente presente alla conoscenza, prima di ogni elaborazione: in informatica elementi di informazione costituiti da simboli che devono essere elaborati GESTIONE DELLE INFORMAZIONI I dati sono spesso il risultato di forme di organizzazione e codifica di info Esempio: nei servizi anagrafici e nel riferimento a persone→ descrizioni discorsive, nome e cognome, estremi anagrafici, codice fiscale PERCHÉ I DATI? - La rappresentazione precisa di forme più ricche di info e conoscenza è difficile - I dati costituiscono spesso una risorsa strategica, perché più stabili nel tempo di altre componenti (processi, tecnologie, ruoli umani) BASI DI DATI E SISTEMA DI GESTIONE DI BASI DI DATI - Accezione generica metodologica: insieme organizzato di dati utilizzati per il supporto allo svolgimento di un ente (azienda ufficio persona) - Accezione specifica metodologica e tecnologica: insieme di dati gestito da un DBMS SISTEMA DI GESTIONE DI BASI DI DATI Database management system→ DBMS Sistema che gestisce collezioni di dati: - grandi - persistenti→ devono essere mantenute - condivise Garantendo: - privatezza: si possono definire meccanismi di autorizzazione (non posso aggiungermi esami a libretto) - affidabilità: resistenza a malfunzionamenti hardware e software. Una base di dati è una risorsa pregiata e quindi deve essere conservata a lungo termine tecnica fondamentale: gestione delle transazioni, ovvero operazioni da considerare - efficienza: sapere gestire meglio le risorse di spazio di memoria (principale e secondaria) e tempo (esecuzione e risposta) - efficacia: funzionalità articolate, potenti e flessibili DBMS Prodotti software complessi sul mercato esempi: - IBM DB2 - oracle database - microsoft SQL server - oracle mySQL - postgre SQL - microsoft access - libreoffice base BASI DI DATI Supportano grandi dimensioni (molto) maggiori della memoria centrale dei sistemi di calcolo utilizzati - Il limite deve essere solo quello fisico dei dispositivi Sono persistenti ovvero hanno un tempo di vita indipendente dalle singole esecuzioni dei programmi utilizzati Sono condivise una base di dati è una risorsa integrata, condivisa fra applicazioni (settore informativo) - Attività diverse su darti condivisi: meccanismi di autorizzazione - Accessi di più utenti ai dati condivisi: controllo della concorrenza Devo gestire problemi di ridondanza (informazioni ripetute) e incoerenza (versioni possono non coincidere) Esempio: domanda “trovare i corsi tenuti nelle aule del primo piano” SELECT Corso, aula, Piano FROM Aule, Corsi WHERE Aule.Nome=corsi.aula AND Piano=primo Risposta: DISTINZIONE SUI LINGUAGGI Possiamo avere un linguaggio che ci permette di operare sulle istanze, e altri sullo schema. SQL ci permette di operare su entrambi. - Data Manipulation Language (DML)→per l’interrogazione e l’aggiornamento di istanze di basi di dati - Data Definition Language (DDL)→ per la definizione di schemi (logici, esterni, fisici e altre operazioni generazionali LINGUAGGI DI INTERROGAZIONE NEL CORSO Algebra relazionale: linguaggio procedurale, cioè una descrizione della procedura da attuare per ottenere il risultato. Permette di esaminare le query (interrogazioni) da effettuare nell’ambito della gestione di un database SQL→ linguaggio standardizzato per creare e modificare schemi di database (DDL) e inserire, modificare e gestire dati memorizzati, si usa a basso livello CAPITOLO 2: IL MODELLO RELAZIONALE I modelli logici tradizionali sono 3: gerarchico, reticolare e relazionale che è il più largamente diffuso. Esso che ci si rifarà a modello concettuale di Codd proposto nel 1970 ma solo dopo un’undicina d’anni è stato davvero applicato nel mondo reale Più recenti: a oggetti, basato su XML, a grafi… MODELLI LOGICI – CARATTERISTICHE Gerarchico e reticolare: utilizzano riferimenti espliciti (puntatori) fra record Relazionale: modello organizzato basato su valori e in questo concetto anche i riferimenti fra dati in strutture (relazioni) diverse sono rappresentati per mezzo dei valori stessi. I valori sono gli stessi in diverse tabelle: IL MODELLO RELAZIONALE - Proposto da E.F. Codd nel 1970 per favorire l’indipendenza dei dati - Disponibile in DBMS reali nel 1981 (non è facile implementare l’indipendenza con efficienza e affidabilità) - Si basa sul concetto matico di relazione (con una variante) - Le relazioni hanno naturale rappresentazione per mezzo di tabelle Strutture: tutte quelle che sono le regole che determinano il fatto che una tabella rientra nel modello di Codd e i vincoli di integrità, ovvero dei controlli per fare in modo che i dati inseriti rispecchino delle determinate regole (se è un’ora, deve rispecchiare il formato ora) RELAZIONE: TRE ACCEZIONI - Relazione matematica: come nella teoria degli insiemi - Relazione secondo il modello relazionale dei dati - Relazione (dall’inglese relationship) che rappresenta una classe di fatti, nel modello entity- relationship; tradotto anche con associazione o correlazione RELAZIONE MATEMATICA – ESEMPIO D1 nome primo insieme. Una relazione matematica è un sottoinsieme di questo prodotto cartesiano RELAZIONE MATEMATICA RELAZIONE MATEMATICA- PROPRIETA’ - una relazione matematica è un insieme di n-uple ordinate - Una relazione è un insieme →non ordinamento tra le n-uple →le <n-uple sono distinte →ciascuna n-upla è ordinata; l’i-esimo valore proviene dall’i-esimo dominio Sono distinte: non ci sono doppioni nel prodotto cartesiano Ordinamento interno deve essere sempre rispettato RELAZIONE MATEMATICA – esempio Ciascuno dei domini ha due ruoli diversi, distinguibili attraverso la posizione: - La struttura è posizionale - L’ordinamento non è una proprietà ottimale STRUTTURA NON POSIZIONALE A ciascun dominio si associa un nome unico nella tabella (attributo, intestazione della tabella), che ne descrive il ruolo. In questo caso l’ordine delle colonne non importa più. TABELLE E RELAZIONI tutte le regole per far si che rispetti un modello relazionale In una tabella che rappresenta una relazione: - L’ordinamento tra le righe è irrilevante - L’ordinamento tra le colonne irrilevante Una tabella rappresenta una relazione se: - Le righe sono diverse tra loro - Le intestazioni delle colonne sono diverse tra loro - I valori ogni colonna sono fra loro omogenei→ sempre schematicamente uguale - Il modello è basato sui valori - I riferimenti fra dati in relazioni diverse sono rappresentati per mezzo di valori dei domini che compaiono nelle ennuple TROPPI VALORI NULLI Sono un grande ostacolo per la rielaborazione IL MODELLO RELAZIONALE: VINCOLI DI INTEGRITA’ VINCOLO DI INTEGRITA’ Istanze di basi di dati che, pur sintatticamente corrette, non rappresentano informazioni possibili per l’applicazione di interesse - Proprietà che deve essere soddisfatta dalle istanze che rappresentano informazioni corrette per l’applicazione - Un vincolo è un predicato, cioè un’espressione sintattica che in un determinato contesto può essere vera o falsa: associa ad ogni istanza il valore vero o falso. UNA BASE DI DATI “SCORRETTA” è quando nel contesto in cui si trova non può essere accettata VINCOLI DI INTEGRITÀ PERCHÉ? - Descrizione più accurata della realtà - Contributo alla qualità dei dati - Utili nella progettazione - Usati dai DBMS nella esecuzione delle interrogazioni VINCOLI DI INTEGRITA’ NOTA Alcuni tipi di vincoli (ma non tutti) sono “supportati dal DBMS: - Possiamo quindi specificare vincoli di tali tipi vincoli di integrità, nota - Nella nostra base di dati e il DBMS ne impedisce la violazione Per i vincoli “non supportati” la responsabilità della verifica è dell’utente/programmatore TIPI DI VINCOLI Vincoli intrarelazionali→vincolo definito rispetto alle singole relazioni del DB - Vincoli di ennupla: esprimono condizioni su valori di ciascuna ennupla, indipendentemente dalle altre ennuple Esempio: Il vincolo si riferisce a due attributi della relazione Esami: NOT (Lode = “e lode”) OR (Voto= 30) Esempio 2: Esempio di vincolo di dominio: Lordo <= 50.000 (violato nella prima tupla, t[Lordo]>50.000 - Vincoli su valori (o di dominio): coinvolgono un solo attributo (caso particolare di vincolo di ennupla) Esempio: Il vincolo si riferisce solo all’attributo Voto della relazione Esami: (Voto >=18) AND (VOTO  30) Il vincolo si riferisce a due attributi della relazione Esami: NOT (Lode = “e lode”) OR (Voto= 30) Vincoli interrelazionali→tra relazioni diverse e DB - Vincoli di integrità referenziale→ importante! RIPETIZIONE Database: insieme organizzato di dati, modelli, linguaggi e metodologie Differenza tra informazione e dato: l’informazione è un dato contestualizzato e perciò più specifico Da un sistema informativo se si aggiunge l’automazione, si ottiene il sistema informatico Per gestire le basi di dati serve il DBMS che deve tener conto che i dati sono grandi, persistenti (in caso di blackout devono essere mantenute), ruolo centralizzato, affidabilità, efficienza e efficacia. Nelle basi di dati ci può essere ridondanza che può che creare incoerenza. Per rappresentare le basi di dati c’è il modello relazionale: relazione→tabella schema (unione di più attributi), istanza, punti del modello di Codd t [A] per sapere il contenuto di quell’attributo IDENTIFICAZIONE DELLE TUPLE - Non ci sono due ennuple con lo stesso valore sull’attributo Matricola - Non ci sono due ennuple uguali su tutti e tre gli attributi Cognome, Nome e Data di Nascita SUPERCHIAVE E CHIAVE Superchiave→ insieme di attributi che identificano univocamente le ennuple di una relazione Formalmente: - Un insieme K di attributi è superchiave per r se r non contiene due ennuple distinte t1 e t2 con t1[K]=t2[K] - K è una chiave per r se è una superchiave minimale (cioè non contiene un’altra superchiave) Prendo due righe a caso e se è sempre diversa, non contiene due righe che hanno lo stesso attributo. ESEMPIO: UNA CHIAVE Matricola è una chiave: - È superchiave - Contiene un solo attributo e quindi è minimale ESEMPIO: UN’ALTRA CHIAVE Cognome, Nome, Nascita è un’altra chiave: - È superchiave - Minimale VINCOLI, SCHEMI, ISTANZE - i vincoli corrispondono a proprietà del mondo reale modellato dalla base di dati - interessano a livello di schema (con riferimento cioè a tutte le istanze) - ad uno schema associamo un insieme di vincoli e consideriamo corrette (valide, ammissibili) le istanze che soddisfano tutti i vincoli - un’istanza può soddisfare tutti i vincoli (“per caso”)→ Per caso nome cognome e data di nascita ma potrebbe verificarsi un caso di omonimia per esempio IMPORTANTE: ESISTENZA DELLE CHIAVI - una relazione non può contenere ennuple distinte ma uguali (grazie alle chiavi) - ogni relazione ha come superchiave l’insieme degli attributi su cui è definita e quindi ha (almeno) una chiave→ogni tupla! IMPORTANZA DELLE CHIAVI - l’esistenza delle chiavi garantisce l’accessibilità a ciascun dato della base di dati→ si estende alle tabelle diverse come quando parlavamo degli esami (univocità di matricola o codice esame) - le chiavi permettono di correlare i dati in relazioni diverse: ciò è fondamentale, perché sappiamo che il modello relazionale è basato sui valori AZIONI COMPENSATIVE - Esempio: viene eliminata una ennupla causando una violazione - Comportamento “standard”→rifiuto dell’operazione - Azioni compensative ELIMINAZIONE IN CASCATA: il progetto e tutto ciò a cui esso è referenziato INTRODUZIONE DI VALORI NULLI: cancello la tupla e metto NULL ESEMPIO VIOLAZIONE COMPENSAZIONE CAPITOLO 3 – ALGEBRA RELAZIONALE Utilizzare algebra relazionale come linguaggio, capire come dopo aver fatto le tabelle, come iniziare a interrogare la Base di dati tramite dei linguaggi (algebra relazionale e SQL) LINGUAGGI DI INTERROGAZIONE PER BASI DI DATI RELAZIONALI - Dichiarativi→specificano le proprietà del risultato (“che cosa”) - Procedurali→specificano le modalità di generazione del risultato (“come”) LINGUAGGI DI INTERROGAZIONE - Algebra relazionale: procedurale - Calcolo relazionale: dichiarativo (teorico) - SQL (structured Query language): parzialmente dichiarativo (reale), su dbms e relazionale ALGEBRA RELAZIONALE Linguaggio procedurale, basato su concetti di tipo algebrico Insieme di operatori →definiti su relazioni →producono relazioni a partire da altre relazioni: quando si va a interrogare il risultato sarà un’altra tabella a partire da quella di partenza →possono essere composti: si hanno degli operatori e si possono usare anche combinati insieme OPERATORI DELL’ALGEBRA RELAZIONALE Insiemistici→ si applicano solo a relazioni definite sugli stessi attributi - Unione→ fusione del contenuto di entrambi gli insiemi -Intersezione→ ciò che è in comune a entrambi -Differenza→ quello che non è comune a entrambi TIPICI DELL’ALGEBRA RELAZIONALE - Ridenominazione: utile per gli insiemistici - SELEZIONE Operatore tipico: , operatore ortogonale, decomposizione orizzontale Si parla di Operatore monadico perché contiene un solo argomento Produce un risultato che: →ha lo stesso schema dell’operando (è definito su tutti gli attributi) →contiene un sottoinsieme delle ennuple dell’operando, ovvero le ennuple che soddisfano la condizione Sintassi: SELCondizione(Operando) → condizione: condizione booleana (come quelle dei vincoli di ennupla, true o false) Semantica: il risultato contiene le ennuple dell’operando che soddisfano la condizione - PROIEZIONE Operatore tipico:  , operatore ortogonale, decomposizione verticale Operatore monadico Produce un risultato che: →ha parte degli attributi dell’operando →contiene ennuple cui contribuiscono tutte le ennuple dell’operando Sintassi: PROJListaAtrributi(operando) Semantica: il risultato contiene le ennuple ottenute da tutte le ennuple dell’operando ristrette agli attributi nella lista Cardinalità delle proiezioni Una proiezione: →Contiene al più tante ennuple quante l’operando →Può contenerne di meno Se X è una superchiave di R allora PROJx(R) contiene esattamente tante ennuple quante R - JOIN - È l’operatore più interessante dell’algebra relazionale - Permette di correlare dati in relazioni diverse, confrontando i valori contenuti in esse (utilizzando quindi la caratteristica fondamentale del modello, quella di essere basata sui valori) - Esistono due tipi di join: →JOIN NATURALE - Operatore binario (generalizzabile) - Produce un risultato --sull’unione degli attributi degli operandi --con ennuple costruite combinando le ennuple degli operandi con valori uguali sugli attributi comuni difficoltà del join naturale Alcune ennuple non contribuiscono al risultato: vengono “tagliate fuori” (tuple dangling) Sia per il join vuoto che per il parziale una delle soluzioni è introdurre il valore NULL Caso particolare: prodotto cartesiano - Il prodotto cartesiano è un join naturale su relazioni senza attributi in comune - Contiene sempre un numero di tuple pari al prodotto della cardinalità degli operandi (le ennuple sono tutte combinabili) - È utile? Di per sé, concatena tuple non necessariamente correlate dal punto di vista semantico Collegare anche se l’attributo reparto codice non è comune →THETA-JOIN - Il prodotto cartesiano, in pratica, ha senso (quasi) solo se seguito da selezione: SELcondizione(R1JOIN R2) - L’operazione viene chiamata Theta-join e indicata con R1 JOINcondizione R2 È un operatore derivato, ovvero è esprimibile per mezzo di altri operatori, ovvero prodotto cartesiano e selezione Es: A1<A2 AND B1=B2 ESEMPI: matricola e cognome degli impiegati che guadagnano più di 50 SELStipendio>50(impiegati) PROJmatricola,cognome(SELstipendio>50(impiegati)) L’ordine è rilevante, perché altrimenti perdiamo l’informazione dello stipendio ESERCIZI: Per identificare un libro (ISBN, titolo, anno, lingua, codice autore, codice editore) Scrittore (codice autore, nome, cognome, nazionalità) Casa editrice (codice ed., nome, città) Estrarre ISBN libri scritti nel 1975 ProjISBN (SELanno=”1975”(LIBRO)) Titoli scritti in francese prima del 1990 Projtitolo,(SELlingua=”francese” and anno<1990(LIBRO)) ISBN e titolo di libri scritti in francese o italiano Projisbn,titolo(SELlingua=”francese” or lingua=”italiano” (libro)) Titolo e anno libri scritti in spagnolo o dopo il 2015 Projtitolo,anno(SELlingua=2spagnolo” or anno>2015(libro)) OPERATORI E CONNETTIVI → la condizione della selezione può essere valutata mediante un operatore di confronto→(=,,<,,>) → se la condizione deve valutare più sottocondizioni, si usano dei connettivi: Prima la selezione perché bisogna avere tutti gli attributi ancora disponibile, cosa che non sarebbe cosi perché la proiezione fatta per prima andrebbe ad eliminare il resto. Prima and e poi or ESEMPIO: PROVE SCRITTE IN UN CONCORSO PUBBLICO - I compiti sono anonimi e a ciascuno è assegnato una busta chiusa con il nome del candidato - Ciascun compito e la busta chiusa vengono contrassegnati con un numero ESEMPIO JOIN NON COMPLETO Dangling→ pendenti che non hanno una destinazione ESEMPIO DI JOIN ESTERNO COMPLETO ESEMPIO JOIN VUOTO Nessuna tupla degli operandi è combinabile ESEMPIO: JOIN COMPLETO CON N X M TUPLE CAPITOLO 4 – SQL SQL – CONCETTI BASE - Originariamente il nome era l’acronimo di “structured query language”, ora “nome proprio” - È un linguaggio con varie funzionalità: →contiene DDL: data definition language per la definizione di schemi (logici, esterni, fisici) e altre operazioni generali →contiene DML: per l’interrogazione e l’aggiornamento di istanze di basi di dati - Ne esistono varie versioni SQL: “STORIA” - Prima proposta sequel (1974) - Prime implementazioni in SQL/DS e Oracle (1981) - Dal 1983 ca. “standard di fatto” - Standard (1986 poi 1989, 1992,1999, 2003, 2006,2008..) COSA PUÒ FARE SQL - Definizione dello schema di una base di dati - Specificare delle interrogazioni sulla base di dati - Modificare la base di dati COMANDI BASE IN SQL – definizioni di basi di dati NOTAZIONI DEFINIZIONE DEI DATI IN SQL: CREAZIONE DI UNA TABELLA Istruzione CREATE TABLE create table Nome Tabella (nome_attributo Dominio [ValoreDiDefault] [Vincoli], … AltriVincoli) - Definisce uno schema di relazione e ne crea un’istanza vuota - Specifica attributi, domini e vincoli Dominio→ tipo di dato di quell’attributo, sempre da specificare CREATE TABLE – ESEMPIO CREATE TABLE Impiegato( Matricola CHAR (6) PRIMARY KEY, Nome CHAR (20) NOT NULL, Cognome CHAR (20) NOT NULL, Dipart CHAR (15), Stipendio NUMERIC (9) DEFAULT 0, FOREIGN KEY (Dipart), REFERENCES Dipartimento(NomeDip), UNIQUE (Cognome, Nome)) Non c’è da scrivere da capo ma magari leggerlo Tutte quelle con la prima maiuscola, sono attributi, devo esplicitare qual è la chiave primaria. Attributo dominio SQL non controlla la minimalità, ma verifica che siano tutti valori unici e non nulli. Stringa: - Char (N)→ numero esattamente quello numero di caratteri (codice fiscale) - Varchar (N)→ variabile, fino a quel numero di caratteri Avere una struttura variabile, mi consente di risparmiare spazio Foreign key→ vincolo identità referenziale Unique nome e cognome→ no omonimia DEFINIZIONE DEI DATI IN SQL: DOMINI - Domini elementari (predefiniti) --Carattere: singoli caratteri o stringhe, anche di lunghezza variabile (CHAR(n), VARCHAR(n)…) --Numerici: esatti e approssimati (NUMERIC(n), INTEGER, SMALLINT --Data, ora, intervalli di tempo (DATE…) --introdotti in SQL 1999: →BOOLEAN →BLOB, CLOB (binary/character large object): per grandi immagini e testi Integer→interi Numeric→ anche con virgola Smallint→ versione ridotta dell’intero Boolean→ vero o falso - Domini definiti dall’utente (semplici ma riutilizzabili) DEFINIZIONE DI DOMINI Istruzione CREATE DOMAIN: definisce un dominio (semplice), utilizzabile in definizioni di relazioni, anche con vincoli (valori di default) Create domain NomeDominio as TipoDiDato [ValoreDiDefault] CREATE DOMAIN ESEMPIO DEFINIZIONE DI DATI IN SQL: VINCOLI INTRARELAZIONALI - Not null il valore nullo non è ammesso per l’attributo, quindi il valore deve essere sempre specificato, o si assegna un valore di default - Unique definisce (super)chiavi - Primary key chiave primaria (una sola, implica not null) - Check creare un nuovo vincolo sui dati che si vanno a inserire un valore o lo si inserisce di default oppure lo si esplicita. In SQL non c’è la distinzione tra chiave e superchiave perché non guarda la minimalità VINCOLI INTRARELAZIONALI: UNIQUE Due forme: - nella definizione di un attributo, se forma da solo la chiave Matricola char(6) unique - come elemento separato (se opera su più attributi) Nome varchar(20) not null, Cognome varchar(20) not null, unique (Cognome,nome) Attenzione! Nome varchar (20) not null, Cognome varchar(20) not null, unique (Cognome,Nome) è diverso da Nome varchar(20) not null unique, Cognome varchar (20) not null unique Nel primo non accetto omonimia, mentre nel secondo non accetto che due abbiano lo stesso nome o lo stesso cognome. VINCOLI INTRARELAZIONALI: PRIMARY KEY - si può definire una sola volta per ogni tabella (a differenza di unique e not null) - come unique, si può definire sul singolo attributo o su di un insieme - la definizione implica una definizione di not null per tutti gli attributi della chiave primaria Nome varchar(20), Cognome varchar(20), Primary key (Cognome, Nome) PRIMARY KEY – ALTERNATIVE Matricola CHAR(6) PRIMARY KEY Oppure Matricola CHAR(6), …, PRIMARY KEY (Matricola) CREATE TABLE – ESEMPIO CREATE TABLE Impiegato( Matricola CHAR(6) PRIMARY KEY, Nome CHAR(20) NOT NULL, Cognome CHAR(20) NOT NULL, Dipart CHAR(15) NOT NULL, Stipendio NUMERIC(9) DEFAULT(0), FOREIGN KEY (Dipart) REFERENCES Dipartimento (NomeDip), UNIQUE (Cognome,Nome) Quando si riferisce a più attributi per convenzione va indicato in basso VINCOLI INTERRELAZIONALI - REFERENCES e FOREIGN KEY permettono di definire vincoli di integrità referenziale - Di nuovo due sintassi: →per singoli attributi →su più attributi - È possibile definire politiche di reazione alla violazione→ CHECK - I vincoli di integrità referenziale creano un legame tra un attributo di una tabella “interna” e i valori attribuiti di una tabella “esterna” - Il vincollo impone che per ogni riga nella tabella interna, il valore dell’attributo specificato, se diverso dal valore nullo, compaia tra le righe della tabella esterna tra i valori del corrispondente attributo - La sintassi impone che l’attributo cui si fa riferimento nella tabella esterna sia soggetto al vincolo UNIQUE (si chiede che sia un identificatore) SELECT – FROM – WHERE: ESEMPI E CASI DI STUDIO Stipendio viene rinominato solo durante la stampa, ma continua a chiamarsi tale all’ionterno della mia tabella. Like→ prendere le stringhe di cognome che hanno quella sottostruttura SQL E ALGEBRA RELAZIONALE Vediamo altri esempi di SQL e cerchiamo di capire la relazione con le corrispondenti interrogazioni procedurali in algebra relazionale SELEZIONE E PROIEZIONE Nome e reddito delle persone con meno di 30 anni PROJNome,Reddito(SELEtà<”30”(Persone)) Select Nome, Reddito From Persone Where Età<30 SELEZIONE, SENZA PROIEZIONE Nome, età e reddito delle persone con meno di 30 anni SELEtà<”30”(Persone) Select* From persone Where Età<”30” Non eliminando nulla, la selezione non serve PROIEZIONE: GESTIONE DEI DUPLICATI IN SQL In algebra relazionale: - Cognome e filiale di tutti gli impiegati PROJCognome, Filiale(impiegati) L’operazione di eliminazione delle righe doppie (ad esempio al seguito di una selezione con where) è molto costosa, quindi di default SQL mantiene le righe dupplicate. Il costrutto distinct permette di eliminare i duplicati. Il costrutto all permette invece di mantenerli, ma questa è già scelta di default. SELECT: SELEZIONE, PROIEZIONE E JOIN - L’istruzione select, con una sola relazione nella clausola from permette di realizzare: selezioni, proiezioni, ridenominazioni - Con più relazioni nella from si realizzano join e prodotti cartesiani Select→proj From→join/PC Where→sel-join SQL: ESECUZIONE DELLE INTERROGAZIONI - Le espressioni SQL sono dichiarative e noi ne stiamo vedendo la semantica - In pratica i DBMS eseguono le operazioni in modo efficiente , ad esempio: →eseguono le selezioni al più presto → se possibile, eseguono join e non prodotti cartesiani - Le capacità dei DBMS di “ottimizzare le interrogazioni, rende (di solito) non necessario preoccuparsi dell’efficienza quando si specifica un’interrogazione, a favore della chiarezza ESERCIZI ALTRI COMANDI DI BASE SQL Ci fa capire come cambiare lo schema e le istanze MODIFICHE DEGLI SCHEMI SQL offre delle primitive per modificare schemi già introdotti, attraverso l’uso dei comandi: - Alter: effettua modifiche (a domini, tabelle..). Ad esempio posso aggiungere una colonna a una relazione - Drop (domain, table): permette di rimuovere i vari componenti di domini e tabelle. Ad esempio posso cancellare una tabella. - Si possono imporre delle restrizioni OPERAZIONI DI AGGIORNAMENTO DATI SQL offre le seguenti operazioni di aggiornamento dei dati: - INSERIMENTO: INSERT Il comando insert into inserisce righe nella base di dati. Un esempio di una delle possibili sintassi: persone (Nome, Età; Reddito) insert into Persone values (“Mario”, 25, 52) insert into Persone(Nome, Età; Rddito values (“Pino”, 25, 52) inser into Persone(Nome, Reddito) values(“Lino”, 55) - ELIMINAZIONE: DELETE Il comando delete permette di eliminare righe da una tabella Delete from NomeTabella [from Condizione] →se non specifico la clausola where, cancello tutte le righe →se esiste un vincolo di integrità referenziale gestito con cascade, allora la cancellazione può generare una reazione una reazione a catena Esempi: eliminare le righe che hanno nome “produzione” come valore dell’attributo NomeDip: delete from Dipartimento where NomeDip=”Produzione” eliminare i poeti inglesi dalla relazione poeta Poeta(COD, Nome, Cognome, Nazionalità Delete from POETA Where Nazionalità=”inglese” - MODIFICA: UPDATE Il comando update permette di aggiornare una o più attributi delle righe che soddisfano una certa condizione Esempio. Update Impiegato set Stipendio=Stipendio+5 Where “Dipart”=”Amministrazione” Coinvolgono una o più ennuple di una relazione Si applicano sulla base di una condizione che può coinvolgere anche altre relazioni Esercizi ® Altra relazione OPERA (Codice, Titolo, Anno, CodA) ARTISTA(Cod, Nome, Cognome) (vi.r tra CodA di OPERA e ARTISTA (quindi attributo Cod) ©® Una base di dati “musicale” CANZONE (CodC, Titolo, Anno, Album, CodiceA) CANTAUTORE (Codice Autore, Nome, Cognome, Nazionalità, DataN) supponiamo di avere un vincolo di integrità referenziale tra CodiceA di CANZONE e CANTAUTORE (CodiceAutore). Scrivere le seguenti query in SQL Qim: Titolo delle canzoni scritte nel 1965 Q2m: Anno e album delle canzoni dal titolo “Gravity” Q3m: Titolo e anno delle canzoni di Fabrizio De André QUm: Titolo degli album delle canzoni di Freddie Mercury scritte dopo il 1975 Q5m: Codice e Anno delle canzoni di Brennan Heart scritte prima del 2015. Q6m: Codice degli autori della canzoni dal titolo ‘Piove’ nati dopo il 1960. Riprendiamo la base di dati popola BD3(MATERNITA”, PATERNITA’, REDDITO) MATERNITÀ” PATERNITÀ” Figlio Madre Figlio Maria Luisa Franco Luigi Luisa Matteo Olga Anna Olga Filippo Anna Filippo Andrea | Maria Andrea Aldo Maria Aldo ESIEBLENNEN PROGETTAZIONE DI BASI DI DATI – metodologie e modelli - Finora abbiamo visto modelli (ovvero modalità di descrizione dei dati) e linguaggi (ovvero modalità di definizione-manipolazione dei dati) supponendo di avere delle basi di dati già esistenti - Pensiamo invece di dover partire dalla realtà dalla realtà e di dover progettare la base di dati - Proviamo a modellare una applicazione definendo direttamente lo schema logico della base si dati: da dove cominciamo? Il modello relazionale è adatto? La progettazione di un sistema informativo riguarda due aspetti: - Progettazione dei dati - Progettazione delle applicazioni MA i dati hanno un ruolo centrale e sono più stabili. Fisico com’è all’interno del dbms. MODELLO DEI DATI - Insieme di costrutti utilizzati per organizzare i dati di interesse e descriverne la dinamica - Componente fondamentale: meccanismi di strutturazione (o costruttori tipo) - Come nei linguaggi di programmazione esistono meccanismi che permettono di definire nuovi tipi, così ogni modello di dati dei dati prevede alcuni costruttori - Ad esempio , il modello relazionale prevede il costruttore relazione, che permette di definire insiemi di record omogenei DUE TIPI (PRINCIPALI) DI MODELLI - Modelli insieme di costrutti utilizzati per organizzare i dati di interesse e descriverne la dinamica - Modelli logici: utilizzati nei DBMS esistenti per l’organizzazione dei dati - Modelli concettuali: permettono di rappresentare i dati in modo indipendente da ogni sistema →cercano di descrivere i concetti del mondo reale →Sono utilizzati nelle fasi preliminari di progettazione il più noto è il modello entità-relazione →IDENTIFICATORE Strumento” per l’identificazione univoca delle occorrenze di un’entità →interno attributi dell’entità= chiave →esterno attributi+entità esterne attraverso relazione - Gli identificatori esterni vengono utilizzati spesso, quelli interni non sono sufficienti ad identificare univocamente le occorrenze - Un identificatore può coinvolgere uno o più attributi - Un identificatore esterno può coinvolgere uno o più entità - Un’identificazione esterna è possibile solo attraverso una relazione a cui l’entità da identificare partecipa con cardinalità (1,1) - Ogni entità deve possedere almeno un identificatore, ma può averne in generale più di uno →GENERALIZZAZIONE - Nel modello E-R è possibile rappresentare gerarchie tra concetti - Una generalizzazione mette in relazione una o più entità E1, E2…, En (dette entità figlie) con una entità E (detta entità genitore) che le comprende come casi particolari - Le entità figlie specializzano il concetto dell’entità genitore, che lo modella in modo più generico Ereditarietà→tutte le proprietà (attributi, relazioni, altre generalizzazioni) dell’entità genitore vengono ereditate dalle entità figlie e non rappresentate esplicitamente. Esiste una tassonomia delle generalizzazioni. Nota da sapere: il modello logico relazionale, a differenza di E-R, non prevede la modellazione di concetti gerarchici. →CARDINALITA’ →di relazione→ Coppia di valori associati ad ogni entità che partecipa a una relazione I valori specificano il numero minimo e massimo di occorrenze delle relazioni cui ciascuna occorrenza di una entità può partecipare Per semplicità usiamo solo 3 simboli: - 0 e 1 per la cardinalità minima: →0 = “partecipazione opzionale” →1 = “partecipazione obbligatoria” - 1 e N per la massima: N non pone alcun limite 0 puo anche non esserci nessuna partecipazione opzionale → di attributo È possibile associare delle cardinalità anche agli attributi, con due scopi: - Indicare →opzionalità “informazione incompleta”, cardinalità (0,_) →obbligatorietà, cardinalità (1, _) - Indicare attributi multivalore, cardinalità (_ , N) Nota: nella maggior parte dei casi la cardinalità di un atttributo è (1, 1) e viene omessa Esempio: Nel modello E-R rappresentato, le cardinalità esprimono ad un impiegato deve essere assegnato almeno 1 incarico ma non più di 5, e un certo incarico può non essere assegnato a nessun impiegato, oppure ad un numero di impiegati minore o uguale a 50. ESEMPIO DI UNO SCHEMA E-R ENTITA’: SCHEMA E ISTANZA - Data la definizione di entità come classe di oggetti è necessario definire la correlata nozione di Occorrenza (istanza) di entità: elemento della classe esempio: Matisse dell’entità pittore - Nota: nello schema concettuale rappresentiamo le entità, e non le singole istanze. Questo perché si lavora ad un alto livello di “astrazione” RAPPRESENTAZIONE GRAFICA DI ENTITA’ ENTITA’: COMMENTI Ogni entità ha un nome che la identifica univocamente nello schema: → è utile usare nomi espressivi →opportune convenzioni sul nome: uso del singolare PROBLEMA E SOLUZIONE - Il fatto che non possono esserci delle coppie (o ennuple) ripetute tra le occorrenze di una relazione del modello E-R può creare dei problemi espressivi, se il modello non è abbastanza strutturato - Nell’esempio precedente non è possibile descrivere se uno studente ha sostenuto un esame più volte - “promuovendo” la relazione ad entità si può modellare anche questa informazione Quindi esame diventa “entità”. ESEMPIO MODIFICATO CON ENTITA’ ESAME ESEMPIO ELIMINAZIONE ATTRIBUTI MULTIVALORE: si crea una nuova entità per rappresentare l’attributo eliminato e una nuova relazione che la collega a quella di partenza Esempio SCELTA DEGLI IDENTIFICATORI PRINCIPALI - Operazione indispensabile per la traduzione nel modello relazionale nel quale le chiavi giocano un ruolo fondamentale, stabilendo relazioni tra i valori di relazioni diverse - Criteri: →Non scegliere attributi che ammettono valori nulli →Scegliere identificatori semplici (costituiti da uno o pochi attributi), anche da preferire ad identificatori esterni →Scegliere attributi di utilizzo nelle operazioni più frequenti o importanti TRADUZIONE VERSO IL MODELLO RELAZIONALE La seconda fase della progettazione logica prevede una traduzione tra modelli diversi: a partire da uno schema E-R ristrutturato si costruisce uno schema logico equivalente. Partiamo quindi da uno schema senza generalizzazione ed attributi multi valore Idea di base: - Le entità diventano relazioni (tabelle) sugli stessi attributi (più eventualmente altri in certi casi) - Le relazioni diventano relazioni (tabelle) sugli identificatori delle entità coinvolte (più gli attributi propri) - Se gli attributi sono opzionali in E-R possono assumere valori nulli TRADUZIONI DELLE RELAZIONI Per le relazioni si deve prima di tutto esaminare la cardinalità: - Le relazioni “molti a molti” devono essere tradotte in tabelle a se stanti che hanno come attributi gli eventuali attributi della relazione e (da non dimenticare) le chiavi di entrambe le entità collegate dalla relazione, con le quali sussisteranno vincoli di integrità referenziale (le tabelle corrispondenti alle entità sono quelle esterne) - Le relazioni “uno a molti” si possono inglobare nella tabella che traduce l’entità. Che partecipa alla relazione con cardinalità 1 e che conterrà attributi corrispondenti alla chiave dell’altra entità (che partecipa con N) e con i quali sussisterà un vicolo di integrità referenziale - Le relazioni “uno a uno” Z come le “uno a molti”, a scelta nell’una o nell’altra tabella (solo un caso particolare dell’uno a molti Due possibilità simmetriche e valide: fondere la relazione da una parte o dall’altra - Le relazioni con identificazione esterna rappresentano un caso a parte e richiedono una traduzione che tenga conto dell’identificazione TRADUZIONE: RIDENOMINAZIONI Nota: può servire usare nomi più espressivi per gli attributi della chiave della relazione che rappresenta la relazione Impiegato(Matricola, Cognome, Stipendio) Progetto(Codice, Nome, Budget) Partecipazione(Matricola, Codice, DataInizio)→ Partecipazione(Impiegato, Progetto, DataInizio) CASO PARTICOLARE: CARDINALITA’ MINIMA Impiegato(Codice, Cognome, Stipendio) Dipartimento (Nome, Sede, Telefono, Direttore, InizioD) Con vincolo di integrità referenziale tra Direttore e Codice, senza valori nulli TRADUZIONE DELLE ENTITA’ CON IDENTIFICAZIONE ESTERNA L’entità identificata esternamente di traduce in una tabella che nella chiave includa gli identificatori delle entità identificanti. Nota: ricordare che l’identificazione esterna è possibile solo quando l’entità partecipa all’associazione con cardinalità (1,1). In base alle regole di traduzione, la sua traduzione ingloberà l’associazione. ESEMPIO TRADUZIONE ENTITA’ CON IDENTIFICAZIONE ESTERNA Con vincolo di integrità referenziale tra Università (tabella Studente) e Nome
Docsity logo


Copyright © 2024 Ladybird Srl - Via Leonardo da Vinci 16, 10126, Torino, Italy - VAT 10816460017 - All rights reserved