vuoi
o PayPal
tutte le volte che vuoi
MODELLO CONCETTUALE
E' la struttura usata in fase di progettazione, che attraverso uno schema concettuale rappresenta la
realtà categorizzandoli in classi di oggetti e nelle loro relazioni. Descrive i dati in modo indipendente
dal modello logico.
Il sistema usato si chiama ER (entity relationship) dove abbiamo appunto le entità, che
rappresentano le categorie di oggetti aventi delle proprietà in comune (disegnati graficamente come
un rettangolo con all'interno il nome del gruppo), collegati, da un motivo logico, dalle relazioni
(rappresentati da un rombo con all'interno l'iniziale della relazione).
Alle entità e alle relazioni vengono aggiunti gli attributi, cioè determinate informazioni che
completano il quadro delle notizie (es. la data di nascita, la città di residenza di un autore). Gli attributi
si indicano con un cerchio vuoto.
Per evitare che nel software siano inseriti dati che si possano confondere, ad ogni entità va attribuito
anche un id, cioè un codice di identificazione utile al calcolatore per la distinzione di altri dati simili.
L'id viene indicato con un cerchio annerito e può essere anche esterno (es. quando due numeri di
matricola si possono confondere s eprovenienti da due università diverse). L'id solitamente
rappresenta la chiave interna dell'entità, e non può avere valore nullo.
Si possono inoltre formare gerarchie di generalizzazione, cioè una data entità può comprendere
un'entità di espansione minore che comunque mantiene le caratteristiche dell'entità principale (es. gli
studenti sono persone). Si tratta quindi di un legame di specializzazione, dove le entità principali si
chiamano entità padre mentre quelle minori entità figlie.
Tutti gli attributi dell'entità padre andranno anche alle figlie, mentre non è vero il contrario.
Le gerarchie possono essere totali, quando l'unione delle entità minori danno forma esattamente a
quella principale, oppure parziali, quando ciò non avviene.
Inoltre possono essere esclusive, quando i componenti delle entità minori non possono essere
mischiate ad altre (es. maschio-femmina), o sovrapposte, quando invece possono sovrapporsi (es.
lavoratore-studente).
Queste caratteristiche danno forma a quattro possibilità di combinazione.
Nello schema ER vengono rappresentate attraverso una freccia che parte dalle sottoclassi per
arrivare all'entità principale, tra parentesi devono essere indicate anche se sono intere o sovrapposte
e parziali o totali.
Le relazioni possono essere anche ricorsive, cioè legami logici fra elementi interni alla stessa entità
(es.opera e il suo seguito). Per distinguere le due direzioni possibili della relazione, si aggiungono due
termini che qualificano il ruolo dei due oggetti dell'entità.
La cardinalità corrisponde ai legami massimi e minimi che vigono fra due entità, precisamente al
numero di soggetti di un'entità che può interagire con l'altra (es. una persona può essere residente in
una sola città--> cardinalità max 1, cardinalità min 1. Una città invece può avere più persone-->
cardinalità max N, cardinalità min 0).
Le relazioni possono essere divise in 3 categorie: 1 a 1, corrispondenza unica, 1 a N, corrispondenza
unica a senso unico, N a N, non c'è corrispondenza unica.
MODELLO RELAZIONALE
E' il risultato della nozione di relazione matematica, cioè il prodotto fra ogni elemento di ogni dominio
per ogni elemento degli altri (prodotto cartesiano), da cui estrapoleremo solo le corrispondenze
corrette. La rappresentazione grafica avviene per mezzo di tabelle.
Inizialmente si forma una tabella per ogni entità, dove ogni colonna rappresenta un diverso attributo,
mentre le righe rappresentano i diversi inserimenti di dati.
L'insieme di righe si chiama tupla, l'insieme di colonne, attributo, e ogni casella si può definire cella.
Il numero delle righe si chiama cardinalità, quello delle colonne si chiama grado, le caselle contenente
i nomi delle colonne schema della relazione.
Lo schema è la struttura invariabile della tabella, mentre l'istanza è la parte variabile cioè da
immettere. La singola casellina è il valore della relazione.
Ogni colonna ha un insieme di informazioni dello stesso tipo. Le righe sono orientate ai valori, cioè
hanno un valore univoco che permette di riconoscermi nella riga.
[In informatica viene creato un dominio a seconda della tipologia del dato (testo, numero), ogni
colonna avrà lo stesso dominio]
Per inserire un valore nullo--> si usa il valore NULL. Inserendolo in una casella vuota, serve a far
funzionare la relazione anche se manca un'informazione non obbligatoria nelle righe. Questo valore
introduce una nuova istituzione di verità (non lo so, oltre a vero e falso).
Per trasformare nella tabella le gerarchie di generalizzazione--> vi sono tre possibilità: eliminare
le entità figlie e mantenere solo quella padre (quella usata), eliminare l'entità padre e tenere solo le
entità specializzate, oppure sostituire delle relazioni generiche a quelle di gerarchizzazione.
Devono quindi essere eliminate le gerarchie. Nel primo caso, dopo aver accorpato tutti i dati nell'unica
entità padre, per evitare perdite d'informazioni, bisogna inserire un ulteriore attributo (TIPO) che
definirà a quale sottoclasse appartiene al momento dell'inserimento. Nel caso di gerarchie totali il
valore non potrà essere nullo, nel caso di gerarchie esclusive il numero di possibilità da inserire sarà
uguale al numero di entità accorpate, nelle gerarchie sovrapposte dovrà esserci la possibilità di
inserire valori misti.
Per trovare una riga--> es. "Trova età < 20", "Trova età < 20 and/or città = 'MI'"
Tra le richieste possono vigere dei connettivi che influenzano il risultato dell'interrogazione, questi
connettivi sono and, or e not a.
A B AND A B OR A NOT A
V V V V V V V F
V F F V F V F V
F F F F F F
Per mettere in relazione due tabelle--> il metodo più semplice è di aggiungere un attributo alla
prima tabella riguardante la seconda, in cui verrà immesso il codice corrispondente della seconda
tabella. Questo nel caso in cui almeno una delle due entità abbia una corrispondenza univoca con
l'altra (film-produzione).
[Il fatto che tutte le caratteristiche di una realtà possano essere rappresentate esclusivamente
attraverso dei valori che descrivono i singoli oggetti, si chiama orientamento ai valori.]
Nel caso in cui le corrispondenze delle entità sono multiple (film-attori), si creerà un ulteriore tabella
che rappresenterà la relazione (PARTECIPA (film, attore)), in cui ogni riga sarà il legame di un
soggetto di un'entità con un soggetto dell'altra (Pulp Fiction-John Travolta, Pulp Fiction-Uma
Thurman). Bisogna mettere nella tabella anche gli attributi della relazione dello schema ER.
L'attributo o la tabella per mettere in collegamento le due tabelle si definisce chiave esterna, in
quanto contiene e gestisce le chiavi primarie. Può contenere valori nulli.
Per garantire una coerenza di dati--> il DBMS usa una serie di vincoli, che garantiscono che le
corrispondenze siano corrette e coerenti sia internamente che rispetto allo schema della base di dati:
-Vincoli di dominio--> funzione che permette di confinare dei valori entro un certo range (es. età > 0
and età < 120).
Vi è anche il vincolo di dominio NotNull che impedisce l'inserimento di valori nulli.
-Vincoli di chiave--> ogni riga di ogni tabella deve essere identificata univocamente, si usa il concetto
di primary key, che solitamente è l'id e non ammette valori nulli.
-Vincoli di integrità referenziale--> garantiscono che i legami fra righe di tabelle diverse siano
coerenti. Quindi che si possa risalire, partendo da un dato, alle informazioni riguardo alle tabelle
legate.
Algebra relazionale
L'algebra relazionale è un linguaggio che consente l'interrogazione e l'estrazione di informazioni dalla
base di dati attraverso operazioni logiche nella tabella.
Ogni operazione dell'algebra relazionale ha un input e un output. L'operazione di input avviene
attraverso le tabelle di partenza su cui si deve svolgere l'operazione algebrica. L'operazione di output
consiste invece nella restituzione di una tabella filtrata a seconda della nostra richiesta/condizione;
sarà quindi una tabella con lo stesso o minor numero di righe.
Sulla seconda tabella si possono poi fare ulteriori operazioni, portando così il riusultato sempre più
vicino a quello ricercato.
L'operazione di partenza è quella di selezione, indicata con la lettera greca sigma seguita da una
parentesi contenente il nome della tabella.
La selezione filtra le righe della tabella che corrispondono alle caratteristiche di vincolo che ho
comandato (questa condizione prende il nome di condizione di selezione, es. persone con età
maggiore di 20). Mantiene le stesse colonne e filtra soltanto le righe.
In SQL selezione = FROM Condizione di selezione = WHERE
La seconda operazione è quella di proiezione, indicata con P greco, che invece fa l'operazione
inversa. Prende tutte le righe ma prende in considerazione solo alcune colonne (es. colonne:
nazionalità e nome). La condizione di proiezione è posta sotto il P greco.
In SQL = SELECT
[Posso fare una catena che fa internamente la selezione ed esternamente la proiezione.
Es.--> recuperare i cognomi delle persone che hanno più di 20 anni. Prima internamente faccio la
selezione in cui elimino le persone con meno di 20 anni. In seguito su questa tabella virtuale faccio la
proiezione.
Si legge "Seleziona le persone che hanno più di 20 anni e restituiscimi solo i cognomi".
Queste due operazioni non si possono invertire, in quanto la proiezione butta via le altre colonne.]
Una terza categoria di operazioni nell'algebra relazionale sono le operazioni insiemistiche. Esse
sono l'intersezione, l'unione e la differenza. Per effettuare ciò, gli elementi dei due insiemi devono
essere compatibili, cioè devono avere lo stesso tipo e numero di attributi.
Intersezione--> crea un insieme che contiene solo le righe che compaiono in entrambi gli insiemi
d'ingresso.
Unione--> crea un insieme riportanti tutte le righe degli insiemi in ingresso.
Differenza--> crea un insieme che riporta le righe che compaiono solamente in un insieme e non
nell'altro.
L'ultima operazione è il prodotto cartesiano che, come già