Estratto del documento

Schema di normalizzazione dei dati

Decomposizione degli schemi

A BC, B A, C D → → → si generano gli schemi:

  • R1(ABC)
  • R2(CD)

Con A o B come chiave in R1. A, B, C uniranno insieme e la chiave potrebbe essere A o potrebbe essere B. Si verifica che esista uno schema la cui chiave è anche chiave dello schema originario (se non esiste lo si crea).

Esempio

Supponiamo di avere la relazione R(ABCD), le cui dipendenze sono:

  • A → C
  • B → D

Si generano gli schemi:

  • R1(AC)
  • R2(BD)
  • R3(AB)

Verifica della BCNF

Si verifica se lo schema ottenuto è anche in BCNF. Si noti che, se una relazione ha una sola chiave, allora le due forme normali coincidono. Se uno schema non è in BCNF, si hanno tre alternative:

  • Si lascia così com'è, gestendo le anomalie residue.
  • Si decompone in BCNF.
  • Si cerca di rimodellare la situazione iniziale per ottenere schemi BCNF.

Esempio di rimodellamento

Progetto, Sede Dirigente → Dirigente Sede → Superchiave: chiave che è ridondante. Progetto e Sede è una superchiave, però Dirigente non lo è. Non possiamo portare fuori alla forma BCNF; bisogna rimodellare la situazione iniziale, come aggiungere un ulteriore attributo. Nell'esempio, introduciamo il concetto di Reparto per distinguere i dirigenti di una stessa sede (ogni dirigente opera in un reparto di una sede, e viceversa).

Terza Forma Normale (3NF)

Uno schema R(X) è in terza forma normale se e solo se, per ogni dipendenza funzionale (non banale) Y → Z definita su di esso:

  • Y è una superchiave di R(X) [lo stesso di Boyce-Codd].
  • Oppure ogni attributo in Z è primo (cioè, contenuto in almeno una chiave di R(X)).

La definizione è anche equivalente alla seguente: Uno schema R(X) è in terza forma normale se e solo se ogni attributo non-primo non dipende transitivamente da nessuna chiave.

Riassumendo, il significato delle forme normali viene di seguito riassunto:

  • Prima forma normale: una relazione si dice in prima forma normale quando rispetta i requisiti fondamentali del modello relazionale, in particolare ogni attributo è elementare, non ci sono righe uguali e non ci sono attributi ripetitivi.
  • Seconda forma normale: quando è in prima forma normale e non ci sono attributi non-chiave che dipendono parzialmente dalla chiave.
  • Terza forma normale: quando è in seconda forma normale e non ci sono attributi non-chiave che dipendono transitivamente dalla chiave.

Il modello relazionale richiede come obbligatoria solo la prima forma normale. Tuttavia, il passaggio alle forme normali superiori consente di distinguere e separare con precisione gli oggetti, senza perdita di informazioni, anche se viene generata una ridondanza di dati che però è costantemente sotto controllo.

Esempio: Allocazione delle sale operatorie

Consideriamo una relazione che descrive l'allocazione delle sale operatorie di un ospedale. Le sale operatorie sono prenotate, giorno per giorno, in orari previsti, per effettuare interventi su pazienti ad opera dei chirurghi dell'ospedale. Nel corso di una giornata, una sala operatoria è occupata sempre dal medesimo chirurgo che effettua più interventi, in ore diverse. Noti i valori di Paziente e DataIntervento, sono noti anche: ora dell'intervento, chirurgo, e sala operatoria utilizzata.

Gli attributi della relazione Interventi sono descritti nello schema:

  • Interventi (Paziente, DataIntervento, OraIntervento, Chirurgo, Sala).

In base alla precedente descrizione del caso in esame, nella relazione Interventi valgono le dipendenze funzionali:

  • A. Paziente, DataIntervento → OraIntervento, Chirurgo, Sala
  • B. Chirurgo, DataIntervento, OraIntervento → Paziente, Sala
  • C. Sala, DataIntervento, OraIntervento → Paziente, Chirurgo
  • D. Chirurgo, DataIntervento → Sala

Ci sono tre insiemi di attributi che possono svolgere la funzione di chiave:

  • Paziente, DataIntervento
  • Chirurgo, DataIntervento, OraIntervento
  • Sala, DataIntervento, OraIntervento

Scegliamo come chiave primaria la coppia di attributi: Paziente, DataIntervento. Interventi (Paziente, DataIntervento, OraIntervento, Chirurgo, Sala)

È in BCNF?

  • a) Paziente, DataIntervento → OraIntervento, Chirurgo, Sala
  • b) Chirurgo, DataIntervento, OraIntervento → Paziente, Sala
  • c) Sala, DataIntervento, OraIntervento → Paziente, Chirurgo
  • d) Chirurgo, DataIntervento → Sala

I determinanti in a), b) e c) possono svolgere la funzione di chiave quindi soddisfano la BCNF. I determinanti di d) invece non costituiscono una chiave quindi violano la BCNF. Interventi non è in BCNF.

È in 3FN?

La 3FN richiede che ogni attributo non chiave dipenda da un insieme di attributi che possono formare una chiave. La dipendenza funzionale d) viene esclusa dalle dipendenze funzionali considerate dalla terza forma normale, perché l'attributo Sala è un attributo che fa parte della chiave candidata (Sala, DataIntervento, OraIntervento) e quindi Sala non è un attributo non chiave.

La tabella Interventi può essere normalizzata, ottenendo i due schemi:

  • OccupazioneSale (Chirurgo, DataIntervento, Sala)
  • Interventi (Paziente, DataIntervento, OraIntervento, Chirurgo)

SQL (Structured Query Language)

Per operare su una base dati relazionale è stato progettato un linguaggio standard: SQL (Structured Query Language). È un linguaggio di interrogazione e manipolazione della base dati e delle informazioni in essa contenute. Non è un linguaggio imperativo/procedurale, è un linguaggio dichiarativo. Essendo un linguaggio dichiarativo, SQL non richiede la stesura di sequenze di operazioni (come ad es. i linguaggi imperativi), piuttosto di specificare le proprietà logiche delle informazioni ricercate.

Mette a disposizione dei sotto linguaggi utili a differenti cose. Esso si divide in:

  • Data Definition Language (DDL) - permette di creare e cancellare database o di modificare la struttura;
  • Data Manipulation Language (DML) - permette di interrogare e aggiornare il database;
  • Data Control Language (DCL) - permette di gestire gli utenti e i permessi;
  • Device Media Control Language (DMCL) - permette di controllare i supporti (memorie di massa) dove vengono memorizzati i dati.

DDL (Data Definition Language)

Mette a disposizione un set di istruzioni di SQL per la definizione della struttura della base dati. Siamo ancora nella fase in cui bisogna creare la nostra base di dati, il DDL non modifica le informazioni ma le crea. I comandi DDL definiscono la struttura del database e quindi dei dati ivi contenuti, ma non forniscono gli strumenti per modificare i dati stessi per il quale si usa il DML.

L'utente deve avere i permessi necessari per agire sulla struttura del database e questi permessi vengono assegnati tramite il DCL (Data Control Language).

