Estratto del documento

appuntiDiIngegneria

Basi di Dati

Sommario

1.0. Basi di Dati ........................................................................................................................................2

1.1. Modello Relazionale ..........................................................................................................................6

1.1.1. Vincoli Intra-Relazionali .................................................................................................................8

1.1.2. Vincoli Inter-Relazionali ............................................................................................................... 10

1.2. Algebra Relazionale ......................................................................................................................... 11

1.3. Linguaggio SQL ................................................................................................................................ 15

1.3.1. DDL del SQL ................................................................................................................................. 15

1.3.2. DML del SQL ................................................................................................................................ 17

1.3.3. Esempio di DBMS Relazionale: MySQL ......................................................................................... 19

1.4. Organizzazione Fisica dei DBMS....................................................................................................... 22

1.5. Progettazione dei Database............................................................................................................. 25

1.5.1. Progettazione Concettuale con il Modello E-R ............................................................................. 27

1.5.2. Progettazione Logica ................................................................................................................... 30

1.5.3. Esempio Completo di Progettazione di un DB .............................................................................. 33

1.5.4. Tecniche di Normalizzazione........................................................................................................ 37

1.6. Modelli No-SQL: MongoDB .............................................................................................................. 40

1

1.0. Basi di Dati

Si parte dando qualche definizione di base:

 Informazione: notizia, o elemento che consente di avere conoscenza più o meno esatta di

fatti, situazioni e modi d’essere.

 Dato: elementi di informazione costituiti da simboli che devono essere elaborati. Con delle

indicazioni aggiuntive a seguito dell’elaborazione, essi possono diventare informazione.

Un Sistema Informativo (SI) è una componente di un’organizzazione (Azienda, Ufficio, Ente,

Università, etc) il cui scopo è quello di gestire le informazioni utili ad i fini di perseguire gli obiettivi

dell’organizzazione stessa. La porzione automatizzata di un sistema informativo prende il nome di

Sistema Informatico; all’interno di esso le informazioni sono rappresentate da dati.

Gran parte dei sistemi informatici hanno la necessità di gestire dati in maniera persistente (cioè

memorizzarli in una memoria secondaria). Vi sono due principali approcci di gestione dei dati:

1. Approccio convenzionale (basato su files): in questo approccio non vi è nessuna chiara

distinzione tra dati ed applicazioni. L’applicazione contiene al suo interno la logica di gestione e

memorizzazione dei dati stessi (es. formato dei dati) mentre il Sistema Operativo offre le

primitive di base per l’accesso ai files ed i meccanismi di sicurezza del File System. In questo

approccio si rilevano alcuni problemi:

 Problemi di scalabilità ed efficienza quando si devono gestire grandi quantità di

dati;

 Problema legato alla condivisione e all’accesso concorrente, in quanto In molti

scenari pratici, i dati devono essere a disposizione di una moltitudine di

utenti/applicazioni per accessi

concorrenti. Si verificano problemi

come Lock a livello di file, bassa 2

granularità di concorrenza, prestazioni limitate! Inoltre le applicazioni diverse

devono conoscere l’esatta collocazione e formato dei dati quindi o bisogna

aggiornare sempre il formato dei dati oppure si fa una replica dei dati presso i vari

sistemi/utenti che ne fanno utilizzo andando incontro al problema della consistenza

delle repliche.

2. Approccio DBMS-based: è un approccio strutturato basato su software di gestione dei dati,

esistono appositi strumenti software, sviluppati fin dagli anni ‘60, per la gestione delle basi di

dati, in particolare si indica con il termine Database Management System (DBMS) un sistema

software (complesso e quindi costoso) che è in grado di gestire DB grandi, condivisi e

persistenti, in maniera efficiente e sicura. Inoltre definiamo una Base di Dati come una

collezione di dati gestita da un DBMS. Ci sono molti DBMS disponibili in commercio, alcuni dei

