Università di Modena e Reggio Emilia
Basi di dati
Docente: Andrea Bulgarelli
[email protected]
Argomento: presentazione corso (1.0)
Andrea Bulgarelli - Basi di
Dati
1
Materiale didattico
  Web
site:
 www.andrea.bulgarelli.name/corso
  Bibliografia
 Beneventano,
Bergamaschi Guerra Vincini
“Progetto di Basi di Dati Relazionali”,
 SQLBOL (SQL Book On Line)
link disponibile sul sito del corso
  Dispense
Andrea Bulgarelli - Basi di Dati
del corso
2
DBMS: generalità
 
 
Un DBMS è un sistema software in grado di gestire grandi quantità di dati in
modo efficiente. Ad esempio, SQL Server un database può avere
dimensioni da 1 MB a 1 TB (1.048.576 MB).
Le caratteristiche funzionali di un DBMS possono essere così riassunte:
 
 
Supporto per almeno un modello dei dati
Linguaggi di alto livello per la creazione, la manipolazione (inserimento,
modifica e cancellazione) e l’interrogazione dei dati e per il controllo del
database. Da un punto di vista concettuale, i linguaggi di alto livello possono
essere classificati in:
 
 
 
DDL  Data Definition Language: linguaggio non procedurale che permette di definire
e mantenere la struttura del database. Permette inoltre di specificare la connessione tra
le strutture logiche e fisiche del database
DML  Data Manipulation Language: o query language, consente l’interrogazione e la
modifica dei dati del database
DCL  Data Control Language: Gestione degli utenti e assegnazione dei privilegi di
accesso
Gestione delle transazioni
Controllo degli accessi (o protezione):
Resilienza (fault tolerance): garantisce la massima disponibilità mediante le
funzioni di backup e manutenzione in linea, il ripristino automatico nel caso di
malfunzionamenti e la possibilità di installare il DBMS in un cluster per il supporto
del failover.
  Presenza di diversi ambienti di sviluppo e utilità: interfacce di programmazione,
3
Andrea Bulgarelli
Visual Basic, C++, ASP (per la programmazione Internet).
 
 
 
Transazioni
 
Una transazione è l’unità fondamentale di lavoro
di un DBMS. Essa consiste in diversi comandi
DML che leggono e aggiornano il database. Un
DBMS deve gestire:
  Transazioni
concorrenti: due transazioni si dicono
concorrenti se avvengono nello stesso istante di
tempo.
  Malfunzionamenti:
 
 
 
Transaction abort: interruzione di una transazione. Non
comporta perdita dei dati. Causata da una situazione prevista
dal programma
System abort: interruzione di transazioni attive derivanti da
un’anomalia hardware o software. Si assume che il
contenuto della memoria permanente sopravviva, mentre
viene perduto il contenuto della memoria temporanea
System crash: anomalia che danneggia il contenuto della
memoria permanente
Andrea Bulgarelli
4
Transazioni (2)
 
L’aggiornamento non viene considerato
definitivo fino a quando non viene inoltrato il
COMMIT, che indica la fine della transazione. Si
consideri il seguente esempio di un
trasferimento bancario tra due conti, per
comprendere meglio che cosa sia una
transazione:
  BEGIN
TRANSACTION
  Accredita 1 ML sul conto 2254/1
  Addebita 1 ML sul conto 2378/1
  COMMIT TRANSACTION
Andrea Bulgarelli
5
Transazioni (3)
  che
potrebbe anche essere eseguita nel
seguente ordine:
 BEGIN
TRANSACTION
 Addebita 1 ML sul conto 2378/1
 Accredita 1 ML sul conto 2254/1
 COMMIT TRANSACTION
