vuoi
o PayPal
tutte le volte che vuoi
TIPI DI RELAZIONI
• Relazione matematicaà come nella teoria degli insiemi
• Relazione secondo il modello relazionale
• Relazione (relationship)à rappresenta una classe di fatti, nel modello Entity-Relationship;
tradotto anche con associazione e correlazione
TABELLE E RELAZIONI
In una tabella che rappresenta una relazione
• L’ordinamento tra le righe è irrilevante
• L’ordinamento tra le colonne è irrilevante
Una tabella rappresenta una relazione se:
• Le intestazioni delle colonne sono diverse tra loro
• I valori di ogni colonna sono fra loro omogenei
VANTAGGI DI UNA STRUTTURA BASATA SU VALORI:
• Indipendenza delle strutture fisiche che possono cambiare dinamicamente
• Si rappresenta solo ciò che è rilevante dal punto di vista dell’applicazione
• L’utente finale vede gli stessi dati dei programmatori
• I dati sono portabili più facilmente da un sistema ad un altro
• I puntatori sono direzionali
SCHEMA DI RELAZIONE
Un nome R con un insieme di attributi A1,…,An R(A1,…,An)
à
SCHEMA DI BASI DI DATI
Insieme di schemi di relazione R= {R1(x1),…,Rk(xk)}
à
INFORMAZIONE INCOMPLETA Soluzione:
nome Secondo cognome
nome -valore nullo (null)à denota l’assenza di un valore del dominio
Gabriel Giulio Grava Si devono imporre restrizioni sulla presenza di valori nulli.
Maria DE IACO
Dario Ferrari
TIPI DI VALORE NULLO: I DBMS non distinguono i tipi di
• Valore sconosciuto valore nullo
• Valore inesistente
• Valore senza informazione
VINCOLO DI INTEGRITÀ
Proprietà che deve essere soddisfatta dalle istanze che rappresentano informazioni corrette per
l’applicazione.
Un vincolo è una funzione booleana associa ad ogni istanza il valore vero o falso
à
Sono utilizzati per:
• Descrizione più accurata della realtà
• Contributo alla qualità dei dati
• Utili nella progettazione
• Dai DBMS nell’esecuzione delle interrogazioni
TIPI DI VINCOLI:
• INTRARELAZIONALI:
Vincoli su valori (o di dominio)
§ Vincoli di ennupla esprimono condizioni sui valori di ciascuna ennupla,
§ à
indipendentemente dalle altre
• INTERRELAZIONALI
CHIAVE DI UNA RELAZIONE
Insieme di attributi che identificano le ennuple di una relazione
• un insieme K di attributi è super chiave per r se r non contiene due ennuple distinte t1 e t2
con t1[K] = t2[K] (cioè̀
• K è chiave per r se è una super chiave minimale per r non contiene un’altra super
chiave)
Un’ennupla non può contenere ennuple distinte ma uguali
Ogni relazione ha come super chiave l’insieme degli attributi su cui è definita, ha quindi almeno
una chiave.
IMPORTANZA DELLE CHIVI
l’esistenza delle chiavi garantisce l’accessibilità a ciascun dato della base di dati
à le chiavi permettono di correlare i dati in relazioni diverseà il modello relazionale è basato su
à
valori.
In presenza di valori nulli, i valori della chiave non permettono:
• Di identificare le ennuple
• Di realizzare facilmente i riferimenti da altre relazioni
• LA PRESENZA DI VALORI NULLI NELLE CHIAVI DEVE ESSERE EVITATA (o almeno limitata)
CHIAVE PRIMARIA
chiave su cui non sono ammessi nulli
à indicato con sottolineatura
à
INTEGRITÀ REFERENZIALE
• Informazioni in relazioni diverse sono correlate attraverso valori comuni
• In particolare, valori delle chiavi primarie
• Le correlazioni devono essere coerenti
VINCOLO INTEGRITÀ REFERENZIALE
Foreign keyà fra gli attributi X di una relazione R1 ed un’altra relazione R2 impone ai valori su X in R1 di
comparire come valori della chiave primaria di R2. 5
ACCESSO AI DATI
IMPORTAZIONE DEI DATI
Le sorgenti dati possono essere molteplici e il loro accesso dipende ovviamente da dove si trovano, come
sono accessibili ed in che forma sono archiviati i dati.
TIPOLOGIE DI SORGENTI:
• Database
• Internet/intranet (web services,..)
• Files (xsl, csv, txt,…)
ARCHITETTURA SISTEMA CLIENT-SERVER
Quando il server riceve una richiesta dal client, (attraverso il web-server), esegue una serie di elaborazioni
(application server) per preparare la risposta. Molte di queste elaborazioni prevedono accessi in lettura e
scrittura su più database.
I livelli web application e data possono essere sulla stessa macchina fisica o su diverse macchine.
server
client
CLIENT-SERVER NEI SISTEMI INFORMATIVI
à
Client presentazione dell’informazione Separazione funzionale dei dati
à
server gestione dei dati
à
SQL linguaggio ideale per separare gli ambienti
• Client: formula le richieste (interrogazioni/query), elabora risultati
• Server: esegue richieste (interrogazioni/query)
• Rete: trasferisce i comandi di attivazione (ex. Di procedure SQL) e i risultati
SQL è un linguaggio di interrogazione per database progettato per:
• Leggere
• Modificare
• Gestire dati memorizzati in un sistema basato sul modello relazionale
• Creare e modificare schemi di database
• Creare e gestire strumenti di controllo ed accesso ai dati
Linguaggi che si trovano all’interno di SQL:
• DDL (Data Definition Language)à consente di descrivere la struttura delle tabelle e di tutti gli
elementi di supporto (indici, vincoli, trigger, viste…). Viene utilizzato per realizzare lo schema
logico e lo schema fisico del database.
• DML (Data Manipulation Language)à esegue operazioni di inserimento, modifica e cancellazione
dati.
• DCL (Data Control Language)à limiti sui dati (permesso di accesso, vincoli di integrità)
• QL (Query Language)à interroga il database al fine di individuare i dati che corrispondono ai
parametri di ricerca dell’utente.
UTILIZZO DI SQL
L’utente utilizza un software, in genere fornito con il DBMS, in cui introdurre comandi SQL che vengono
agli inviati al DBMS.
L’interazione con il database è scritta in linguaggio SQL mentre il resto dell’applicazione è in comune
linguaggio di programmazione.
I comandi SQL possono poi essere collegati nel programma tramite due modalità:
• “ospitati” nel codice del software e inviati al DBMS all’occorrenza
• Memorizzati all’interno del DBMS e quindi richiamati dal programma
TIPI DI DATO:
• bigint (8 bytes) Contiene valori numerici interi da -4294967296 a 4294967294.
• binary(n) (lunghezza fissa) Contiene dati binari (1 byte) fino ad un massimo di 8000 dati.
• bit (1 bit) Rappresenta i flag (vero/falso o true/false o si/no). Non possono avere valori nulli
e non possono avere indici.
• char(n) (lunghezza fissa) Contiene caratteri ANSI (1 byte) fino ad un massimo di 8000
caratteri.
• datetime (8 bytes) Contiene date tra il 1/gen/1753 e il 31/dic/9999 (precisione al
trecentesimo di secondo).
• decimal(p, s) (da 2 bytes a 17 bytes) Contiene valori tra 10^38 - 1 e - 10^38 -1. Con p cifre
di precisione (massimo 28), e s cifre decimali dopo la virgola (scala).
• float (8 bytes) Contiene numeri reali positivi da 2.23E-308 a 1.79E308 e negativi da -
2.23E-308 a - 1.79E308 (massimo 15 cifre di precisione).
• image Contiene fino a 2147483647 bytes di dati binari (è solitamente usato per le
immagini).
• int (4 bytes) Contiene valori numerici interi da -2147483648 a 2147483647.
• money (8 bytes) Contiene valori monetari da -922337203685477.5808 a
922337203685477.5807
• nchar(n) (lunghezza fissa) Contiene caratteri UNICODE (2 bytes) fino ad un massimo di
4000 caratteri.
• ntext (lunghezza variabile) Contiene caratteri UNICODE fino ad un massimo di
1073741823 caratteri.
• numeric(p, s) E’ equivalente al tipo ‘decimal(p, s)’
• nvarchar(n) (lunghezza variabile) Contiene caratteri UNICODE (2 bytes) fino ad un
massimo di 4000 caratteri.
• real (4 bytes) Contiene numeri reali positivi da 1.18E-38 a 3.40E38 e negativi da -1.18E-38
a -3.40E38 (massimo 7 cifre di precisione).
• smalldatetime (4 bytes) Contiene date tra il 1/gen/1753 e il 31/dic/9999 (precisione al
minuto).
• smallint (2 bytes) Contiene valori numerici interi da -32768 a 32767.
• smallmoney (4 bytes) Contiene valori monetari da - 214748.3648 a 214748.3647
• sql_variant Tipo che può contenere tipi di dati diversi (int, binary, char).
• text (lunghezza variabile) Contiene caratteri ANSI (1 byte) fino ad un massimo di
2147483647 caratteri.
• timestamp (8 bytes) È un contatore incrementale per colonna assegnato automaticamente
da SQL Server 7.
• tinyint (1 byte) Contiene valori numerici interi da 0 a 255.
• uniqueidentifier (16 bytes) E' un identificatore unico a livello globale E' generato
automaticamente da SQL Server.
• varbinary(n) (lunghezza variabile) Contiene dati binari (1 byte) fino ad un massimo di 8000
dati.
• varchar(n) (lunghezza variabile) Contiene caratteri ANSI (1 byte) fino ad un massimo di
8000 caratteri.
• xml è equivalente al tipo ‘ntext’.
•
OPERATORI (SQL Services):
• + Addizione
• - Sottrazione
• * Prodotto
• / Divisione
• % Modulo
• < Minore
• > Maggiore
• <= Minore o Uguale
• >= Maggiore o Uguale
• = Uguaglianza
• <> Disuguaglianza
• AND E logico
• OR O logico
• NOT Negazione DDL
à
Creazione database create database Cinema
CREAZIONE TABELLA
MODIFICA TABELLA
ELIMINAZIONE TABELLAà DROP TABLE <NomeTabella>
ànon è possibile eliminare una tabella a cui fa riferimento una Foreign Key. È prima necessario estinguere il
vincono di Foreign Key.
I VINCOLI
àI vincoli consentono di specificare controlli sui dati, al fine di assicurare la correttezza e consistenza
dell’informazione.
ài vincoli possono essere:
• INTERNI: specificano i controlli sulla singola tabella intesa come entità a se stante
• Di integrità referenziale: riguardano i rapporti tra una tabella e l’altra.
QL
SELECT
à istruzione utilizzata per estrarre informazioni dalla base di dati
EX.
SELECT (DISTINCT)
EX.
SELECT (JOIN)
EX.
LEFT Outer JOIN
UNIONE DI DUE TABELLE
DIFFERENZA
INTERSEZIONE
FUNZIONI DI AGGREGAZIONE
àSQL disponde di alcune modalità