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


Introduzione al Modello Relazionale dei Database, Appunti di Elementi di Informatica

Appunti di informatica documentale con teorie ed esercizi

Tipologia: Appunti

2019/2020

Caricato il 07/07/2020

A.LISA98
A.LISA98 🇮🇹

4.5

(15)

24 documenti

1 / 81

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
INFORMATICA DOCUMENTALE
1. Introduzione alle Basi di Dati.
2. Il modello relazionale: relazioni, chiavi, vincoli.
3. Richiami di Algebra Relazionale: selezione, proiezione, join, operatori insiemistici.
4. Il linguaggio SQL: definizione dati, manipolazione dati, interrogazioni.
5. Il modello E-R (Entità e Relazione): entità, relazioni, attributi.
6. Progettazione di basi di dati; progettazione concettuale, cenni di pro-gettazione logica;
ristrutturazione di schemi E-R e traduzione dal modello E-R al Modello Relazionale)
METODO DI STUDIO CONSIGLIATO:
Studio teorico, allenarsi a ragionare sui concetti, scavalcando lo studio mnemonico
Svolgimento di esercizi!
COSA VEDREMO
Nozioni generali: dato, informazione, basi di dati, DBMS, sistemi informativi
Modelli logici dei dati: come organizzare i dati seguendo costrutti formali (definizione logica
dei database)
Come “interrogare” (fare domande) i database
Come progettare concettualmente i database
ESAME
Esame scritto. Venti domande a risposta aperta o multipla.
Domande di teoria ed esercizi.
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 organizzarli e una rete che ne permetta la condivisione.
Contenuti chiave
Modelli per l’organizzazione dei dati (es. modello relazionale) ho dei dati e devo
organizzarli in modo da poterli recuperare e recuperare informazioni complesse
Linguaggi per l’utilizzo dei dati mi permettono di strutturare il database e porre domande
al mio database (SQL, linguaggio di interrogazione che sta sotto ad esempio ad acces del
pacchetto office)
Metodologie di progettazione di basi di dati ! tradizionalmente si parte dai modelli ma noi
facciamo l’opposto. Utilizziamo la modellazione concettuale che mi fa passare dal mondo
reale per estrarre informazioni necessarie per formare il database
Perché?
La comunicazione prevede lo scambio e quindi la trasmissione e il recupero di informazioni.
Le informazioni devono essere conservate, aggiornate e gestite in modo efficiente.
“...non ci sono informazioni migliori delle altre, il potere sta nello schedarle tutte, e poi cercare le
connessioni…” (Umberto Eco, Il pendolo di Foucault)
Sistemi informativi, Informazioni e Dati
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f
pf30
pf31
pf32
pf33
pf34
pf35
pf36
pf37
pf38
pf39
pf3a
pf3b
pf3c
pf3d
pf3e
pf3f
pf40
pf41
pf42
pf43
pf44
pf45
pf46
pf47
pf48
pf49
pf4a
pf4b
pf4c
pf4d
pf4e
pf4f
pf50
pf51

Anteprima parziale del testo

Scarica Introduzione al Modello Relazionale dei Database e più Appunti in PDF di Elementi di Informatica solo su Docsity!

INFORMATICA DOCUMENTALE

  1. Introduzione alle Basi di Dati.
  2. Il modello relazionale: relazioni, chiavi, vincoli.
  3. Richiami di Algebra Relazionale: selezione, proiezione, join, operatori insiemistici.
  4. Il linguaggio SQL: definizione dati, manipolazione dati, interrogazioni.
  5. Il modello E-R (Entità e Relazione): entità, relazioni, attributi.
  6. Progettazione di basi di dati; progettazione concettuale, cenni di pro-gettazione logica; ristrutturazione di schemi E-R e traduzione dal modello E-R al Modello Relazionale) METODO DI STUDIO CONSIGLIATO:
    • Studio teorico, allenarsi a ragionare sui concetti, scavalcando lo studio mnemonico
    • Svolgimento di esercizi! COSA VEDREMO
    • Nozioni generali: dato, informazione, basi di dati, DBMS, sistemi informativi
    • Modelli logici dei dati: come organizzare i dati seguendo costrutti formali (definizione logica dei database)
    • Come “interrogare” (fare domande) i database
    • Come progettare concettualmente i database ESAME
    • Esame scritto. Venti domande a risposta aperta o multipla.
    • Domande di teoria ed esercizi. 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 organizzarli e una rete che ne permetta la condivisione. Contenuti chiave
    • Modelli per l’organizzazione dei dati (es. modello relazionale) → ho dei dati e devo organizzarli in modo da poterli recuperare e recuperare informazioni complesse
    • Linguaggi per l’utilizzo dei dati → mi permettono di strutturare il database e porre domande al mio database (SQL, linguaggio di interrogazione che sta sotto ad esempio ad acces del pacchetto office)
    • Metodologie di progettazione di basi di dati → tradizionalmente si parte dai modelli ma noi facciamo l’opposto. Utilizziamo la modellazione concettuale che mi fa passare dal mondo reale per estrarre informazioni necessarie per formare il database Perché?
    • La comunicazione prevede lo scambio e quindi la trasmissione e il recupero di informazioni.
    • Le informazioni devono essere conservate, aggiornate e gestite in modo efficiente. “...non ci sono informazioni migliori delle altre, il potere sta nello schedarle tutte, e poi cercare le connessioni…” (Umberto Eco, Il pendolo di Foucault) Sistemi informativi, Informazioni e Dati

Parole chiave