Andrea Bulgarelli
6
Transazione (4)
 
 
L’elaborazione delle transazioni in un DBMS garantisce
che tutte le manipolazioni dei dati siano eseguite come
unità di lavoro individuale, anche in presenza di
malfunzionamenti.
Per raggiungere questo obiettivo le transazioni devono
rispettare le proprietà ACID:
Atomicità: una transazione è confermata o annullata senza
possibilità intermedie. Se una transazione è confermata, tutti i
suoi effetti sono mantenuti;
  Coerenza: questa proprietà fa in modo che le transazioni non
consentano al database di raggiungere uno stato logico non
corretto. In questo caso la regola logica è che il denaro non può
essere né creato né distrutto;
  Isolamento: l’isolamento separa le transazioni concorrenti da
altre transazioni concorrenti.
  Durabilità: Successivamente al commit di una transazione, la
durabilità garantisce che gli effetti della transazione restino validi
anche in caso di errori del sistema
7
Andrea Bulgarelli
 
Stati di una transazione
Andrea Bulgarelli
8
Problemi di concorrenza
 
Lost update problem
 
Uncommitted
dependency problem
Read R
 
Inconsistency analysys
problem: consiste
nell’eseguire analisi sui
dati durante la modifica
di questi (si vedano i
DSS, Decision Support
System).
Andrea Bulgarelli
9
Principali servizi SQL Server
  Motore
DBMS relazionale: scalabilità,
prestazioni
  Analysis services: strumenti per analizzare
i dati memorizzati per il supporto alle
decisioni.
Andrea Bulgarelli
Andrea Bulgarelli
10
Panoramica
Net libraries
Andrea Bulgarelli
Andrea Bulgarelli
11
Comunicazione C/S
Andrea Bulgarelli
Andrea Bulgarelli
12
Architettura di protezione
 
Autenticazione: determina se l’utente ha o
meno un account di accesso valido per
connettersi a un’istanza di SQL Server:
  di
Windows: sfrutta il sistema di protezione di
Windows
  di SQL Server: indipendenti da qualsiasi account
utente o gruppo Windows
 
Autorizzazione: determina che attività l’utente
può svolgere dopo essere stato autenticato.
Andrea Bulgarelli
Andrea Bulgarelli
13
Autenticazione
 
La modalità di default
è l’autenticazione
Windows.
Andrea Bulgarelli
Andrea Bulgarelli
14
Autorizzazione
 
 
Dopo che SQL Server 2000 ha autenticato un utente,
determina se tale ID di accesso è stato autorizzato a svolgere
attività in un qualsiasi database.
Account utente: In generale, un amministratore di database
deve associare un ID di accesso a un ID utente prima che
qualcuno con quell’ID di accesso possa accedere agli oggetti
e svolgere operazioni nel database in questione. Un
amministratore di database applica i permessi di protezione
per gli oggetti del database.
Andrea Bulgarelli
Andrea Bulgarelli
15
Autorizzazione (2)
 
Account guest: Se un ID di accesso non è stato
esplicitamente associato con un qualsiasi ID
utente in un database, esso viene associato
all’ID dell’utente guest di quel database, se
esiste. Se un database ha un account utente
guest, l’accesso è limitato ai diritti che vengono
conferiti all’utente guest. Se un database non ha
un account utente guest, si può accedere al
database solo se si dispone di un account utente
valido. Di default, tutti i database utente appena
creati non dispongono di un account utente
guest.
Andrea Bulgarelli
Andrea Bulgarelli
16
Autorizzazione (3)
 
Ruoli: i ruoli sono usati per raccogliere gli utenti
in una singola unità e poi attribuire a tutti gli
stessi permessi. Ogni utente in un database
appartiene al ruolo di database pubblico e
fruisce di tutti i permessi assegnati al ruolo
pubblico, a meno che non si sia deciso di negare
a un determinato utente determinati permessi. I
diritti aggiuntivi devono essere conferiti
esplicitamente a un utente o a un gruppo di
utenti a cui l’utente appartiene.
Andrea Bulgarelli
Andrea Bulgarelli
17
Database e file di database
 
Un database SQL server …
  È