quali sono: Oracle, DB2, Microsoft SQL Server, MongoDB, MySQL. Di seguito sono riportate

alcune funzionalità dei DBMS:

 Creazione di una base di dati e memorizzazione su memoria secondaria.

 Accesso in lettura/scrittura ad i dati.

 Condivisione di dati tra diversi utenti/applicazioni.

 Protezione dei dati da accessi non autorizzati.

 Reliability dei dati in caso di guasti (hardware/software).

Tramite i DBMS, è possibile implementare un paradigma di separazione di dati ed applicazioni.

I DBMS utilizzano un’architettura SW a 3 livelli, che corrispondono ai tre livelli di astrazione in cui

sono articolati i dati:

 Schema Esterno: descrive come i dati appaiono per un utente o un gruppo di utenti. Il

livello esterno consente di avere viste personalizzate della base di dati da parte di diversi

utenti/applicazioni. Ad esempio considerando una Base di dati condivisa tra diversi uffici di

una stessa organizzazione, si potrebbe avere che solo alcuni uffici possono accedere a tutto

il contenuto del DB! 3

 Schema Logico: descrive l’organizzazione logica dei dati, In pratica il Modello/livello logico

consiste in un Insieme di concetti (record a struttura fissa o variabile, grafi) per

strutturare/organizzare i dati relativi ad un certo dominio d’interesse e in un Insieme di

regole per modellare eventuali vincoli e restrizioni sui dati (Esempio di vincolo sui dati: Il

voto d’esame è un numero intero compreso tra 18 e 30). Sia le Regole che Concetti

generali sono indipendenti dal dominio d’interesse che si sta considerando. Sono stati

proposti diversi Modelli Logici sulla base del quale differiscono i vari DBMS:

o Modello Relazionale: di fatto, il più usato, in cui i dati sono memorizzati in tabelle.

o Modello Gerarchico: Le associazioni tra tabelle sono rappresentate con puntatori in

una struttura ad albero, in cui i nodi rappresentano le entità e gli archi le relazioni

fra entità.

o Modello Reticolare: Le associazioni tra tabelle sono rappresentate con puntatori in

una struttura a grafo complesso.

o Modello ad Oggetti: Una base di dati è una collezione di oggetti in cui ogni oggetto

ha un identificatore univoco (OID) gestito dal sistema (a differenza delle chiavi), uno

stato, definito come una struttura complessa a partire da dati semplici e ha dei

metodi che consentono di manipolare lo stato.

o Approcci NoSQL: Non un singolo modello, ma un insieme di approcci accomunati

dal tentativo di superare la rigidità del modello relazionale, e di migliorare la

scalabilità della gestione di una base di dati in ambienti distribuiti. Si distinguono gli

Approcci Key/Value (Redis, BigTable, etc) e gli Approcci document-oriented

(JSON/XML).

 Schema Fisico: descrive come i dati sono memorizzati su memoria secondaria.

In un DBMS il livello logico è indipendente dal modello fisico, l’organizzazione logica dei dati non

dipende dalle strutture dati usate per l’effettiva memorizzazione su disco. In pratica, le

applicazioni accedono al DBMS specificando i concetti logici del modello dei dati, piuttosto che i

dettagli relativi alla loro memorizzazione. Quando con un’applicazione si chiede qualcosa ad un

DBMS, non vengono specificate le righe/colonne nel quale queste informazioni sono memorizzate

nella tabella. Un DBMS deve garantire le seguenti caratteristiche:

1) Efficienza nella gestione dei dati: i DBMS forniscono

adeguate strutture dati per organizzare i dati all’interno dei

file, e per supportare le operazioni di ricerca/aggiornamento,

ad esempio strutture ad albero o hash table. In particolare

nelle tabelle viene utilizzato un Indice per avere accesso

diretto alle tuple, in quanto esso contiene informazioni sulla