- Base di Dati : insieme organizzato di dati utilizzati per il supporto allo svolgimento di attività (di un 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 (Accad. di Francia) Due anime:

  • metodologica - tecnologica *ALTO LIVELLOquello vicino a noi, all’utente, al linguaggio formale BASSO LIVELLOquello più vicino all’hardware e lontano da noi* **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 esplicitate nella struttura
  • Il sistema informativo è di supporto ad altri sottosistemi, e va quindi studiato nel contesto in cui è inserito Gestione delle informazioni
  • Raccolta, acquisizione dei dati (es. la biblioteca raccoglie i libri)
  • Archiviazione, conservazione
  • Elaborazione, trasformazione, produzione (componente dinamica)
  • Distribuzione, comunicazione, scambio (scambiare informazione e comunicare → tornare al principio) **Sistemi informativi e automazione
  • Il concetto di “sistema informativo” è indipendente da qualsiasi automatizzazione** -esistono organizzazioni la cui ragion d’essere è la gestione di informazioni (per esempio servizi anagrafici e banche) e che operano da secoli **Sistema informatico
  • porzione automatizzata dal sistema informativo:** parte del sistema informativo che gestisce informazioni con tecnologia informatica (una parte si automatizza per rendere più condivisibili e fruibili i contenuti a tutti) Sistema > Sistema organizzativo > Sistema informativo > Sistema informatico Gestione delle informazioni
  • Nelle attività umane, le informazioni vengono gestite in forme diverse : -idee informali -linguaggio naturale (scritto o parlato, formale o colloquiale, in varie lingue) -disegni, grafici, schemi -numeri e codici
  • e vari supporti -mente umana, carta, dispositivi elettronici Informazioni e dati
  • Nei sistemi informatici (e non solo), le informazioni vengono rappresentate in modo essenziale, spartano: attraverso i dati (definizioni dal Vocabolario della lingua italiana 1987)

ricercare dati, ma fornisce solo semplici meccanismi di accesso e di condivisione. Secondo questo approccio , le procedure scritte in un linguaggio di programmazione sono completamente autonome; ciascuna di esse definisce e utilizza uno o più file “privati”. Eventuali dati di interesse per più programmi sono replicati tante volte quanti sono i programmi che li utilizzano, con evidente ridondanza e incoerenza. Es. In un’università, le informazioni relative ai docenti possono essere utilizzate in vario modo e da diverse persone o uffici; le basi di dati, gestendo in modo integrato e flessibile le informazioni di interesse per diversi soggetti, limitano i rischi di ridondanza e incoerenza. Sistema di gestione di basi di dati DataBase Management System (DBMS)

  • Sistema che gestisce collezioni di dati:
  • grandi
  • persistenti
  • condivise garantendo
  • privatezza
  • affidabilità
  • efficienza
  • efficacia DBMS
  • Prodotti software (complessi) disponibili sul mercato, esempi:
  • DB -Oracle -SQLServer -MySQL -PostgreSQL -Access -Base (suite LibreOffice) Le basi di dati
  • Supportano grandi dimensioni (molto) maggiori della memoria centrale dei sistemi di calcolo utilizzati (centinaia di Terabyte). Il limite deve essere solo quello fisico dei dispositivi.
  • Sono persistenti , ovvero hanno un tempo di vita indipendente dalla singole esecuzioni dei programmi che le utilizzano
  • Sono condivise. Una base di dati è una risorsa integrata, condivisa fra applicazioni (settori del sistema informativo). Sono condivise nel senso che applicazioni e utenti diversi devono poter accedere, secondo opportune modalità, a dati comuni. -Attività diverse su dati condivisi: meccanismi di autorizzazione -Accessi di più utenti ai dati condivisi: controllo della concorrenza
  • Devo gestire problemi di ridondanza (sorge quanto più aumenta la mole dei dati): (informazioni ripetute) e incoerenza: (versioni possono non coincidere; esempio: sull’orario del corso di Informatica documentale su un sito c’è scritto che è in Aula t2, nell’altro in 2.1) I DBMS garantiscono l' affidabilità , cioè la capacità del sistema di conservare sostanzialmente intatto il contenuto della base di dati in caso di malfunzionamenti hardware e software. Garantiscono la privatezza dei dati. Ciascun utente, opportunamente riconosciuto viene abilitato a svolgere solo determinate azioni sui dati, attraverso meccanismi di autorizzazione (vedi sopra). Essi sono efficienti , cioè capaci di svolgere le operazioni utilizzando un insieme di risorse (tempo e spazio) che sia accettabile per gli utenti. Essi sono efficaci in quanto sono capaci di rendere produttive le attività dei loro utenti. La forma tabellare è la forma del modello relazionale

Archivi e basi di dati: 1 Gestione orario lezioni 2 Gestione ricevimento Se faccio un’unica Base di dati (1+2) e non due Archivi distinti (1 e 2), vi è meno possibilità di avere ridondanza e incoerenza. DBMS vs file system

  • La gestione di insiemi di dati grandi e persistenti è possibile anche attraverso sistemi più semplici - gli ordinari file system dei sistemi operativi
  • I file system prevedono forme rudimentali di condivisione: “tutto o niente”
  • I DBMS estendono le funzionalità dei file system, fornendo più servizi ed in maniera integrata Descrizioni dei dati nei DBMS Rappresentazioni dei dati a livelli diversi -permettono l’indipendenza dei dati dalla rappresentazione fisica:
  • i programmi fanno riferimento alla struttura a livello più alto, e le rappresentazioni sottostanti possono essere modificate senza necessità di modifica dei programmi -precisiamo attraverso il concetto di
  • modello dei dati Voglio avere a disposizione un astrazione più vicina al mio modo di ragionare, fatta in modo che le rappresentazioni sottostanti (cioè quelle vicine al livello macchina) siano completamente indipendenti, cioè se appunto voglio modificare, non devo modificare la rappresentazione astratta dei dati. - Modello dei dati : Insieme di costrutti utilizzati per organizzare i dati di interesse e descriverne la dinamica (da libro → “insieme di concetti utilizzati per organizzare i dati di interesse e descriverne la struttura in modo che essa risulti comprensibile a un elaboratore”)
  • Componente fondamentale: meccanismi di strutturazione (o costruttori di tipo)
  • Come nei linguaggi di programmazione esistono meccanismi che permettono di definire nuovi tipi, così ogni modello dei dati prevede alcuni costruttori
  • Esempio: il Modello Relazionale prevede il costruttore relazione, che permette di definire insieme di record omogenei (modello più diffuso)
  • Altri modelli: Modello gerarchico; reticolare; a oggetti; XML; semistrutturati e flessibili (vedi pag. 6-7 libro) ORGANIZZAZIONE DEI DATI IN UNA BASE DI DATI Es. Orario: Insegnamento - Docente - Aula - Ora Base di dati: schema e istanza Lo schema della base di dati → Docente (parte statica) L'istanza della base di dati (L'istanza sono le righe della tabella, la parte dinamica, quella che cambia) I dati hanno una validità molto specifica per l'utente. Quello che compare nelle righe cambia con il tempo. Gli orari di anno in anno possono cambiare. L'istanza rappresenta la base per l'estrazione della conoscenza. Io progetto lo schema, non i dati.

