















Studia grazie alle numerose risorse presenti su Docsity
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Prepara i tuoi esami
Studia grazie alle numerose risorse presenti su Docsity
Prepara i tuoi esami con i documenti condivisi da studenti come te su Docsity
Trova i documenti specifici per gli esami della tua università
Preparati con lezioni e prove svolte basate sui programmi universitari!
Rispondi a reali domande d’esame e scopri la tua preparazione
Riassumi i tuoi documenti, fagli domande, convertili in quiz e mappe concettuali
Studia con prove svolte, tesine e consigli utili
Togliti ogni dubbio leggendo le risposte alle domande fatte da altri studenti come te
Esplora i documenti più scaricati per gli argomenti di studio più popolari
Ottieni i punti per scaricare
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Riassunto Manuale di informatica documentale
Tipologia: Dispense
1 / 23
Questa pagina non è visibile nell’anteprima
Non perderti parti importanti!
















Sistema informativo → componente di un'organizzazione che gestisce le informazioni di interesse per perseguire gli scopi dell'organizzazione stessa ( raccolta , acquisizione , archiviazione , conservazione , elaborazione , trasformazione , produzione , distribuzione , comunicazione , scambio ...). Sistema informatico → porzione automatizzata del sistema informativo. Informazione → notizia, dato o elemento che permette di avere più o meno conoscenza di fatti, situazioni, modi di essere etc. Dato → concetto primitivo, elemento di informazione costituito da simboli che deve essere elaborato per ottenere informazione. Base di dati → insieme di dati d'interesse per una certa applicazione e di supporto all'attività; → gestita dal Data Base Management System (DBMS). DBMS → gestisce collezioni di dati grandi , persistenti (con un tempo di vita indipendente dalle singole esecuzioni dei programmi che li utilizzano) e condivisi ; → vantaggi: riservatezza , affidabilità , efficienza , efficacia ; → rischi: ridondanza di informazioni, incoerenza. Transazione → insieme di operazioni da ritenere indivisibile (atomico), corretto anche in presenza di concorrenza e con effetti definitivi; → va eseguita per intero o non va eseguita per niente. Modelli dei dati → insieme di costrutti utilizzati per organizzare i dati di interesse e descriverne la dinamica; → la componente più importante è costituita dai meccanismi di strutturazione; → il più importante è il Modello Relazionale ; → si distinguono in → logici → descrizione astratta → utilizzati dai programmi → indipendenti dalle strutture fisiche → utilizzati dai DBMS per l'organizzazione dei dati → il più importante è il Modello Relazionale → concettuali → cercano di descrivere concetti del mondo reale → utilizzati nelle fasi preliminari di progettazione → organizzano i dati in modo indipendente dal sistema → il più importante è il Modello Entità - Relazione. Schema (di una BDD) → sostanzialmente invariante nel tempo, ne descrive la struttura; → costituito essenzialmente dalle caratteristiche dei dati [dall'intestazione della tabella (ossia dal nome relazione con i suoi attributi)]; → componente intensionale della BDD. Istanza (di una BDD) → variabile nel tempo; → costituito dai valori correnti della BDD; → componente estensionale della BDD.
tali che d 1 ∈ D 1 , d 2 ∈ D 2 , …, dn ∈ Dn. Una relazione matematica, ad esempio sugli insiemi D 1 e D 2 (chiamati domini della relazione), è un sottoinsieme del prodotto cartesiano D 1 × D 2 : D 1 {1, 2, 4} prodotto cartesiano esempio di relazione → {(1, a), (1, b), (2, a), (2, b), (4, a), (4, b)} → {(1, a), (1, b), (4, b)} D 2 {a, b} Una relazione matematica è un insieme → non c'è ordinamento fra n -uple (righe), il loro ordine è “occasionale”; → le n -uple sono tra loro distinte: non esistono due n -uple uguali; → ciascuna n-upla al proprio interno è ordinata, l'i-esimo valore proviene dall'i-esimo dominio (se nell'esempio sotto scambio il terzo dominio col quarto, inverto il risultato). Juventus Lazio 3 1 - ciascuno dei domini ha ruoli diversi (es. casa e trasferta) distinguibili per le posizioni; Lazio Milan 2 0 - la struttura è quindi posizionale e l'ordine delle colonne è rilevante. Juventus Roma 2 1 Roma Milan 0 1 Avendo due domini stringa e due domini intero ( string × string × int × int ), le posso distinguere solo attraverso la loro posizione , e questa non è una caratteristica ottimale. Associamo quindi a ciascuna occorrenza un nome, detto attributo , che descrive il “ruolo” giocato dal dominio stesso: SquadraDiCasa SquadraOspite GoalCasa GoalOspite - a ciascun dominio si associa un nome univoco nella tabella; Juventus Lazio 3 1 - questo nome, detto attributo, ne definisce il ruolo; Lazio Milan 2 0 - la posizione delle colonne non è più rilevante Juventus Roma 2 1 Roma Milan 0 1 Abbiamo quindi elementi individuati non più per la loro posizione, ma per i loro attributi.
Istanza → contenuto concreto della tabella. ( Istanza di ) relazione su uno schema R ( X ) → insieme r di tuple su X. ( Istanza di ) BDD su uno schema R = { R 1 ( X 1 ), R 2 ( X 2 ), …, R n( X n)}→ insieme di relazioni r = { r 1 , r 2 , … r n) dove ogni ri (con 1 ≤ i ≤ n) è una relazione sullo schema Ri ( Xi ). (In parole povere, una relazione è un insieme di tuple, una BDD è un insieme di relazioni). es. R = {Studenti (Matricola, Cognome, Nome, DataDiNascita), → R 1 Esami (Studente, Voto, Corso), → R 2 Schema R di BDD Corsi (Codice, Titolo, Docente)}. → R 3 12345, Mario, Rossi, 01/03/ 56789, Giuseppe, Verdi, 10/12/1993 → r 1 14589, Franco, Neri, 19/07/ 12345, 28, 01 12345, 30, 02 → r 2 Istanza di BDD 56789, 24, 02 01, Italiano, Melli 02, Matematica, Belli → r 3 03, Chimica, Pinti Relazioni su singoli attributi → può avere senso avere una relazione su un solo attributo (costituita da una sola colonna). es. Studenti Studenti lavoratori Nome Cognome Matricola Matricola Mario Rossi 1234 1234 Carlo Verdi 5678 1238 Paolo Bianchi 1278
Come rappresentare informazioni strutturate in modo articolato? es. Ricevuta numero 1234 del 12/10/2002 Ricevuta numero 1240 del 13/10/
Le tabelle qui presenti hanno alcuni elementi fissi (numero della ricevuta, data e totale) e un numero differente di portate omogenee: essendo le nostre relazioni a struttura fissa, non è possibile rappresentare l'insieme delle ricevute con un'unica relazione (non è possibile rappresentare le righe in numero non determinato). Quindi NO struttura nidificata : N° ricevuta Data Quantità Descrizione Importo Totale 1234 12/10/2002 3 Coperti 6,00 81, 2 Antipasti 12, 3 Primi 27, 2 Bistecche 36, 1240 13/10/2002 2 Coperti 4,00 78, 1 Antipasti 6, 2 Primi 15, 2 Orate 50, 2 Caffè 3,
es. Studenti Esami Corsi Matricola Cognome Nome Data di nascita Studente Voto Lode Corso Codice Titolo Docente 200768 Verdi Fabio 12/02/1982 200768 36 05 01 Analisi Giani 937653 Rossi Luca 10/10/1981 937653 28 lode 01 03 Chimica Melli 937653 Bruni Mario 01/12/1981 937653 30 lode 04 04 Chimica Belli 276545 25 01 Violazione del vincolo di dominio: lo riscontro guardando solo il singolo valore. In questo caso il voto deve essere compreso tra 0 (o 18 se si considerano solo i valori di un esame superato) e 30. Un esempio di vincolo di dominio in questo caso potrebbe essere (voto ≥ 18) AND (voto ≤ 30). Violazione del vincolo di tupla: lo riscontro guardando la tupla nel suo insieme. In questo caso non posso associare il “28” a “lode”. Il vincolo in questo caso è (NOT (Lode = lode)) OR (voto = 30)), che vuol dire che non posso avere “lode” se non ho un voto uguale a 30. Ripetizione: non posso associare a due oggetti distinti la stessa chiave (vedi più avanti). Questi tre sono vincoli intrarelazionali , in quanto riguardano una sola relazione (tabella). Violazione del vincolo d'integrità referenziale: lo riscontro guardando più tabelle. In questo caso ho uno studente e un corso che non si collegano alle rispettive tabelle. Questo è un vincolo interrelazionale , in quanto riguarda più tabelle. Chiavi e superchiavi Superchiave → è un insieme di attributi che identifica univocamente le ennuple di una relazione. Più tecnicamente: un insieme K di attributi è superchiave di una relazione r se r non contiene due tuple distinte t 1 e t 2 con t 1 [ K ]= t 2 [ K ]. Chiave → è una superchiave minimale di r (cioè non esiste un'altra superchiave K ' di r che sia contenuta in K come sottoinsieme proprio). es. Matricola Cognome Nome Data di nascita Corso 4328 Rossi Luigi 29/04/84 Ing. Informatica 6328 Rossi Dario 29/04/84 Ing. Informatica 4766 Rossi Luca 01/05/86 Ing. Civile 4856 Neri Luca 01/05/86 Ing. Meccanica 5536 Neri Luca 05/03/83 Ing. Meccanica
Per esteso, però, essendo le relazioni insiemi, i quali per definizione non hanno elementi (nel nostro caso tuple) ripetuti, esiste almeno una superchiave costituita da tutto l'insieme di attributi X e di conseguenza una chiave (l'insieme di attributi è anche chiave, o ne contiene comunque una al suo interno). Possiamo quindi affermare che ogni (istanza di) relazione e ogni schema di relazione abbiano al loro interno una chiave. Chiave primaria → chiave in cui non sono ammessi valori nulli ; → deve essercene almeno una; → per convenzione, viene sottolineata. es. Matricola Cognome Nome Data di nascita Corso Vincoli di integrità referenziale → vincoli interrelazionali; → permettono di di correlare informazioni in relazioni diverse attraverso valori comuni, in particolare i valori delle chiavi primarie; → devono avvenire in base a correlazioni “coerenti”. Un vincono di integrità referenziale (“ Foreign key ”) fra gli attributi X di una relazione R 1 e un'altra relazione R 2 impone ai valori su X in R 1 di comparire come valori della chiave primaria di R 2. es. Infrazioni Vigili Codice Data Vigile Provincia targa Numero di targa Matricola Nome Cognome 12345 25/10/08 567 RM 4E5432 567 Mario Neri 56789 26/10/08 456 RM 4E5432 456 Franco Rossi 98765 26/10/08 456 RM 2F7643 123 Fabio Verdi 54321 15/10/08 567 MI 2F Il vincolo di integrità referenziale è rispettato, in quanto TUTTI gli attributi su “Vigile” sono presenti nella chiave primaria “Matricola”. Il vincolo può essere anche su più attributi: es. A 1 A 2 B 1 B 2 R1 ↓ ↓ R2 ↓ ↓ Codice Data Vigile Provincia targa Numero di targa Provincia Numero di targa Cognome Nome
Ridenominazione, selezione, proiezione
→ utilizzata per adeguare il nome degli attributi al fine di facilitare le operazioni insiemistiche; → agisce a livello di schema, lasciando inalterata l'istanza; → REN B1, ..., BK ← A1, ..., AK (r). es. Paternità REN Genitore←Padre (Paternità) Maternità REN Genitore←Madre (Maternità) Padre Figlio Genitore Figlio Madre Figlio Genitore Figlio Adamo Caino → Adamo Caino Eva Caino → Eva Caino Adamo Abele Adamo Abele Eva Abele Eva Abele Abramo Isacco Abramo Isacco Sara Isacco Sara Isacco Dopo questa operazione, posso utilizzare le varie operazioni insiemistiche (unione, intersezione, differenza). Selezione (“SEL” o “σ”) → operatore monadico; → non agisce a livello di schema dell'operando (è definita su tutti gli attributi della tabella), ma sull'istanza; → il risultato contiene un sottoinsieme di ennuple dell'operando che soddisfano una certa condizione (“sceglie” delle righe); → SELcondizione (NomeTabella) (→ la condizione è un espressione booleana). es. Impiegati Matricola Cognome Filiale Stipendio Voglio conoscere gli impiegati che:
Proiezione (“PROJ” o “π”) → operatore monadico; → mantiene parte degli attributi dell'operando (“toglie” colonne); → a meno di perdita di informazioni dovuta a doppioni, il risultato contiene ennuple cui contribuiscono tutte le ennuple dell'operando (quindi una proiezione contiene al più tante ennuple quante l'operando, ed è solitamente il caso in cui la proiezione venga fatta su una superchiave); → PROJ lista attributi (NomeTabella). es. Impiegati Matricola Cognome Filiale Stipendio Voglio sapere:
Join esterno → serve a non perdere informazioni; → estende, con valori nulli, le ennuple che verrebbero tagliate fuori dal join (“interno”) → può essere sinistro (mantiene tutte le ennuple del primo operando, estendendole con valori nulli se necessario), destro (stessa cosa ma col secondo operando) o completo (stessa cosa, ma con entrambi gli operandi): es. Impiegati JOINLEFT Reparti Impiegati JOINRIGHT Reparti Impiegati JOINFULL Reparti Impiegato Reparto Capo Impiegato Reparto Capo Impiegato Reparto Capo Neri B Mori Neri B Mori Neri B Mori Bianchi B Mori Bianchi B Mori Bianchi B Mori Rossi A NULL NULL C Bruni Rossi A NULL NULL C Bruni Prodotto cartesiano → è un join naturale senza attributi in comune; → contiene sempre un numero di ennuple pari al prodotto delle cardinalità degli operandi (le ennuple sono tutte combinabili); → concatena tuple non necessariamente correlate dal punto di vista semantico es. Impiegato Progetto Codice Nome Impiegato Progetto Codice Nome In rosso le tuple concatenate “senza senso” Rossi A A Venere Rossi A A Venere Neri A B Marte Neri A A Venere Neri B Neri B A Venere Rossi A B Marte Neri A B Marte Neri B B Marte Il prodotto cartesiano ha generalmente senso solo se seguito da una selezione: questa operazione è il theta-join → R 1 JOINCondizione R 2 → la condizione è di solito è una formula proposizionale utilizzabile in una selezione (<, >, =); → nel caso la condizione sia una congiunzione di atomi di uguaglianza tra un attributo di r 1 e uno di r 2 , si parla di equi-join. es. BD1 {Libro (ISBN, Titolo, Anno, CodAutore, CodEditrice, Lingua), Scrittore (CodA, Nome, Cognome, Nazionalità, CasaEd), Editrice (CodE, NomeEd, Città)
SQL → in origine era un acronimo per Structured Query Language , ora è il nome proprio; → contiene al suo interno → le funzionalità di un DDL → definisce tabelle, relazioni e schemi di BDD; → le funzionalità di un DML → può modificare la BDD e specificare interrogazioni su di essa; → ce ne sono più versioni. Definizione delle BDD → notazioni (parentesi); → domini elementari ( caratteri , tipi numerici , istanti temporali ...). Notazioni → parentesi angolari 〈 〉 →permettono di isolare un termine della sintassi; → parentesi quadre [ ] → indicano un termine opzionale, che può non comparire o comparire una sola volta; → parentesi graffe → indicano un termine che può non comparire o comparire un numero arbitrario di volte; → barre verticali | → indicano che deve essere scelto uno tra i termini separati dalle barre; → le parentesi tonde ( ) sono intese come termini del linguaggio SQL e non come simboli della grammatica. Domini elementari → sono “famiglie” di domini elementari messi a disposizione da SQL:
Vincoli I vincoli → proprietà che devono essere verificate da ogni istanza della BDD; → il più “potente” e generico è check, ma richiede di formulare delle interrogazioni sulla BDD; → si dividono poi in → intrarelazionali (interni a una singola tabella): not null, unique, primary key; → interrelazionali (tra più tabelle): foreign key (v. d'integrità referenziale). Vincoli intrarelazionali not null → il valore nullo non è ammesso per un particolare attributo, quindi deve essere sempre specificato, a meno che a quell'attributo non sia associato un valore di default diverso da null, poiché in quel caso, se non viene specificato il valore, viene assegnato quello di default. es. Cognome varchar (20) not null unique → indica una ( super ) chiave ; → quando opera su un solo attributo si fa seguire l'attributo dalla parola (riservata al sistema) unique es. Matricola varchar (6) unique; → quando opera su più attributi si fa seguire a quei singoli attributi il vincolo not null, e poi, dopo aver definito tutti gli attributi della tabella, si usa la sintassi: unique ( Attributo1 {, AttributoN }) es. Nome varchar (20) not null, Nome varchar (20) not null unique, Cognome varchar (20) not null, ≠ Cognome varchar not null unique Professione varchar (30) ↓ unique (nome, cognome) impone che nessuna riga abbia uguale né ↓ il nome, né il cognome (le chiavi sono 2, Impone che nessuna riga abbia uguale sia nome costituite una da nome e una da cognome) che cognome (la chiave è costituita dalla coppia nome, cognome) primary key → indica la chiave primaria (quindi se ne può definire UNA per tabella e non ammette valori nulli → comprende not null); → quando opera su un solo attributo si fa seguire l'attributo da primary key (come per unique); → quando opera su più attributi questi, dopo aver definito tutti gli attributi della tabella, vengono riuniti tra parentesi preceduti dalla dicitura primary key es. Nome varchar (20), Cognome varchar (20), primary key (Nome, Cognome) Vincoli interrelazionali Permettono di definire i vincoli di integrità referenziale, che possono essere su uno o più attributi, tra la tabella su cui vengono specificati (tabella “interna”) ed un'altra tabella (“esterna”). Il vincolo impone che per ogni riga della tabella interna il valore dell'attributo specificato sia presente nelle righe della tabella esterna tra i valori del corrispondente attributo e impone che l'attributo della tabella esterna abbia sia superchiave, chiave (unique) o, di solito, chiave primaria (primary key). Se il vincolo è su un solo attributo, utilizzo il costrutto sintattico references specificando la tabella esterna e il relativo attributo corrispondente: es. create table Impiegato (Matricola varchar(6) primary key, Nome varchar(20) not null, Cognome varchar(20) not null, Dipart varchar(15) references Dipartimento (NomeDip), → impone che l'attributo Dipart della tabella Impiegato possa unique (Cognome, Nome)) assumere solo uno dei valori che le righe della tabella Dipartimento possiedono per l'attributo NomeDip. Se si volesse che gli attributi Cognome e Nome apparissero nella cartella Anagrafica, basterebbe aggiungere: foreign key (Nome, Cognome) references (Anagrafica.Nome, Anagrafica.Cognome).
Violazioni dei vincoli → SQL impedisce operazioni che violino tutti i tipi di vincoli, escluso quello di integrità referenziale, per il quale offre delle alternative adottabili; → se la violazione del vincolo d'integrità referenziale è sulla tabella interna, SQL impedisce semplicemente l'operazione; → se la violazione avviene in quella interna, le reazioni sono simili sia in caso di violazione attraverso modifica che di cancellazione del dato di interesse:
Per il progetto di una BDD si è consolidato un metodo articolato in tre fasi principali che permettono con la prima di stabilire “cosa” rappresentare (prima fase) e “come” rappresentarlo (seconda e terza fase).
( Occorrenza di una relazione → ennupla di occorrenze di entità, una per ciascuna entità coinvolta. Nell'ambito di una relazione non ci possono essere occorrenze ripetute, poiché l'insieme delle occorrenze di una relazione del modello E-R è una relazione insiemistica). N.B nello schema concettuale si rappresentano entità, non occorrenze!