posizione di memorizzazione delle tuple sulla base del valore

del campo chiave. 4

Concorrenza: In molti sistemi è fondamentale gestire operazioni concorrenti di accesso ai

2) dati. Al tempo stesso, un DBMS deve garantire che accessi da parte di applicazioni diverse

non interferiscano tra loro, lasciando il sistema in uno stato inconsistente. Per prevenire

tali situazioni i DBMS implementano algoritmi di controllo della concorrenza che fanno in

modo che le operazioni sui dati (transazioni) eseguite in concorrenza producano lo stesso

risultato di un’esecuzione seriale. A questo proposito vi è il Lock Manager, che è il

componente del DBMS responsabile di gestire i lock in lettura/scrittura per accesso a

risorse condivise (dati) del DB, e di rispondere alle richieste delle transazioni.

Persistenza e Affidabilità: Alcune operazioni sui dati sono particolarmente delicate, e

3) devono essere gestite in maniera opportuna, secondo la regola del tutto o niente. Per

questo, i DBMS devono fornire appositi strumenti ed algoritmi per annullare operazioni

non completate e fare il roll-back dello stato del Sistema. Il controllore di affidabilità

utilizza dei Log (memorizzati nella memoria cache dei DBMS), nel quale sono indicate tutte

le operazioni svolte dal DBMS, e tramite essi è possibile fare il DO/UNDO delle operazioni.

Vi sono degli algoritmi ad-hoc (es. algoritmo di ripresa a caldo/a freddo) per ripristinare lo

stato dei dati a partire dai log del DBMS.

Multiutenza e Sicurezza: La maggior parte dei DBMS implementa politiche di controllo

4) degli accessi ad i dati mediante sistemi di permessi (esempio: Quali operazioni sono

consentite all’utente X? Quali dati appartengono all’utente X?).

Scalabilità (orizzontale): Possibilità di gestire grandi moli di dati aumentando il numero di

5) nodi usati per lo storage (database distribuito).

Per poter far interagire gli utenti o le applicazioni con i DBMS ci sono i linguaggi dichiarativi

utilizzati per i Database mettono a disposizione due componenti:

 Linguaggio DDL: per la Definizione dello schema logico, cioè per dichiarare e definire la

struttura delle tabelle. L’unico costrutto che esso ha è il CREATE TABLE.

 Linguaggio DML: per la Manipolazione delle istanze, cioè per inserire istanze nelle

tabelle e fare delle query al Database.

Si tratta di linguaggi orientati ai dati molto diversi dai linguaggi di programmazione tradizionali. Le

applicazioni che si interfacciano con un DBMS integrano codice SQL (DDL+DML) all’interno del

loro codice e utilizzano opportune librerie (fornite dal DBMS) per gestire la connessione al DBMS. 5

I DBMS non sono tutti uguali ma hanno delle Differenze sostanziali, ad esempio in termini di

Modello Logico Supportato, Algoritmi di Indicizzazione utilizzati, linguaggi DDL/DML utilizzati, ecc…

Infine ci sono 4 punti di vista attraverso cui si può guardare al mondo delle basi di dati (DB):

 Utente: come interagire con un DB (aggiungere/modificare informazioni, recuperare

informazioni mediante delle query, ecc..).

 Progettista: come progettare un DB.

 Programmatore: come sviluppare applicazioni Web/stand-alone che si interfaccino con un

DB.

 Analista: come reperire informazioni da un DB attraverso tecniche di Data Mining.

1.1. Modello Relazionale

È stato proposto nel 1970 da E.F. Codd, ricercatore dell’IBM di San Jose, CA. ed è attualmente il più

utilizzato tra i modelli logici disponibili. Tra i DBMS basati sul modello relazionale (RDBMS) vi

sono: Oracle, MySQL, DB2, SQL Server etc. Si chiama modello relazionale perché una relazione tra

