Basi di dati - INAF IASF BOLOGNAbulgarelli/AB/Basi_di_Dati_files/1.pdf · Andrea Bulgarelli 3 DBMS:...

26
Andrea Bulgarelli - Basi di Dati 1 Basi di dati Docente: Andrea Bulgarelli [email protected] Argomento: presentazione corso (1.0) Università di Modena e Reggio Emilia

Transcript of Basi di dati - INAF IASF BOLOGNAbulgarelli/AB/Basi_di_Dati_files/1.pdf · Andrea Bulgarelli 3 DBMS:...

Andrea Bulgarelli - Basi di Dati 1

Basi di dati

Docente: Andrea Bulgarelli [email protected] Argomento: presentazione corso (1.0)

Università di Modena e Reggio Emilia

2 Andrea Bulgarelli - Basi di Dati

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 del corso

3 Andrea Bulgarelli

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, Visual Basic, C++, ASP (per la programmazione Internet).

4 Andrea Bulgarelli

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

5 Andrea Bulgarelli

  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

Transazioni (2)

6 Andrea Bulgarelli

  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

Transazioni (3)

7 Andrea Bulgarelli

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

8 Andrea Bulgarelli

Stati di una transazione

9 Andrea Bulgarelli

Problemi di concorrenza   Lost update problem

  Uncommitted dependency problem

  Inconsistency analysys problem: consiste nell’eseguire analisi sui dati durante la modifica di questi (si vedano i DSS, Decision Support System).

Read R

Andrea Bulgarelli 10 Andrea Bulgarelli

Principali servizi SQL Server

 Motore DBMS relazionale: scalabilità, prestazioni

 Analysis services: strumenti per analizzare i dati memorizzati per il supporto alle decisioni.

Andrea Bulgarelli 11 Andrea Bulgarelli

Panoramica

Net libraries

Andrea Bulgarelli 12 Andrea Bulgarelli

Comunicazione C/S

Andrea Bulgarelli 13 Andrea Bulgarelli

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 14 Andrea Bulgarelli

Autenticazione   La modalità di default

è l’autenticazione Windows.

Andrea Bulgarelli 15 Andrea Bulgarelli

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 16 Andrea Bulgarelli

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 17 Andrea Bulgarelli

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.

18 Andrea Bulgarelli

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

19 Andrea Bulgarelli

Database di sistema

20 Andrea Bulgarelli

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

21 Andrea Bulgarelli

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

22 Andrea Bulgarelli

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

23 Andrea Bulgarelli

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)

24 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] )

25 Andrea Bulgarelli

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

26 Andrea Bulgarelli

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