Appunti di Basi di Dati: Introduzione

Questo articolo presenta un ristretto vademecum di nozioni introduttive utili per il corso d’Informatica di Basi Dati.

Sistema Informatico

Un sistema informativo ha lo scopo di organizzare e gestire delle informazioni. La parte automatizzata di tale sistema prende il nome di sistema informatico.

Dato e Informazione

Le informazioni nei sistemi informatici vengono rappresentate attraverso dei dati, bit ad esempio. Tali dati di per sè non hanno alcun significato e per fornire informazioni hanno bisogno di essere interpretati.

Base di dati

Un Database, o DB, è una collezione di dati utilizzati per rappresentare le informazioni di un sistema informativo.

Sistema di gestione di basi di dati

Un Database Management System, o DBMS, è un sistema software in grado di gestire collezioni di dati che siano grandi, condivise e persistenti.

  • Grandi: possono avere dimensioni enormi;
  • Condivise: applicazioni e utenti devono poter accedere a dati comuni, evitando ridondanza e possibilità di inconsistenze. Per garantire un accesso condiviso, un DBMS dispone di un controllo della concorrenza.
  • Persistenti: il tempo di vita non è limitato a quello delle singole esecuzioni dei programmi che le utilizzano.

Un DBMS deve assicurare affidabilià e privatezza dei dati, oltre ad essere efficiente ed efficace.

  • Affidabilità: il sistema deve conservare intatto il contenuto di una base di dati in casi di malfunzionamenti hardware e software. A tal scopo i DBMS forniscono funzionalità di backup e recovery.
  • Privatezza: attraverso il riconoscimento degli utenti forniscono determinate azioni possibili sui dati.
  • Efficiente: capace di svolgere le operazioni utilizzando un insieme di risorse accettabile dell’utente.
  • Efficace: capace di rendere produttive le attività dell’utente.

Modello di dati

Un modelli di dati è un insieme di concetti che descrivono l’organizzazione e la struttura dei dati in modo che risulti comprensibile al calcolatore.

Modello relazionale

Il modello relazionale permette la definizione dei tipi attraverso il costruttore relazione e l’organizzazione dei dati in insiemi di record a struttura fissa.

Relazione

Una relazione viene spesso rappresentata per mezzo di una tabella, le cui righe rappresentano specifici record e le colonne corrispondono ai campi del record; l’ordine delle righe e delle colonne è sostanzialmente irrilevante.

Modello gerarchico

Il modello gerarchico è basato sull’uso di strutture ad albero.

Modello reticolare

Il modello reticolare è basato sull’uso dei grafi.

Modello a oggetti

Il modello a oggetti, evoluzione del modello relazionale, estende il paradigma della programmazione ad oggetti alle basi di dati.

Modello XML

Il modello XML, rivisitazione del modello gerarchico, presenta i dati insieme alla loro descrizione senza il bisogno di sottostare ad un’unica struttura logica.

Modelli logici

I modelli dei dati precedentemente elencati sono effettivamente disponibili su DBMS commerciali; essi vengono detti logici, per sottolineare il fatto che le strutture utilizzate da questi modelli riflettono una particolare organizzazione (che sia ad alberi, a grafi, a tabelle, o ad oggetti).

Modelli concettuali

I modelli concettuali sono utilizzati per descrivere i dati in maniera indipendente dalla scelta del modello logico. Tali modelli non sono disponibili su DBMS commerciali. Il loro nome deriva dal fatto che essi tendono a descrivere i concetti del mondo reale, piuttosto che i dati per rappresentarli. Essi vengono utilizzati nella fase preliminare del processo di progettazione di una base di dati, per analizzare nel modo migliore la realtà di interesse, senza contaminazioni di tipo realizzativo.

Schemi e istanze

Nelle basi di dati esiste una parte sostanzialmente invariante nel tempo, detta schema, costituita dalle caratteristiche dei dati, e una parte variabile nel tempo, detta istanza o stato della base di dati, costituita da valori concreti.

Lo schema di una relazione è costituito dalla sua intestazione seguito dai nomi dei suoi attributi; per esempio

ALBUM(Artista, NomeAlbum)

L’istanza di una relazione è costituita dall’insieme delle sue righe, variante nel tempo; nell’esempio abbiamo le coppie:

Pink Floyd - The Dark Side of the Moon
The Who    - Who's Next
Beatles    - Sgt. Pepper's Lonely Hearts Club Band