dati può essere vista come una relazione matematica. Nella Teoria degli insiemi si definisce una

relazione matematica nel seguente modo:

DEF. Il prodotto cartesiano degli insiemi D , D , … D è definito come l’insieme delle tuple (n-uple)

1 2 n

∈ ∀ .

ordinate (d , d , … d ), con d D Ad esempio dati gli insiemi A = {1, 2, 4} e B = {a, b} il Prodotto

i

1 2 n i i

Cartesiano AxB = {(1, a), (1, b), (2, a), (2, b), (4, a), (4, b)}

DEF. Dati n insiemi D , D , … D , una relazione matematica sugli insiemi D , D , … D è definita

1 2 n 1 2 n

come un sottoinsieme del prodotto cartesiano D x D x … x D

1 2 n.

Dove gli insiemi D sono chiamati Domini della Relazione, il Numero n delle componenti di ogni

I

tupla è chiamato grado della relazione, mentre il numero di tuple è chiamata cardinalità della

relazione. Dalle proprietà ereditate dal concetto di relazione matematica:

 Non è definito alcun ordinamento tra le tuple di una relazione, e quindi di conseguenza fra

le righe di una tabella, non importa quale venga prima e quale venga dopo.

 Non possono esserci due tuple uguali, e quindi due righe uguali nella stessa tabella.

Quindi nel modello relazionale i dati sono organizzati in record di dimensione fissa, e divisi in

tabelle (relazioni) in cui:

 

Colonne della tabella Rappresentano gli Attributi, e corrispondono ai Domini di una

relazione. Indicano le Proprietà di interesse di una Tabella.

 

Intestazione della tabella (nome tabella + nome attributi) è la prima riga di una tabella,

e rappresenta lo Schema della relazione, cioè la dichiarazione dei Domini, che è la parte

fissa della tabella. 6

 

Righe della tabella Rappresentano le Istanze della relazione, ossia la parte variabile delle

tabelle. Le istanze corrispondono all’insieme delle tuple di una relazione.

Nell’esempio il Nome della Relazione è studente, gli attributi (Domini della relazione) sono la

matricola, Nome, Città ed il Dipartimento a cui egli afferisce; lo schema della relazione è R =

studente(MATR, NOME, CITTA’, C-DIP); le successive righe della tabella rappresentano le varie

istanze, ad esempio una delle istanze è: <123, Carlo, Bologna, Inf>. È possibile avere uno schema

di relazioni senza istanze (es. in fase di creazione del DB) ma non è possibile avere il viceversa. A

volte può succedere che alcune informazioni sono ignote nel riempimento di una tupla per diverse

ragioni, ad esempio perché non si conosce il valore di un dato, oppure perché il dato è assente o

non applicabile a quella specifica tupla; in tal caso si estendono tutti i possibili Domini

aggiungendo un valore speciale NULL (cioè D = D NULL). Ad esempio nella Relazione elenco

I I

Telefonico(NOME, RUOLO, CELLULARE, UFFICIO) nelle tuple in cui il RUOLO è studente, come

valore nel campo UFFICIO occorre inserire NULL in quanto uno studente non ha un numero di

ufficio. E’ fondamentale però limitare il numero di valori NULL in una relazione, altrimenti si

rischia di avere situazioni in cui due righe sono uguali per assenza di informazioni, come nel

seguente esempio:

Non tutte le istanze di una relazione possono essere considerate lecite, perché spesso nelle

relazioni vengono introdotti dei Vincoli di Integrità, ossia delle funzioni booleane che associano ad

una istanza r di una Base di Dati definita su uno schema R = {R (X ), ..., R (X )} un valore di verità

1 1 k k

(true/false). In altre parole i vincoli indicano quando una tupla è valida all’interno di una relazione

mediante delle specifiche regole, se il vincolo non è valida quella specifica tupla non può essere

inserita nella relazione. Tali vincoli vengono memorizzati insieme allo schema della relazione.