Il modello relazionale è uno dei possibili modelli e ci dice come rappresentare il dato nella nostra base di dati. Distinzione tra dato e informazione dato è un qualcosa di primitivo che sintatticamente riconosciamo e l’informazione è il dato contestualizzato quindi dato con in più una semantica. dato è qualcosa di immediatamente presente alla conoscenza qualcosa di primitivo che noi sintatticamente riconosciamo, informazione è qualcosa di più, ovvero il dato contestualizzato rispetto a conoscenza il nostro interesse e rispetto a un contesto una semantica. Quindi quando si cerca di stabilire metodi formali per strutturare le basi di dati si guarda i dati e informazioni quindi qualcosa che è più semplice. Modelli logici ci dicono come strutturare i dati e Come funziona un concetto chiave collegare tra loro ci sono stati introdotti da diversi decenni Ce ne sono diversi , noi ci concentreremo su quello relazionale che Sostanzialmente è quello che ha avuto più successo a livello mondiale e che frequentemente troverete implementato nei data base … system, che sono questi gestori di base dati. Tre modelli logici tradizionali: Gerarchico, Reticolare e Relazionale. Più recenti: a oggetti, basato su XML.. Essi che condividono e dualmente si differenziano per alcune caratteristiche fondamentali e noi andremo a scegliere il modello che non solo ha avuto più successo,ma che è il più semplice, è il modello relazionale cioè un modello basato sui valori e vuol dire sostanzialmente che noi non andiamo mai a memorizzare un'informazione collaterale ovvero non vado mai a memorizzare il fatto che due dati presenti in strutture che saranno tabelle come abbiamo anticipato nell'introduzione che si ameranno relazioni, sono collegati tra loro ovvero Se ho lo stesso Dato in diverse non devo mantenere questa informazione di compresenza ma sarà l'occorrenza del dato stesso in tabelle diverse a sancire il legame. Molto conveniente perché mi permette di tenere traccia di una quantità minore di formazione io per spiegare questo concetto che quindi ci fa scegliere modello relazionale rispetto ad altri modelli mi faccio vedere subitoun esempio. Tre tabelle che vanno a modellare dominio di conoscenza relativo ovviamente all’università. Prima tabella con informazioni anagrafiche degli studenti. Una tabella relativa agli esami e nella terza tabella con il titolo del corso e il professore. Esiste occorrenza di dati nelle diverse tabelle. Ecco perchè modello relazionale è basato su valori. Modello relazionale introdotto nel 1970 da Codd per favoriure l’indipendenza dei dati. Livelli intermeti (tra macchina e uomo) devono essere indipendenti. I dati devono essere indipendenti portabili da un software all’altro. Disponibile in DBMS nel 1981. Si basa sul concetto matematico di relazione. Le relazioni hanno naturale rappresentazione per mezzo di tabelle. Tabelle sono modo per ragionare e vedremo le strutture e come andiamo a formalizzare il concetto di tabelle e i vincoli di integrità che sono restrizioni che noi andiamo a imporre per garantire che a una relazione del modello relazionale sintatticamente corretta, corrispondano anche delle istanze semanticamente corrette. Parola RELAZIONE si una per 3 cose diverse: Relazione matematica è quella della teoria degli insiemi. Relazione di Codd e la Relazione che è insieme di concetti del modello entità e relazione. Relazione matematica: è un sottoinsieme del prodotot cartesiano tra insiemi diversi. Esempio— ci sono due insieme D1(a, b) e D2(x,y,z) e prodotto cartesiano si indica D1 x D2 ovvero si fa a moltiplicato per x e per y e per z e poi b moltiplicato per x, poi y e poi z. Queste sono le possibiili coppie. Relazione è insieme di coppie in cui primo elemento della coppia proviene dal primo insieme e il secondo elemento della coppia proviene dal secondo insieme. a moltiplicato con x o con z e b moltiplicato con y. Prodotto cartesiano siindica con D1X e sono una sequenza di vari elementi I domini della relazione sono D1, D2,D3….. FINO Dn. Queste sequenze hanno una nozione di ordine. Ogni relazione matematica è insieme di N-uple ordinate. Una relazione è un insieme cioè fra le varie n-uple non cè un ordinamento quindi posso prenderle nell’ordine che preferisco le coppie. 1.La prima propietà è che non sono ordinate

  1. sono distinte e non ci sono duplicati, elemetni compaiono una sola volta
  2. i-esimo valore proviene dall’i-esimo dominio. Relazione “partite” è un sotto insieme del prodotto cartesiano degli insiemi string, string, int, int.

