Parte prima: Informazione, dati e loro gestione
Informatica
Scienza che studia i processi di rappresentazione, gestione, trasformazione dell’informazione e l’automazione di questi processi
sistema informativo
sistema che rappresenta e gestisce le informazioni di un organizzazione
- es. DBMS
base di dati
insieme di dati (gestito da un sistema informativo come il DBMS) utilizzati per il supporto allo svolgimento delle attività di un ente
dati
In informatica, i dati sono insiemi di simboli (numeri, lettere, ecc.) che da soli non hanno molto significato (informazione grezza), ma che possono essere elaborati per ottenere informazioni utili.
Parte seconda: DBMS vs file system → conocorrenti e atomiche
DBMS = sistema informativo
- ideale per gestire collezioni di dati di un certo tipo:
- grandi
- punto di commit = scenario tracciato pk corrispondente ad una situazione di coerenza (utile in caso di guasti)
- ideale per grandi aziende strutturate in settori, il sistema informativo si scompone tra questi dipartimenti e le informazioni devono essere condivisibili per l’esecuzione coordinata delle attività
- Dato che le basi di dati sono condivise, è possibile che si verifichi concorrenza. La lettura nn è un problema. scrivere si, bisogna assicurare che siano operazioni atomiche.
- ridondanza (non necessariamente negativa)
- rischio di incoerenza (ogni informazione ripetuta va aggiornata in caso di modifica)
persistenti
condivise
3 effetti collaterali
- garantisce
- privatezza: lo vedo solo io
- affidabilità: tutela i tuoi dati
- efficienza: risparmia tempo e risorse
- efficacia: funziona
Differenza tra file system e DBMS nella gestione di basi di dati
PERMESSI DI ACCESSO
- file system: gestisce l’accesso ai singoli file
- DBMS: : gestisce l’accesso ai DATI interni ai file
ACCESSO ALLA STRUTTURA DEI FILE
- file system tradizionale: ridondanza delle descrizioni della struttura dei file.
ogni applicazione che accede ai dati deve conoscere e gestire la struttura dei file (ad esempio, quali campi contiene, il loro tipo, la lunghezza, l'ordine, ecc.). Queste informazioni sono spesso codificate direttamente nel codice dell'applicazione. Di conseguenza, se più applicazioni utilizzano gli stessi dati, ciascuna deve avere la propria dedescrizone della struttura dei file.
- DBMS: Centralizzazione delle descrizioni.
Un Database Management System (DBMS), invece, memorizza la descrizione della struttura dei dati in un catalogo centralizzato, noto anche come metadati. Le applicazioni che accedono al database possono interrogare il catalogo, che ogni applicazione può interrogare
Parte terza: I modelli dei dati
In base alla fase di progettazione e tipo di struttura dati che si vuole realizzare, si distinguono categorie di modelli di rappresentazione dei dati
modello dei dati e costruttori di tipo
MODELLO DEI DATI → logica con cui gestisco i dati
Insieme di concetti utilizzati per organizzare i dati di interesse e descriverne la struttura
- Esempi di modelli: modello relazionale, gerarchico, a oggetti, ecc.
COSTRUTTORE DI TIPO → rappresentazione grafica dei dati
- Sono gli strumenti forniti dal modello per creare strutture di dati complesse.
Esempi:
- Nel modello relazionale, il costruttore principale è la tabella (relazione).
- Nel modello gerarchico, è l'albero.
- Nel modello a oggetti, sono classi e oggetti.
schema e istanza
Il concetto di schema è anch’esso generale nei DBMS, ma ora lo applichiamo nel modello relazionale.
Schema → descrive come si organizzano i dati
- nomi con chiara semantica
- il progettista fa lo schema
- si cerca di progettare uno schema che duri il più possibile senza doverlo modificare/cambiare
Istanza
- Nel contesto generale dei database, un'istanza rappresenta l'insieme completo dei dati
- Nel contesto specifico del modello relazionale, il termine istanza = tupla = singola riga di una tabella
modello fisico
- implementazione fisica del programma che rappresenta il modello logico per mezzo di reali strutture di memorizzazione e gestione dei dati (file; ad esempio, record con puntatori, ordinati in un certo modo)
- Nella progettazione di un DBMS si devono costruire 2 modelli indipendenti dall’apparato fisico tecnologico, li vediamo ora…
modello concettuale
- nelle fasi preliminari (infatti nello schema di sotto nn è presente) è utilizzato per definire i concetti del mondo reale (nello specifico relativo all’organizzazione per cui si sta realizzando il DBMS)
- esempio: modello Entity-Relationship nel caso del modello relazionale??
modelli logici
- classe di modelli che organizzano i dati del database, prima di progettarlo fisicamente
- indipendenza fisica = indipendenza dello schema logico dal livello fisico
- caratteristica dei modelli logico e concettuale
schema esterno
- fornisce una vista parziale derivata dallo schema logico, pk come abbiamo detto prima, la condivisione dei dati implica la gestione di permessi di accesso. Di fatto se in un organizzazione ci sono più reparti con compiti specifici, posso creare più viste parziali ad hoc a partire dal modello logico.
- notare che lo schema esterno può corrispondere allo schema logico (se nn ho necessità di creare viste parziali)
- indipendenza logica = (proprietà nn sempre implementabile) indipendenza degli schemi esterni dallo schema logico
- Perché le viste rimangano calcolabili (quindi indipendenza logica), devo conservare i campi dello schema logico utilizzate per derivare lo schema esterno
- quindi il DBMS deve limitare certe operazioni sullo schema logico per garantire la coerenza delllo schema esterno
Parte quarta: Linguaggi
- SQL= linguaggio standard per interagire con DBMS relazionali
- dal terminale, molto manuale
- all’interno di un linguaggio di programmazione ospite
- il terzo caso da opzioni aggiuntive
- il quarto caso è per semplificare l’accesso ai comandi SQL
- il DBMS unico che so usare è PostgreSQL ma nn lo uso direttamente, pk complicato, uso un interfaccia grafica (PGAdmin) che semplifica le operazioni, quali creazione di tabelle e query. Ogni click sull’interfaccia, equivale a sotto operazioni tecniche che mi risparmio
- distinzione importante
i linguaggi di progettazione dei database lavorano sulle istanze e sugli schemi quindi le singole operazioni si dividono in: