Perché ci serve un database?
In un file system ogni ufficio tiene i propri file. Questo crea dei problemi:
- Ridondanza dei dati: gli stessi dati sono salvati più volte, sprecando spazio.
- Incoerenza dei dati: una copia viene aggiornata, le altre no, e così non coincidono più.
- Difficile cercare e condividere: ogni domanda richiede un nuovo programma.
- Poca sicurezza: è difficile controllare chi può vedere cosa.
- Isolamento e dipendenza dei dati: file in formati diversi; se cambia la struttura del file, i programmi smettono di funzionare.
Un database è una raccolta ordinata di dati collegati, conservati in un solo posto, in modo che possano essere condivisi, mantenuti coerenti e protetti.
Sistema di gestione di basi di dati (DBMS)
Un DBMS è un software per creare, salvare, aggiornare, cercare e gestire un database, e per controllare chi può usarlo. Esempi: MySQL, Oracle, PostgreSQL, SQLite, Microsoft Access.
Vantaggi: meno ridondanza, coerenza, condivisione tra molti utenti, sicurezza con password e permessi, backup e ripristino, e ricerca facile con un linguaggio di interrogazione (SQL).
Usi di tutti i giorni: banche, prenotazione dei treni, registri scolastici, acquisti online, ospedali.
Modello relazionale: relazione, attributo, tupla, dominio
Nel modello relazionale i dati sono tenuti in tabelle.
- Relazione: una tabella con un nome, per esempio STUDENT.
- Attributo: una colonna, per esempio Name.
- Tupla: una riga, cioè un record completo.
- Dominio: l'insieme dei valori ammessi per un attributo, per esempio Class ∈ {9, 10, 11, 12}.
- Grado: il numero di attributi (colonne).
- Cardinalità: il numero di tuple (righe).
Regole: ogni colonna ha un nome unico; l'ordine di righe e colonne non conta; due righe non sono mai identiche; ogni cella contiene un solo valore (oppure NULL, che significa sconosciuto).
Le chiavi: candidata, primaria e alternativa
- Chiave candidata: un attributo (o un insieme di attributi) il cui valore è unico per ogni riga e mai NULL. Una tabella può averne più di una.
- Chiave primaria: la chiave candidata scelta per identificare le righe. Non può essere NULL né ripetersi.
- Chiave alternativa: ogni chiave candidata che non è stata scelta come chiave primaria.
Esempio: STUDENT(AdmNo, Name, Class, Email). Name si ripete e Class si ripete, quindi non sono chiavi. AdmNo ed (se è sempre compilata e diversa per tutti) Email sono chiavi candidate. Scegli AdmNo come chiave primaria; Email diventa la chiave alternativa.
Utili da sapere: una chiave composta usa due o più colonne insieme (come Class + RollNo); una chiave esterna è una colonna di una tabella che fa riferimento alla chiave primaria di un'altra tabella e collega le due.
Prova tu: trova la chiave nella tua tessera
Guarda la tessera della tua scuola o un abbonamento dell'autobus. Elenca tutti i campi (nome, classe, numero di registro, matricola, telefono). Per ognuno chiediti due cose: due studenti possono avere lo stesso valore? Può essere vuoto? Scrivi quali sono chiavi candidate e quale sceglieresti come chiave primaria. Poi prova la stessa idea nel passo 6 del 3D.
Formule e definizioni chiave
- Relazione = tabella; attributo = colonna; tupla = riga
- Grado = numero di colonne; cardinalità = numero di righe
- Chiave candidata: unica + non NULL
- Chiave primaria = chiave candidata scelta; chiavi alternative = le altre
Esempi svolti
1. Una tabella ha 5 colonne e 30 righe. Indica grado e cardinalità.
Grado = 5, cardinalità = 30.
2. Dopo aver aggiunto 2 righe e 1 colonna a una tabella 4 × 10 (grado 4, cardinalità 10), quali sono i nuovi valori?
Grado = 5, cardinalità = 12.
3. EMPLOYEE(EmpID, Name, Aadhaar, Dept). Individua chiavi candidate, primaria e alternativa.
EmpID e Aadhaar sono unici → chiavi candidate. Scegli EmpID come chiave primaria; Aadhaar è la chiave alternativa. Name e Dept possono ripetersi.
4. Perché Name non può essere la chiave primaria in STUDENT?
Due studenti possono avere lo stesso nome, quindi non identifica una riga in modo unico.
5. Indica il dominio di un attributo Gender salvato come una sola lettera.
{"M", "F", "O"} (o i codici che la scuola ammette).
Errori comuni
- Chiamare tupla una colonna. Tupla = riga; attributo = colonna.
- Dire che il grado è il numero di righe. Il grado conta le colonne.
- Credere che una tabella possa avere una sola chiave candidata. Ne può avere molte, ma una sola chiave primaria.
- Permettere NULL in una colonna che è chiave primaria.