Sono tre le istruzioni principali del DDL:

  • create: per la creazione di database, tabelle, indici, viste (modalità con cui noi mostriamo ad alcuni utenti una cosa e ad altri un'altra senza alterare il contenuto della base di dati), ecc.
  • alter: per la modifica della struttura di una tabella o di altri oggetti interni ad una base dati.
  • drop: per l'eliminazione di una tabella, di un intero database o di altri oggetti.

Esempi:

  • Creazione di un database: create database studenti
  • Cancellazione di un database: drop database studenti

Esempio di comandi SQL per la creazione di una tabella

CREATE TABLE Demografica (PazNo Integer NOT NULL default 1, Nome char(40), Sesso char(1), DataN date, Indirizzo char(50), Città char(30), NTel Integer(10));

Dentro le parentesi troviamo gli attributi, con le caratteristiche che deve avere ciascun attributo (tipo di dato). Altra informazione che dobbiamo dare è la chiave primaria che deve essere sempre definita (NOT NULL), vicino alla chiave primaria troviamo NOT NULL. Deve essere anche unica (unique).

Altro esempio: Vincoli interrelazionali

  • Primary key elegge l'attributo specificato (o gli attributi specificati) come chiave primaria per la relazione (contiene l'informazione not null e unique all'interno).
  • Not null impone che l'attributo abbia sempre un valore definito.
  • Unique impone che non esistano due tuple della relazione con lo stesso valore sull'attributo (o sugli attributi). Gli attributi che sono unique sono anche superchiavi per la relazione - primary key implica il not null e l'unique sugli attributi interessati.

Vincoli: chiave primaria - references dopo l'attributo esprime un vincolo di integrità referenziale - foreign key ... references per insiemi di attributi (in coda alla create table).

Vincolo di integrità referenziale mi dice come un attributo di una relazione si lega con un altro attributo di un'altra tabella per poter fare un join che mi restituisce le informazioni della relazione di partenza. Si esprime o vicino all'attributo o a valle (attributi references la tabella). Mi dice come legare gli attributi di una tabella rispetto agli attributi di un'altra tabella.

DCL (Data Control Language)

È il set di istruzioni di SQL per la definizione dei permessi di accesso sui database e sulle tabelle e per la gestione degli account utente. Sono due le istruzioni principali del DCL:

  • grant: per assegnare un determinato permesso ad un utente.
  • revoke: revocare un determinato permesso ad un utente.

Concessione di permessi:

  • grant privilegi on risorsa (su quale risorsa stiamo garantendo) to utenti (a quali utenti stiamo garantendo) with grant option.

Esempio: grant select on studenti to Rossi

DML (Data Manipulation Language)

Fornisce i comandi per inserire, modificare ed eliminare i dati all'interno delle tabelle di un database e per l'esecuzione di query. La struttura di questi dati deve già essere stata definita tramite il DDL. Inoltre, il permesso di accedere a tali dati deve essere precedentemente assegnato all'utente tramite il DCL. Tutte le interrogazioni sul database (query) vengono effettuate utilizzando in maniera diretta o indiretta il comando di selezione specificato mediante l'operazione SELECT.

Sono quattro le istruzioni principali del DML:

  • insert: per inserire dati in una tabella.
  • update: per modificare i dati di una tabella sulla base di un determinato criterio di selezione.
  • delete: per eliminare i record di una tabella corrispondenti ad una determinata condizione.
  • select: per selezionare in base a determinati criteri o condizioni i dati presenti in una o più tabelle.

Per inserire in una tabella una tupla con diversi campi si usa insert (corso è il nome della tabella) e gli attributi sono la sigla, crediti, nome, docente e dopo values i valori degli attributi.

Anteprima
Vedrai una selezione di 20 pagine su 133
Appunti Informatica medica Pag. 1 Appunti Informatica medica Pag. 2
Anteprima di 20 pagg. su 133.
Scarica il documento per vederlo tutto.
Appunti Informatica medica Pag. 6
Anteprima di 20 pagg. su 133.
Scarica il documento per vederlo tutto.
Appunti Informatica medica Pag. 11
Anteprima di 20 pagg. su 133.
Scarica il documento per vederlo tutto.
Appunti Informatica medica Pag. 16
Anteprima di 20 pagg. su 133.
Scarica il documento per vederlo tutto.
Appunti Informatica medica Pag. 21
Anteprima di 20 pagg. su 133.
Scarica il documento per vederlo tutto.
Appunti Informatica medica Pag. 26
Anteprima di 20 pagg. su 133.
Scarica il documento per vederlo tutto.
Appunti Informatica medica Pag. 31
Anteprima di 20 pagg. su 133.
Scarica il documento per vederlo tutto.
Appunti Informatica medica Pag. 36
Anteprima di 20 pagg. su 133.
Scarica il documento per vederlo tutto.
Appunti Informatica medica Pag. 41
Anteprima di 20 pagg. su 133.
Scarica il documento per vederlo tutto.
Appunti Informatica medica Pag. 46
Anteprima di 20 pagg. su 133.
Scarica il documento per vederlo tutto.
Appunti Informatica medica Pag. 51
Anteprima di 20 pagg. su 133.
Scarica il documento per vederlo tutto.
Appunti Informatica medica Pag. 56
Anteprima di 20 pagg. su 133.
Scarica il documento per vederlo tutto.
Appunti Informatica medica Pag. 61
Anteprima di 20 pagg. su 133.
Scarica il documento per vederlo tutto.
Appunti Informatica medica Pag. 66
Anteprima di 20 pagg. su 133.
Scarica il documento per vederlo tutto.
Appunti Informatica medica Pag. 71
Anteprima di 20 pagg. su 133.
Scarica il documento per vederlo tutto.
Appunti Informatica medica Pag. 76
Anteprima di 20 pagg. su 133.
Scarica il documento per vederlo tutto.
Appunti Informatica medica Pag. 81
Anteprima di 20 pagg. su 133.
Scarica il documento per vederlo tutto.
Appunti Informatica medica Pag. 86
Anteprima di 20 pagg. su 133.
Scarica il documento per vederlo tutto.
Appunti Informatica medica Pag. 91
1 su 133
D/illustrazione/soddisfatti o rimborsati
Acquista con carta o PayPal
Scarica i documenti tutte le volte che vuoi
Dettagli
SSD
Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher alexia0508 di informazioni apprese con la frequenza delle lezioni di Informatica medica e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università Politecnica delle Marche - Ancona o del prof Morettini Micaela.
Appunti correlati Invia appunti e guadagna

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community