Esistono due grandi famiglie di Vincoli di Integrità sulle istanze di una relazione: 7

 Vincoli Intra-Relazionali: Vincoli il cui soddisfacimento è

definito per singole relazioni, ovvero tutte le istanze di

una relazione devono soddisfare tutti i vincoli che sono

definiti sulla relazione stessa. Fra questi ci sono i Vincoli

di Chiave, Vincoli di Tupla e Vincoli di Dominio.

 Vincoli Inter-Relazionali: Vincoli che coinvolgono più

relazioni, cioè più tabelle. Fra questi ci sono i Vincoli di

Chiave Esterna (detti anche Vincoli Referenziali).

1.1.1. Vincoli Intra-Relazionali

Sia considerato il seguente esempio:

Il primo tipo di Vincolo che è possibile imporre su questa relazione è che il Voto deve essere un

numero compreso fra 18 e 30, ovvero (Voto ≥ 18) AND (Voto ≤ 30); questo prende il Nome di

Vincolo di Dominio, perché coinvolge un solo Dominio, cioè l’Attributo Voto. Altro tipo di Vincolo

che è possibile imporre è che la Lode deve essere ammessa se e solo se il Voto dello Studente sia

uguale a 30, cioè (NOT (Lode = SI)) OR (Voto = 30); esso prende il nome di Vincolo di Tupla. Per

spiegare i Vincoli di Chiave si fa riferimento alla seguente relazione:

Innanzitutto viene definita chiave un insieme di attributi che consente di identificare in maniera

univoca le tuple di una relazione: nell’esempio della relazione studente la chiave è semplicemente

la Matricola, in quanto non possono esistere due studenti che hanno la stessa matricola. Gli

attributi dentro una chiave vengono chiamati Attributi Primi. Invece un sottoinsieme K di attributi

di una relazione r è chiamata superchiave di r se NON contiene due tuple distinte t1 e t2 con

t1[K]=t2[K], cioè uguali sulla restrizione dei K attributi. Se togliendo uno qualsiasi dei K attributi dal

8

sottoinsieme, quest’ultimo smette di essere una superchiave di r, allora tale sottoins

Anteprima
Vedrai una selezione di 10 pagine su 43
Basi di Dati Teoria Completa Pag. 1 Basi di Dati Teoria Completa Pag. 2
Anteprima di 10 pagg. su 43.
Scarica il documento per vederlo tutto.
Basi di Dati Teoria Completa Pag. 6
Anteprima di 10 pagg. su 43.
Scarica il documento per vederlo tutto.
Basi di Dati Teoria Completa Pag. 11
Anteprima di 10 pagg. su 43.
Scarica il documento per vederlo tutto.
Basi di Dati Teoria Completa Pag. 16
Anteprima di 10 pagg. su 43.
Scarica il documento per vederlo tutto.
Basi di Dati Teoria Completa Pag. 21
Anteprima di 10 pagg. su 43.
Scarica il documento per vederlo tutto.
Basi di Dati Teoria Completa Pag. 26
Anteprima di 10 pagg. su 43.
Scarica il documento per vederlo tutto.
Basi di Dati Teoria Completa Pag. 31
Anteprima di 10 pagg. su 43.
Scarica il documento per vederlo tutto.
Basi di Dati Teoria Completa Pag. 36
Anteprima di 10 pagg. su 43.
Scarica il documento per vederlo tutto.
Basi di Dati Teoria Completa Pag. 41
1 su 43
D/illustrazione/soddisfatti o rimborsati
Acquista con carta o PayPal
Scarica i documenti tutte le volte che vuoi
Dettagli
SSD
Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher appuntiDiIngegneria94 di informazioni apprese con la frequenza delle lezioni di Basi di dati e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli studi della Campania "Luigi Vanvitelli" o del prof Moscato Francesco.
Appunti correlati Invia appunti e guadagna

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community