un insieme di molti oggetti (fino ad un massimo di
231-1)
(di cui un massimo di 32767 database)
  È proprietà di un singolo utente, ma può contenere
oggetti di proprietà di altri utenti
  Dispone di tabelle di sistema per catalogare le
definizioni del database
  Gestisce un proprio insieme di account utente e
protezioni
  Dispone di un log e gestisce le transazioni
  Può espandersi su più unità disco e macchine
  Ha dimensione minima di 1MB e massima
1.000.000MB
Andrea Bulgarelli
18
Database di sistema
Andrea Bulgarelli
19
File di database
  Un
database SQL server consiste di tre
tipi di file:
 MDF:
file di dati primario che elenca tutti gli
elementi nel database ed i dati memorizzati
 NDF: file di dati secondario (può non essere
presente)
 LDF: file di log delle operazioni
Andrea Bulgarelli
20
Esempio (esecuzione da Query
Analyzer)
CREATE DATABASE Sales_AB
ON
( NAME = Sales_AB_dat,
FILENAME = ‘C:\sqlserver\data\sales_AB_Dat.mdf',
SIZE = 5,
MAXSIZE = 50,
FILEGROWTH = 5 )
LOG ON
( NAME = 'Sales_AB_log',
FILENAME = ‘C:\sqlserver\data\sales_AB_Log.ldf',
SIZE = 5MB,
MAXSIZE = 25MB,
FILEGROWTH = 5MB )
GO
Andrea Bulgarelli
21
Considerazioni per il design di un
database
Nella progettazione di un database, per la realizzazione fisica
del database bisogna tenere presente:
  Lo scopo del database
  Le regole di normalizzazione
  L’integrità dei dati
  La sicurezza del sistema e l’accesso ai dati
  Esigenze di performance
  La gestione e manutenzione del database
  Le dimensioni stimate della base dati
Andrea Bulgarelli
22
Modifica di un database
  La
modifica di un database in genere
riguarda
 Il
cambio del nome del database
 Aggiungere uno o più nuovi file o filegroup al
database
 Aggiungere uno o più nuovi file di log
 Rimuovere file o filegroup dal database
 Modificare un file esistente del database per
  Aumentare
il valore della proprietà SIZE
  Modificare le proprietà MAXSIZE o FILEGROWTH
  Modificare il nome del file (NEWNAME)
23
Andrea Bulgarelli
Formato ALTER DATABASE
ALTER DATABASE database
{
ADD FILE <filespec> [,...n] [TO FILEGROUP
filegroup_name]
| ADD LOG FILE <filespec> [,...n]
| REMOVE FILE logical_file_name
| ADD FILEGROUP filegroup_name
| REMOVE FILEGROUP filegroup_name
| MODIFY FILE <filespec>
| MODIFY FILEGROUP filegroup_name
filegroup_property
}
<filespec> ::=
(NAME = logical_file_name
[, FILENAME = 'os_file_name' ]
[, SIZE = size]
[, MAXSIZE = { max_size | UNLIMITED } ]
[, FILEGROWTH = growth_increment] )
Andrea Bulgarelli
24
Esempio – Alter Database
USE master
GO
CREATE DATABASE Test1 ON
(
NAME = Test1dat1,
FILENAME = 'c:\mssql\data\t1dat1.mdf',
SIZE = 5MB,
MAXSIZE = 100MB,
FILEGROWTH = 5MB
)
GO
ALTER DATABASE Test1
ADD FILE
( NAME = Test1dat2,
FILENAME = 'c:\mssql\data\t1dat2.ndf',
SIZE = 5MB,
MAXSIZE = 100MB,
FILEGROWTH = 5MB )
GO
Andrea Bulgarelli
25
Rimozione di un database
 
Sintassi
DROP DATABASE database_name [,...n]
 
Esempio
DROP DATABASE publishing
 
Attenzione a NON avere il database aperto (ad
es. in un query analyzer) quando lo si vuole
eliminare
Andrea Bulgarelli
26