Si dice anche che lo schema sia la componente intensionale della base di dati e che l’istanza sia la componente estensionale.

Livelli di astrazione nei DBMS

  • Schema logico: descrizione dell’intera base di dati per mezzo del modello logico adottato dal DBMS;
  • Schema interno: rappresentazione dello schema logico per mezzo di strutture fisiche di memorizzazione;
  • Schema esterno: descrizione di una porzione della base di dati per mezzo del modello logico. Uno schema esterno può prevedere organizzazioni dei dati diverse rispetto a quelle utilizzate nello schema logico, che riflettono il punto di vista di un particolare utente o insieme di utenti.

Indipendenza dei dati

L’architettura a livelli garantisce l’indipendenza dei dati, principale proprietà dei DBMS.

  • Indipendenza fisica: consente l’interazione con il DBMS in modo indipendente dalla struttura fisica dei dati.
  • Indipendenza logica: consente di interagire con il livello esterno della base di dati indipendentemente dal livello logico.

Linguaggi per basi di dati

Questi linguaggi si distinguono in due categorie:

  • linguaggi di definizione dei dati o Data Definition Languages (DDL), utilizzati per definire gli schemi logici, esterni e fisici e le autorizzazioni per l’accesso.
  • linguaggi di manipolazione dei dati o Data Manipulation Languages (DML), per l’interrogazione e l’aggiornamento delle istanze di una base di dati.

Utenti

  • Amministratore: responsabile della progettazione, controllo e amministrazione della base di dati;
  • Designer e programmatori: definiscono e realizzano i programmi che accedono alla base di dati, utilizzando il DML;
  • Utenti: utilizzano la base di dati per le proprie attività. Essi possono essere finali, che utilizzano programmi con attività predefinite, o casuali, in grado di impiegare linguaggi interattivi per l’accesso e formulare interrogazioni o aggiornamenti ai dati.
Read More

Appunti di Rete: Ethernet

La tecnologia Ethernet è utilizzata dalla stragrande maggioranza delle reti LAN. Lo standard IEEE 802 definisce per le reti Ethernet un solo sottostrato MAC e varie specifiche per lo strato fisico a seconda dell’implementazione.

Read More

Appunti di Rete: Rilevamento e correzione degli errori

Un segnale spedito su un mezzo trasmissivo può subire delle alterazioni e provocare un’errata interpretazione dei bit da parte del ricevitore. Si parla di errore singolo quando solo un bit è corrotto e errore a raffica quando l’alterazione riguarda più di un bit. Gli schemi di rilevazione degli errori si basano sulla tecnica della ridondanza che consiste nella spedizione di bit aggiuntivi.

Read More

Appunti di Android: Storage options

Android fornisce varie opzioni per il salvataggio dei dati. La scelta di quale utilizzare dipende da bisogni specifici quali la privacy, la condivisione con altre applicazioni o la quantità di spazio richiesto.

Read More

Appunti di Android: Threads

Quando viene lanciata un’applicazione, il sistema android crea il main thread, anche chiamato UI thread, con il compito di gestire gli eventi dell’interfaccia utente. Per evitare inconvenienti, non bisogna manipolare l’interfaccia utente da un worker thread: tutte le modifiche alla UI devono avvenire all’interno del main thread.

Read More

Appunti di Rete: Protocollo Internet

Internet è una rete a datagram che opera la commutazione dei pacchetti nello strato di rete, utilizzando indirizzi IP. Offre un servizio di comunicazione senza connessione e consegna best-effort. Mentre lo strato di collegamento permette scambi di pacchetti tra due nodi, lo strato di rete permette scambi di pacchetti tra due host.

Read More

SpaceFloat Game Screen

The Game Screen is the most important of SpaceFloat because it shows the 3D world with which the player can interact. It makes use of the powerful Ashley Engine that helps significantly reduce the complexity of the system. This Screen creates all the systems it needs within its constructor.

Read More

SpaceFloat Asset Management

SpaceFloat uses an instance of the AssetManager provided by libGDX to manage assets. This instance follow the lifecycle of the SpaceFloatGame instance and it is injected into the Screens as a dependence.

Read More

Appunti di Rete: Protocolli di routing

I protocolli di routing permettono ai router di una rete di comunicare tra loro per l’aggiornamento delle tavole di routing. Vi sono protocolli per il routing intradominio (Routing Information Protocol, Open Shortest Path First) e interdominio (Border Gateway Protocol).