Juve Lazio 3 1 Lazio Milan 2 0 Ciascuno dei domini ha ruoli diversi, la loroposizione è rilevante, se scambio colonne e ordine cambia risultato della partita. Se scambio prima e seconda riga informazione è ancora corretta, però l’ordine delle colonne va mantenuto. Nel modello relazionale io voglio avere una struttura non posizionale ovvero non voglio che conti nè l’ordine delle righe nè delle colonne. Quindi si da un nome alle colonne, che si chiamano Attributi. Casa Fuori RetiCasa RetiFuori Juve Lazio 3 1 Nel modello relazionale ordinamento delle righe irrilevante e così deve essere irrilevanante anche quello delle colonne. Tabella che rappresenta una relazione se ha le righe tutte diverse, se le intestazioni delle colonne sono diverse tra loro. (non posso usare due nomi uguali per colonne diverse, nel database lo posso fare però). E valori di ogni colonna sono omogenei. Modello è basato sui valori ovvero i collegamenti tra dati e relazioni non sono rappresentati in realtà ma sono rappresentati dai valori dei domini. Tabella rappresenta relazioni se righe son diverse tra loro, intestazioni diverse e valori di ogni colonna sono omogenei fra loro. Modello è basato sui valori. I vantaggi sono legati all’indipendenza dalle strutture fisiche ed essa può cambiare dinamicamente, si rappresenta solo ciò che è rilevante dal punto di vista dell’applicazione quindi si rappresenta solo il dato stesso. I dati diventano più facilmente portabili e cè aderenza tra dato che vede utente finale e dato che vede il programmatore. Essi vedono gli stessi dati, questo puntatore tra i dati non ce. Altri modelli prevedono dei riferimenti epliciti. Agganciando relazioni diversi potrò reperire informazioni più complesse. Join: è unione e collegamento tra tabelle diverse. Posso colloegare studenti ai corsi perchè ho informazioni coopresenti nelle tre tabelle. Schema di relazione: Mia tabella avrà : Un nome R STUDENTI (MATRICOLA COGNOME NOME DATA DI NASCITA) ESAMI (STUEDENTE VOTO E CORSO), CORSI (CODICE TITOLO DOCIENTE)e sarà caratterizzata da insieme di colonne. R (R1(X1)… r1 può essere studenti o esami o corsi e x1 è la sequenza matricola cognome data nascita. Quindi studenti esami e corsi sono nel secondo punto r1 x1, r2 x2, rk xk. X grande è l’insieme degli attributi. t[A] denota il valore della ennupla t sull’attributo A Ennupla è insieme di elementi o attribuiti viene dalla teoria degli insiemi e tupla è sinonimo di ennupla. Una ennupla su insieme di attributi X è una funzione che associa a ciascun attributo del valore del dominio di A. Ennupla e tupla sono le righe di queste tabelle. Ed è definita dai dati che la compongono. Il dominio di A quindi l’insieme di provenienza è insieme string, vado a valutare l’attributo e ottengo il dato che occore.. Casa Fuori RetiCasa RetiFuori Juve Lazio 3 1 …. … Prima riga: t[casa] = juve Quindi t con A denota il valore che occorre su una riga in corrispondenza di una certa colonna Esistono tabelle con 1 colonna? Si e possono avere senso e esistono tabelle con solo l’intestazione. Quando vado a creare una relazione vado a creare la struttura e solo successivamente vado a mettere i dati e quindi a popolarla. Può avere zero colonne? no non ha senso, almeno 1 la deve avere. Strutture nidificate (non le chiede all’esame).

Restrizioni che dvo mettere devono essere poi tradotti, nessun utente deve proccuparsi, c’è possibilità di imporre vincoli per menatenere integrità semantica. si mettono per descrivere in modo accurato la realtà. Qualità del dato, dato deve essere corretto. Vincoli di integrità perche? descrizione più accurata della realtà, contributo alla qualità dei dati, utili dai dbms nella esecuzione delle interrogazioni. Magari diventa scorretto perchè base dati non viene aggiornata. Vincoli sono utili nella progettazione è utile tenere in mente che integrità semantica fa parte della scelta di progettazione concettuale e entrano in gioco anche quando si eseguono le interrogazione nei data base managament system. (estrarre informazioni) La possibilità d venir supportati dalle dbms esso gestisce tutti i casi e ci sono anche vincoli non supportati e sono lasciati alla responsabilità dell’utente o del programmatore. Vincoli njon supportati è raro che capitino. I tipi di vincoli: Vincoli intrarelazionali (vincolo definito rispetto alle singole relazioni della BdiD), definito entro la singola tabella, guardo la tabella dei voti ad esempio e riscontro il fatto che i voti non rispettavano un formato che noi riconosciamo corretto nel sistema universitario. C’è una sottoclassificazione di essi che possono essere di ennupla o di Dominio. Quelli di ennupla esprimono una condizione indipendentemente dalle altre ennuple, guardo una riga e mi rendo conto che informazione globale di questa riga non è semanticamente corretta (esempio 27 e lode). Nel caso in cui mi basti guardare un solo attributo wuindi una sola casellina della tabella si tratta di Dominio (esempio il 32 di prima che non esiste), quindi posso risconare violazione di vincoli di domini. Vincoli Interrelazionali (tra relazioni diverse della BdiD) cioè coinvolgono più di una relazione. Ci occuperemo dei vincoli di integrità referenziale che andranno a garantire il legame tra le taballe, la copresenza del dato in mdo che possa aggangiare le informazioni. Lordo= ritenute + netto —> si vede che la somma è diversa ed è appunto un esempio di violazione di vincolo di ennupla. Identificazione delle ennuple: ovvero io voglio garantire una propietà insemistica delle righe e l’insieme delle righe ci dice che le righe devono essere tutte diverse e non ci devono essere duplicati. Voglio un modo per identificqare le righe senza andare a leggere tutta la riga. Quindi si legge un insieme di attributi che vanno a fungere da identificatore, spieghiamolo con un esempio: non ci sono mai due ennuple uguali sull’attributo matricola. Dobbiamo mettere il vincolo che ci impedisca di associare la stessa matricola a due studenti diversi. Se cancello tutte le colonne al di fuori di quella di matricola quello che rimane rappresenta un insieme e appunto rispetta ancora la definizione d’insieme. Matricola identifica univocamente le righe. posso farlo Con altri insieme di attributi? ad esempio tenendo matricola e cognome e cancellando le altre? non sto più rispettando la definizione di insieme ora perche avendo gia la matricola qualsiasi altra estensione ancora mantiene la propietà. Cognome può identificare le righe? no con solo questa colonna no. Con la coppia cognome e nome e buttando via matricola corso e nascita questa coppia mi viola la definizione quindi non si può. Cognome nome e data di nascita identificano univocamente le righe, però più allargo il range delle persone più è rischioso perchè posso trovare qualcuno che li abbia uguali. Definizione di Superchiave: è un sovra insieme, è un insieme di attributi che identificano univocamente le ennuple di una relazione. Vuol dire che se guardo tabella e guardo solo attributi della superchiave, gli attributi sono diversi quindi prese due ennuple distinte tra le righe se le valuto sugli altribbuti ottengo valori differenti, sse superchiave non contiene all’interno altra superchiave allora è una chiave anche. Sia matricola sia la tripla cognome nome e data di nascita sono entrambi una superchiave, non ho duplicati. C’è modo formale per esprimere lo stesso concetto: un insieme K di attributi è superchiave per r ove r è una redazione, se la redazione r non contine due ennuple distinte quindi due righe (r1 e r2), che valutate sullo stesso insieme di attributi sono uguali. Cognome non è superchiave perchè ho lo stesso valore su due righe e non mi permette di identificare univocamente le ennuple. Idem per cognome e nome. Se applico la definizione di funzione della tupla non vado mai a trovare lo stesso valore sugli stessi attributi.

Un insieme K è chiave per r se è una superchiave minimale per r (cioè non contiene un altra superchiave). Minimale vuol dire che non contiene al suo interno un’altra superchiave cioè è l’insieme minimo di attributi che mi serve per identificare univocamente le ennuple di una relazione. Matricola è una chiave, ma anche una superchiave e anche il più piccolo insieme che mi identifichi le ennuple di una relazione. Se prendo cognome nome e nascita questa tipla mi va ad identificare le righe e quindi è superchiave, e ci chiediamo se è minimale quindi se è anche chiave e quindi provo a buttarne via una tipo nascita ma vediamo che non lo è, anche nome è attributo che non può essere eliminato e quidni questa è altra chiave che non può essere ridotta. Anche cognome e Corso formano una chiave. Vincoli schemi e istante 1 I vincoli corrispondono a proprietà del mondo reale modellato dalla base di dati. Più voglio essere precisa più vincoli devo mettere (quindi devo verificare propietà logiche) 2 Interessano a livello di schema (con riferimento cioè a tutte le istante) vincoli riguardano lo schema ma pensati in generale per tutti i tipi di istanze. 3 Ad uno schema associamo un insieme di vincoli e consideriamo corrette (valide, ammissibili) le istanze che soddisfano tutti i vincoli. Vincoli di tupla, di dominio e superchiave e chiave 4 Un’istanza può soddisfare altri vincoli (“per caso”) sono corrette solo queste, le altre non le dobbiamo considerare perchè sono scorrette. Importante: esistenza delle chiave Esempio della matricola rende palese questa cosa, una relazione possa non contentere ennupe distinte e viene propriop dalla presenza delle chiavi che mi vanno a discriminare le righe. Una chiave esisterà sempre e ogni relazione avrà come superchiave l’insieme delgli attributi su cui è definita. Abbiamo garantito di non avere duplicati, non occoorrerà mai due volte la stessa riga quindi io leggendo una riga riesco a identificarla univocamente, però avendo della chiavi è molto più comodo per identificare le righe (nei data base viene generato automaticamente un identificativo per le righe che è un codice e viene fatto per comodità di identificazione). C’è altro argomento che è importante ovvero le chiavi mi assicurano di correlare i dati in relzioni diverse e entra in gioco la seconda classe di vincoli che sono quelli di integrità referenziale ovvero la presenza della chaive nelle relazioni fa si che noi possiamo garantire il collegamento tra relazioni diverse e quindi possibilità di recuperare informazioni complesse e estrarre infomrazione complessa appunto. Modello relazionale è modello logico per la descrizione dei dati, quello di Codd si basa su unico costrutto chiamato relazione ovvero le tabelle. I concetti chiave: nozione di relazione e come sia slegaata la definizione da qualsiasi posizionalità di dati, sia a livello di righe che di colonne, l’ordine non conta. Concetto di attributo. Definito una serie di propietà chiamato vincoli di integrità che vanno ad assicurare correttezza semantica a fronte di correttezza sintattica (ci possono essere istanze di relzione sintatticamente corrette ma non sono semanticamente corrette, es voti che non esistono). Vincoli di integrità si dividono in vincoli intrarelazionali cioè di tupla e dominio che coinvolgono una relazione e quelli interdisciplinari che coinvolgono più di una relazione. Definizione di Superchiave (come facciamo a identificare le righe?) è insieme di attributi di una relazione che identifichino univocamente le sue tuple. Prendo tabella e vedo attributi della superchiave, butto gli altri e vedo se sono ancora diverse le une dalle altre, se sono diverse sono ancora dentro la definizione. Requisito di minamilità: se superchiave non può essere ulteriormente ridotta e non riesco più a identificare le righe scartandone attributi allora sono in presenza di una chiave, qundi chiave è una superchiave minimale. Entrambi sono importanti perchè garantiscono accesso diretto a riga di una certa relazione e mi permettono di correlare i dati in relazioni diverse. Modelo relazionale di Codd è basato su valori quindi non memnorizzo altro che i dati stessi. Se è importante avere identificazione, come gestiamo la realtà di assenza di informazione? Categoria di chiavi che sono sepciali che ci permettono di affrontare l’assenza di informazioni: in presenza di valori nulli succede che valori della chiave non mi permettano di identificare le ennuple,( se tolgo numero di matricola non posso più associare studente al suo voto) e non mi

I linguaggi di interrogazione che ci permettono di fare le domande al nostro database. Si possono classificare in base alle loro caratteristiche e si dividono in linguaggi Dichiarativi e linguaggi Procedurali. Linguaggi dichiarativi: sono quei linguaggi che specificano direttamente le propietà del risultato cioè dei dati che vogliamo estrarre, (fa parte paarziarmente il linguaggio sql). Linguaggi Procedurali: quei ling in cui si specifica operazionalmente come si ottiene il risultato, esempio di procedure gli abbiamo fin dalla nascita (operazioni aritmetiche ecc) Linguaggi di interrogazione: algebra relazionale calcolo relazionale sql (linguaggio dichiarativo) (structured query language) Algebra relazionale: è un linguaggio procedurale basato su concetti di tipo algebrico, è definita partendo da un insieme di operatori che agiscono sulle relazione prendono in imput le tabelle e restituiscono in output altre tabelle. Date due funzioni f e g possiamo scrivere f di g di x dove x rappresenta l’imput. In modo funzionale possiamo creare delle domande sempre più complesse. Come si classificano gli operatori dell’algebra relazionale: Insiemistici (non li usiamo negli esercizi ed è solo da leggere la parte di questi): si applicano solo a tabelle, relazioni ecc definite sugli stessi attributi: e sono unione intersezione, differenza Tipici dell’algebra relazionale: e sono la ridenominazione (usato per operazioni insemistiche e non fa altro he cambiare i nomi delle colonne) , la selezione, proiezione e join. (ultime tre ci fanno elaborare le colonne per ottenere informazioni più specifiche). Ridenominazione (REN, p): in generale è utile cambiare nome di un attributo e questo attributo non modifica i dati ma solo intestazione della tabella, utile per facilitare operazioni insemistiche e utile ridenominare per dare nome più significativo. E’ operatore monadico e prende in ionput una sola cabella, lascia inalterata l’istanza, quindi da input a putput le righe sono le stesse. Ridenominazione di un insieme di attributi è un attributo o un insieme di attributi che vengono ridenominati da b con 1 b con 2 .. cambia nomi a con nomi b es. REN b1 b1 bx <——- a1 a2 ax (r) REN sede, retribuzione <—— ufficio, stipendio (IMPIEGATI) REN sede, retribuzione <—— fabbrica, salario (OPERAI) Operatori tipici dell’algebra relazionale: Selezione: σ oppure SEL Proiezione: π oppure PROJ Join Le prime due sono più semplici e in qualche modo sono operatori collegati tra loro perchè hanno comportamento ortogonale. Selezione ha doppia notazione (π oppure PROJ), è operatore monadico ovvero siamo lavorando su singole tabelle e qual è il suo comportamento, non va a modificare lo schema della relazione su cui viene applicata ovvero attributi rimangono inalterati sia nel nome che nel numero e la relazione tra tabella di input e putput conterrà le ennuple che soddisfano la condizione di selezione. Sintassi estratta vede applicazione della selezione con una condiizone con operando che sarà nome e sarà espressione boleana. Prendi una relazione e seleziona solo le righe che soddisfano la condizione che ho codificato come espressione boleana,. SELcondizione (Operando) Es. impiegati hanno matricola, cognome, filiale e stipendio (tabella). Di queste mi interessano solo quelli che guadagnano più di 50 e vorrei estrarre solo i dati di essi. Oppure che hanno stesso nome della filiale oppure che lavorano a milano e gudagnano piu di 50. Possiamo estrarre questi dati con la Selezione. Come si fa a codificare gli impiegati che gudagnano più di 50: guardiamo la colonna stipendio Come si fa a esprimere la domanda: SELstipendio>50 (impiegati)

Se avessi voluto includere anche quelle che guadagnano 50 avrei dovuto scrivere maggiore uguale. Chi guadagna più di 50 e che lavorano a milano: SELstipendio> AND filiale=‘Milano’(IMPIEGATI) Più vado a complicare la domanda più l’insieme delle tuple di output può diventare piccolo. Inoltre potrei non avere nessuna tupla che mi soddisfa la quiri (faccio una domanda ma non ci sono dati che corrispondano alla mai domanda, quindi io ho un output vuoto). Putput può anche essere vuoto quindi. Impiegati che hanno lo stesso nome della filiale in cui lavorano: SELcognome=filiale (IMPIEGATI) La parola impiegati è l’argomento che è anche il nome della tabella solitamente. Selezione quindi butta via delle righe, propone decomposizione che chiameremo ORIZZONTALE, lascia inalterato lo schema e butta via delle righe, nei due casi limite o non butta via niente perchè tutte le righe soddisfano la condizione oppure se nessuna riga la soddisfa ne tengo zero quindi c’è una tabella vuota con solo l’intestazione. Proiezione: ha dobbia notazione (π oppure PROJ), è un operatore monadico quindi agisce soltanto su una singola relazione, e produce un risultato che ha parte degli attributi della tabella di imput (proiezione modifica lo schema a livello di output quindi non terrà tutte le colonne) e contiene le ennuple cui contribuiscono tutte ennuple dell’operando (non va ad agire direttamente sulle righe ma agisce solo sulle colonne). Sintassi della semantica: c’è stringa riservata e lista di attributi con nome delle colonne e tra parentesi specificato l’operando: PROJ listaattrubuti(OPERANDO) Praticamente come se buttassi delle colonne. Per tutti gli impiegati voglio o la matricola e il cognome o il cognome e la filiale. Matricola e cognome: la quiri è PROJmatricola, cognome (IMPIEGATI) quindi elimino altre colonne e tengo solo quella di matricola e di cognome. Cognome e filiale: PROJcognome,filiale (IMPIEGATI) e ovviamente l’output saranno le due colonne cognome e filiale buttando via le altre due. Le righe(Le tuple) formano un insieme, se noi apppunto passiamo a cognome e filiale buttando via matricola e stipendio, partiamo da istanza corretta quindi e passiamo a un situazione dove non sono più in grado di distinguere le ultime due righe perchè ci sono duplicati. Se la proiezione va a creare sotto righe che violano la definizione di insime, l’algebra relazionale ne tiene solo una. E quindi c’è perdita di informazione. Caratteristica dell’algebra relazionale è appunto perdita dell’informazione. Posso a priori per gli operatori visti fin ora sapere, avere impotesi di numero massimo e minimo di righe che posso avere nell’istanza di relazione di putput? Si. La selezione non tocca le colonne ma tocca le righe e appunto posso avere anche zero righe o lo stesso numero di righe. Io posso proiettare su un solo attributo e posso avere anche un numero inferiore quindi non è detto che righe alla fine siano ugauli alla partenza, possono essere anche meno. Cardinalità delle proiezioni funziona così: contiene al più tante ennuple quante l’operando quindi nei casi in cui proiettandolo non ho duplicati può contenenere meno righe. Quando succede di averne meno? quando dopo proiezione tolgo di mezzo le superchiavi. Se proietto su sottoinsieme di attributii che non è superchiave, perdo identificazione univoca, se invece proietto su chaive o superchiave, non perderò mai righe perchè quella colonna svolgeva gia la funzione di identificare univocamente. Se X è una superchiave di R, allora PROJx(R) contiene esattamente tante ennuple quante R(in input) Selezione e proiezione sono operatori ortogonali tra di loro, la prima si definisce come operatore che decompone in modo orizzontale, tiene solo righe che rispondono alla mia domanda. E la seconda butta via le colonne e tiene solo quelle di interesse. con selezione vado a agire in orizzontale e con proiezione butto via delle colonne. queste due si possono combinare per ottenere info di interesse più sofisticato. CORPUS DEGLI OPERATORI DELL’ALGEBRA RELAZIONALE: operatori inemistici e operatori propri. I propri sono la redominazione delle colonne e operatori specifici che sono selezione e proiezione e operatore di join.

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.) —> si creano tabellone partendo da tabelle più piccole. Esistono due tipi di join: join naturale e theta-join. Quello naturale non lo utilizziamo negli esercizi. Il fatto che uno stesso dato sia presente in relazioni diverse, sancisce il legame tra queste due relazioni. So che ce stesso dato in tabelle diverse? se istanza è grande non posso verificarlo e le quiri esistono eprchè istanze cambiano e non conosco contenuto delel’istanza. so che modello relazionale sancisce legame tra tabelle diverse e sfrutto copresenza del dato per agganciare le due relazioni in particolare aggancio la riga della prima e la riga della seconda e ottengo un’informazione più grande. Esempio:prove scritte in un concorso pubblico. I compiti sono anonimi e ad ognino è associata una busta chiusa con il nome del candidato Ciascun compito e la relativa busta vengono contrassegnati con uno stesso numero. Abbiamo due relazioni che catturano soltanto l’istanza. Attributo numero è presenza sia nella prima che nella seconda relazione e troviamo stessa colonna in entrambe le relazioni, non solo è lecito avere lo stesso nome di attributo all’interno del database (proibito nella stessa relazione), queste due relazioni hanno una colonna in comune che ha stesso nome e prendiamo l’insieme di tutte le colonne e costruiamo l’altro pezzo di riga con le altre due colonne. Join naturale: ci serve per ragionare prepeudeticamente sull’altro tipo di join. è un operatore binario generalizzabile quindi può agire su piu tabelle e produce risultato su unione degli attributi degli operandi (se ci sono duplicati ne prendo uno) e le righe sono costruite da sottorighe che hanno valori uguali sugli attributi in comune ovvero con lo stesso nome. Vado a prendere la colonna Numero e aggancio in corrispondenza del valore corretto. Altro esempio è impiegati e ogni reparto associato a una persona, la copresenza dei dati ci garantisce un legame. Se facessi join naturale otterrei:

