Database
Nella sua accezione più generale un database può essere definito come un’insieme di dati correlati tra loro su cui
l’utente, in base alle proprie esigenze, può effettuare operazioni di ricerca e aggiornamento, sfruttando le funzionalitàdi
un apposito programma di gestione che prende il nome di DataBase Management System (DBMS). Data la vastità del
significato del termine database è conveniente esaminare le sue proprietà più significative.
Aderenza ad un preciso modello di dati
Un modello di dati è formato da regole che consentono all’analista di formalizzare una descrizione delle proprietà
possedute dalle categorie di dati che formano il DB. I modelli si dividono in 3 categorie:
1)Modelli semantici o concettuali. Si tratta di modelli vicini all’interpretazione umana di una certa realtà e la descrivono
durante la prima fase di progettazione del database, un esempio è il modello E/R. (Esistono anche altri modelli
semantici o diverse rappresentazioni di modello E/R).
2)Modelli logici. Siamo ad un livello intermedio che descrive le strutture dati in modo comprensibile all’utente ma già
più vicino all’implementazione. I modelli logici posso essere a loro volta di 3 tipi:
a)Modello gerarchico in cui i dati sono strutturati ad albero;
b)Modello reticolare in cui i dati sono strutturati e collegati tra loro come in un grafo;
c)Modello relazionale. Si basa sul concetto di relazione tra insiemi che, nella sua forma più semplice, può
essere rappresentata da una tabella avente le seguenti proprietà:
1)Tutte le righe devono essere distinte tra loro;
2)Ogni colonna deve contenere dati omogenei;
3)Non esiste nessun tipo di precedenza e di ordinamento tra le righe o tra le colonne.
In una tabella ogni riga è detta tupla e ogni colonna è detta come attributo. Il numero di colonne è detto grado
della tabella, il numero di righe è detto cardinalità della tabella ogni attributo può assumere valori di un preciso
insieme detto dominio. Di una tabella possiamo distinguere la forma intensionale ed estensionale: la prima è
costituita da nome dell’entità seguito dall’elenco dei suoi attributi tra parentesi e con la chiave primaria
sottolineata, ogni attributo avrà il suo tipo di dominio. La forma estensionaleè la rappresentazione del
contenuto di tutte le tuple nella classica forma riga con colonna.
3)Modelli fisici che sono fortemente legati all’organizzazione della memoria di massa.
Presenza di un sistema integrato per la definizione e la manipolazione dei dati
Il DBMS garantisce, attraverso appositi linguaggi, la descrizione e la manipolazione dei dati contenuti nel DB.
Distinguiamo 3 livelli di un DB che sono livello fisico, livello logico e livello esterno. A livello fisico il DB è la
rappresentazione dei file che lo cosituiscono e consiste nella descrizione dei tipi di record utilizzati: interagisce
direttamente con il file system. Per questo strato l’amministratore del database ha a sua disposizione un apposito
linguaggio denominato DMCL (Device Media Control Language). A livello logico il DB è descritto dallo “schema”
logico.
Schema Descrizione logica globale della base dati. Lo definisci l’amministratore della base dati e, in generale, è un
grafo.
A questo scopo il DBMS mette a disposizione un linguaggio specifico, il DDL(Data Definition Language) attraverso il
quale definire la struttura dell’entità e quindi lo schema. Il DDL agisce a livello intensionale.
A livello esterno si devono avere strumenti per organizzare, vedere e modificare dati cioè si deve poter agire a livello
estensionale. Il linguaggio e detto DML (Data Manipolation Language) che permette di immettere, modificare e
cancellare informazioni. Gli utenti a questo livello sono o utenti intelligenti o sviluppatori di applicazioni. Oggigiorno si
tende a unificare in un unico linguaggio interrogazione, programmazione, descrizione e manipolazione. Poichè ogni
singolo utente può essere interessato ad un sottoinsieme dei dati contenuti nel DB è compito dell’amministratore del DB
fornire a ogni utente un sottoschema del DB (vista) che contenga tutto e solo ciò che serve a quell’ utente. Da questo
viene la definizione di sottoschema come la visione particolare dei dati di un DB relativa ad una singola applicazione.
Indipendenza dei dati
Per attuare una protezione dei dati è stata introdotta nei DB una doppia indipendenza: logica e fisica.
Per indipendenza logica dei dati si intende la proprietà del DB di far si che tutte le strutture logiche dei dati possano
essere variate dall’amministratore senza cambiare i programmi applicativi non interessati alla modifica.
Con indipendenza fisica dei dati si intende fare riferimento al fatto che l’amministratore può modificare
l’organizzazione a livello fisico senza alterare l’organizzazione logica e le viste.
Altre caratteristiche
Tra le caratteristiche principali di un DB va ricordato:
1)ridondanza controllata: Gli stessi dati non compaiono più volte in archivi diversi in quanto un database è
costituito da archivi integrati. La ridondanza è un difetto che può provocare incongruenza tra i dati contenuti in
archivi diversi. Nella pratica non si riesce a eliminare completamente la ripetizione dei dati ma con i database è
possibile almeno controllarla:si parla quindi di ridondanza controllata.
2)sicurezza e protezione dei dati: Il DBMS fornisce meccanismi di protezione per la segretezza e/o per evitare
involontarie modifiche. I dati in un unico database possono essere utilizzati da più utenti con i loro programmi
ma si consente una visione solo parziale del database da parte di un singolo utente che può rimanere estranea al
resto dei dati contenuti nel database. Il DBMS garantisce inoltre che le protezioni svolte da utenti diversi con
esecuzioni concorrenti non interferiscano l’una con l’altra.
3)garanzia d’integrità dei dati: è possibile fornire regole sulla variabilità, la forma e le relazioni che legano i
dati. Verranno effettuati controlli su questi vincoli di integrità per evitare anomalie. Inoltre le operazioni sui
dati richieste dagli utenti vengono eseguite fino al loro completamento per assicurare la consistenza dei dati.
4)Flessibilità e compatibilità con altri sistemi.
Chiavi di una tabella
1.
2.
3.
Nel modello relazionale i dati sono organizzati in tabelle formate da attributi. Definiamo chiave di una tabella un
qualsiasi sottoinsieme di attributi. Distinguiamo poi le chiavi candidate cioè sottoinsieme di attributi che hanno le
seguenti 3 proprietà:
Univocità: identifica univocamente una tupla all’interno della tabella;
Integrità: non può contenere valori nulli;
Non ridondanza: ogni suo attributo è indispensabile affinché conservi la caratteristica di identificare una sola tupla.
All’interno di una tabella possono esistere più chiavi candidate: l’amministratore del DB ne sceglierà una che diventerà
chiave primaria.
DeterminanteE’ un qualsiasi sottoinsieme di attributi che determina il valore di un altro gruppo di attributi.
La normalizzazione
Nel passare dal modello concettuale al modello relazionale si possono ipotizzare diversi schemi ma alcuni di questi
possono presentare degli inconvenienti (anomalie) che li rendono meno affidabili di altri. Per descrivere realtà
organizzative in modo efficace si sono individuate delle regole a cui devono sottostare gli schemi. In particolare Codd
(studioso IBM) ha definito il concetto di dipendenza funzionale fornendo le regole per normalizzare le tabelle.
Dipendenza funzionale
Data una tabella T e denominati x e y 2 sottoinsiemi e i suoi attributi, si dice che x determina funzionalmente y se non
possono esistere 2 tuple con valori uguali in x e valori diversi in y. Fissati i
valori di x risulta univocamente determinato il valore degli attributi y. NB = Ricordando le caratteristiche della chiave
primaria è chiaro che tutti gli attributi che non appartengono alla chiave primaria dipendono funzionalmente da essa.
Una dipendenza funzionale si dice di tipo parziale se y dipende solo da una parte degli attributi di x; in caso contrario si
avrà una dipendenza completa.
Prima forma normale
Una tabella T (A1,A1,..,An) si dice posta in prima forma normale (1NF) se tutti gli attributi che vi compaiono sono
semplici.
Per passare alla 1NF occorre sostituire ogni attributo strutturato con tanti attributi semplici quanti sono gli elementi che
lo compongono e occorre eliminare gli attributi multipli sostituendo ad ogni tupla che contenga più di un valore
nell’attributo multiplo, tante tuple quanti sono i valori multipli.
Sorgeranno altri problemi soprattutto di ridondanza e di appesantimento delle procedure di aggiornamento. Questi
problemi si risolvono sostituendo l’entità originaria con 2 entità in relazione tra loro.
Seconda forma normale
Una tabella T (A1, A2,…,An) si di dice posta in seconda forma normale (2NF) se è in prima forma normale e tutti gli
attributi che non fanno parte della chiave primaria hanno una dipendenza funzionale completa da tutte le possibili chiavi
candidate di T.
In pratica tutti gli attributi che non appartengono alla chiave devono dipendere dall’intera chiave e non solo da una sua
parte.
Per converti re uno schema posto in prima forma normale in seconda forma normale dovrò individuare per ogni
attributo y che dipende parzialmente dalla chiave il sottoinsieme x degli attributi della chiave da cui dipende in modo
completo e costruire una nuova tabella avente x per chiave primaria e y come attributo togliendolo dalla tabella
originaria.
Terza forma normale
Una tabella T (A1,A2,…,An) si dice posta in terza forma normale (3NF) se è in seconda forma normale e tutti gli
attributi che non fanno parte della chiave primaria dipendono esclusivamente dalla chiave stessa. Per convertire in uno
scherma 3NF una tabella T che è già in 2NF e ha come chiave primaria x occorre individuare gli attributi z che
dipendono funzionalmente da un sottoinsieme di attributi y diverso da x e poi occorre costruire una nuova tabella avente
y come chiave primaria e z per attributo togliendolo dalla tabella originaria.
Forma normale di Boyce-Codd
Una tabella è in BCNF se e solo se ciascun determinante è una chiave candidata.
Cenni alla pubblicazione dei dai con pagine statiche e dinamiche
Le pagine web dinamiche sono pagine il cui codice HTML viene generato al volo da un’elaborazione sul server per cui
ad ogni richiesta di tipo diverso il codice ricevuto e interpretato dal browser è sempre diverso ( il codice è eseguito in
modo completamente nascosto all’utilizzatore finale). Le tipiche applicazioni sono le interrogazioni a DB remoti per
ottenere servizi quali forum, motori di ricerca, FAQ etc.
Di solito le applicazioni Internet usano combinazioni di 3 tipologie di pagina, si definisce infatti concettualmente il
modello di applicazione a 3 livelli (Three-Tred) in cui il livello di interfaccia per l’utente (front-end) corrisponde allo
sviluppo di pagine HTML e/o DHTML, il livello intermedio (middle ware) corrisponde allo sviluppo di pagine ASP,
PHP, JSP che garantiscono il collegamento tra il DB e l’utente finale. Infine c’è l’ultimo livello (back end)
corrispondente al sw di sviluppo e mantenimento dei DB remoti.
Attualmente i principali linguaggi dinamici utilizzati sono:
1)ASP (Active Server Pages) deriva da Visual Basic e come questo è della Microsoft. Le pagine ASP possono
comprendere sia righe in puro HTML sia veri e propri programmi scritti in un particolare linguaggio di scripting (un
programma scritto così viene detto script). I linguaggi supportati dalle ASP sono VBscript, Javascript, Perscript e Pyton.
Un file ASP deve avere come estensione.ASP. Il codice ASP è racchiuso tra <%
%>.
2)PHP permette lo sviluppo unicamente di programmi lato server cioè eseguiti sul server web con eventuale accesso a
DB e file i cui risultati vengono inviati ai browser sottoforma di codice HTML puro. PHP fornisce un vero e proprio
linguaggio di programmazione quindi non si appoggia ad altri linguaggi. PHP consente tra lì’altro l’accesso ai DB e tra
quelli più usati ci sono MySQL…
3) JSP (Java Server Pages) v. pag. 340,341. Per estrarre dati da un DB sono necessarie 2 fasi, una per stabilire la
connessione e l’altra per effettuare la vera e propria interrogazione del DB.