Read More

Appunti di Rete: Controllo degli errori nello strato di collegamento

Stop-and-wait ARQ: Il protocollo Stop-and-wait ARQ aggiunge allo stop-and-wait, nel quale il mittente dopo aver spedito un frame aspetta il riscontro da parte del destinatario, il meccanismo Automatic Repeat reQuest (ARQ) per il controllo degli errori. I frame di dati e di riscontro hanno un campo di 1 bit che descrive il numero di sequenza, che quindi può essere 0 o 1. Il destinatario non spedisce riscontri per i frame danneggiati e quelli ricevuti fuori ordine. Nel momento in cui non riceve il riscontro entro un limite di tempo, il mittente rispedisce il frame. Tale protocollo risulta molto ineffieciente: poiché nel canale di comunicazione ci sarà sempre al più un frame, potremmo non utilizzarne a pieno la capacità trasmissiva.

Read More

Appunti di Rete: Accesso multiplo

Nei protocolli ad accesso casuale le stazioni non hanno il controllo del mezzo trasmissivo e il suo utilizzo è conteso. Le stazioni possono verificare lo stato del mezzo in qualsiasi momento e non c’è un ordine stabilito per l’accesso. Si possono verificare casi in cui due o più stazioni provano a spedire contemporaneamente, generando una collisione che distrugge o modifica i frames. Tra i protocolli ad accesso casuale vi sono: ALOHA; CSMA; CSMA/CA; CSMA/CD.

Read More

Devember: Nickname command

After transforming the server in a chat room, I thought it was a good idea to add a command to set your nickname. So, when a client connects, the server expects to receive a message starting with /nickname followed by the actual nickname:

Read More

Devember: Improved echo Server

I abandoned the idea of a recursive server to avoid proliferation of child processes on each new connected client. Now the server benefits of the I/O Multiplexing using the select function to handle the listening socket and the other connected sockets.

Read More

Appunti di Android: Permissions

Per la protezione di dati sensibili ed evitare codice che possa danneggiare l’esperienza utente Android impone delle limitazioni. I Permissions, identificati da un’etichetta, garantiscono l’accesso ad una parte del un dispositivo, che sia sotto forma di dati o funzionalità.

Read More

Devember: Half-closing the socket

In the wake of the previous post, another way to improve the robustness of the client code is by shutting down the write half of the connection once all reading operations from standard input end. This is performed by calling the shutdown function:

Read More

Devember: I/O Multiplexing using select

A few days ago, I wrote a simple echo Client that however has some robustness problems. For example, while the client is blocked in a request for user input and the server closes the connection, the client will not aware of that until it try to send data. The I/O Multiplexing solves that problem.

Read More

Devember: Distributed calculator

It’s been a week since I started my devlogs for Devember and finally today I’ve done something more complex than previous exercises: a distributed calculator.

Read More

Devember: Kill the zombies

In the previous post, we have seen the server spawning child processes to handle multiple incoming connections at the same time. However, we must not forget to handle these processes when they end otherwise they will remain in memory as zombies.

Read More

Devember: Daytime

This devlog presents the fundamental functions of the socket API through a simple daytime client and server.

Read More

Appunti di Android: Widget

Il Widget, chiamato anche input control, è una componente interattiva dell’interfaccia utente. L’utilizzo è molto semplice: basta aggiungere l’elemento che si desidera al layout XML o programmaticamente. Android ne fornisce un’ampia varietà, eccone una lista dei più comuni:

Read More

Appunti di Android: Localizzazione

Quando l’utente avvia un’applicazione, Android seleziona e carica automaticamente le risorse appropriate a seconda della configurazione del dispositivo o, nel caso mancassero, quelle di base.

Read More

Western Lion: Post mortem

Western Lion è una collezione di due minigiochi in tema spaghetti western sviluppata durante la Spaghetti Western Jam della durata di un mese organizzata da IndieVault.it. In uno si vestono i panni di Nessuno, intento a colpire dei boccali prima che si frantumino sul pavimento, nell’altro quelli di Jack, disturbato da una mosca mentre aspetta alla stazione.

Read More

Ciao mondo!

Benvenuto! Questo è il primo articolo. Contiene delle informazioni generiche e fortunatamente non è scritto in prima persona.

Read More