Particolarità relativa a questa istanza è che in questa io non perdo informazioni, i reparti sono gli stessi e ho stessi dati sia in reparto della prima tabella sia della seconda, tutte ennuple contribuiscono a risultato e quindi ho informazione completa e non è detto che tutte le righe siano cosi fortunate da trovare una controparte nell’altra tabella. Ogni ennuple contribuisce al risultato—> join naturale. A c’è solo in questa relazione e C c’è solo nell’altra. Abbiamo perso quindi inormazioni relative a rossi e bruni e abbiamo mantenuto quelle che avevano un dato condiviso. Alcune ennuple non contribuiscono al risultato: vengono tagliate fuori (“tuple danggling") Nessuna tupla degli operandi è combinabile!. Non ce modo di combinare le righe, teoricamente è ammissibile ma da un punto di vista dell’informazione io potrei essere interessata anche a informazioni parziali. Relazione vuota si rappresenta con solo totolo delle tabelle. Esiste anche JOIN COMPLETO CON N X M ENNUPLE: ovvero tutte le lettere che compaiono sono B ad esempio e ci sono nomi uguali. Il join esterno estende, con valori nulli, le ennuple che verrebbero tagliate fuori da un join interno. vaori nulli di tre tipi: estendo a sinistro, estendo a destro, estando da entrambe parti quindi completo. Sinistro: mantiene tutte le ennuple del primo operando, estendendole con valori nulli, se necessario Destro: .. del secondo operando .. Completo: .. di entrambi gli operandi ..

Interrogazioni in algebra relazionale: Un’interrogazione è una funzione che applicata a istanze della base di dati, produce relazioni. Più precisamente: dato uno schema R di base di dati, per ogni istanza r di R, l’interrogazione produce una relazione su un dato l’insieme di attributi X. In algebra relazionale, le interrogazioni su una base di dati R vengono formulate con espressioni le cui variabili(o operandi) sono (nomi di) relazioni in R. (quindi al posto delle variabili metto nomi concreti.) Un’equivalenza importante: esistono delle operazioni e degli studi sull’efficenza di queste operazioni. Quando si implementa ci sono delle considerazioni che vanno fatte per condizioni di efficenza, quando base di dati è grande ecc bisogna ottimizzare le informazioni e dato che il join è costoso e crea delle tabellone, quindi si tende di anticipare le selezioni, prima di mettere in join le tabelle butto via le righe che non mi iinteressano e questo è il Push selections.—> riduce in modo significativo la dimensione del risultato intermedio e quindi anche il costo dell’operazione. Quiri: trovare matricola, nome, età e stipendio degli impiegati che guadagnano più di 40. Primo domanda che mi devo fare è quante tabelle mi servono per rispondere a questa domanda? SELstipendio<40(IMPIEGATI) Le info le ho tutte nella tambella impiegati quindi non devo fare il Join. Me la cavo con una selezione. trovare matricola, nome, età degli impiegati che guadagnano più di 40.—> PROJmatricola, nome, età(SELstipendio<40(IMPIEGATI) Se volessi conoscere i loro capi degli impiegati che guadagnano più di 40: PROJcapo(Supervisione JOINimpiegato=matricola(SELstipendio>40(IMPIEGATI)) Equivalenza di espressioni: due espressioni sono equivalenti se producono lo stesso risultato qualunque sia l’istanza attuale della base di dati. L’equivalenza è importante in pratica perchè i DBMS cercano di eseguire espressioni equivalenti a quelle date, ma meno “costose”. Altri esercizi interrogazioni: Film(CodiceFilm, Titolo, Regista, Anno, CostoNoleggio) Artisti(CodiceAttore, Cognome, Nome, DataNascita, Nazionalità) Interpretazioni(CodiceFilm,CodiceAttore,Personaggio) Query: i titoli dei film per i quali il regista sia stato anche un interprete. Servono solo proiezione e equiJoin. SOLUZIONE: Lezione con esercizi: Algebra relazionale=linguaggio procedurale Q2: titoli dei libri scritti in francese prima del 1990 (non richiede join) Devo domandarmi su quali relazioni devo lavorare, in questo caso su LIBRI.

Le possibili variabili si scriveranno così: 1-PROJisbn,titolo (SEL linguaO=“Italiano”OR linguaO= “Francese”(LIBRO)) 2-PROJtitolo,anno (SEL linguaO=“Spagnolo” OR Anno>2010(LIBRO)) Risolvo le varianti: PROJisbn,titolo (SEL Anno=<“1975”(LIBRO)) PROJisbn,anno (SEL Anno=≤“1975”(LIBRO)) QUINDI ATTENZIONE A PRIMA, ENTRO, DOPO ECC E QUINDI A MINORE MAGGIORE MINORE UGUALE ECC