SUPERCHIAVE
Ogni tabella ha sempre almeno una superchiave. Nel modello relazionale una tabella non può contenere due tuple uguali. Pertanto, l'insieme degli attributi della tabella è sicuramente una superchiave. Da questo si deduce che ogni tabella e ogni schema di relazione ha almeno una superchiave.
Una superchiave di uno schema di relazione R={A1, A2, A3,..., AN} è un insieme di attributi S⊆R con la proprietà che nessuna coppia di tuple t1 e t2 in un generico stato valido di relazione r di R avrà t1[S]=t2[S].
Una chiave K è una superchiave con la proprietà aggiuntiva che la rimozione di un qualsiasi attributo da K fa sì che K cessi di essere superchiave.
La differenza tra una chiave e una superchiave sta nel fatto che una chiave deve essere minimale. Se uno schema di relazione ha più di una chiave, ognuna di loro è detta chiave candidata; una delle chiavi candidate è arbitrariamente nominata chiave.
La progettazione di schemi relazionali prevede l'utilizzo di attributi, che possono essere di due tipi: primi o non-primi. Un attributo è detto primo se è membro di una chiave primaria, mentre è detto non-primo se non è membro di alcuna chiave candidata.
La normalizzazione è un processo fondamentale nella progettazione di schemi relazionali. Esistono due approcci principali: il primo prevede la definizione di un modello concettuale e la sua traduzione in schema relazionale, seguendo le regole di traduzione; il secondo si basa sulla progettazione delle relazioni a partire da una implementazione preesistente. In entrambi i casi, è necessario avere una conoscenza della teoria della normalizzazione.
Il processo di normalizzazione avviene in maniera top-down e ha lo scopo di garantire che lo schema relazionale soddisfi una determinata forma normale. Esistono diverse forme normali, che possono essere di
Tre livelli differenti. Il primo livello è la prima forma normale che è stata definita per escludere dagli schemi relazionali attributi composti e multivalore. Essa richiede che il dominio di un attributo comprenda solo valori atomici (cioè valori semplici, indivisibili) e che il valore di qualsiasi attributo in una tupla sia un valore singolo del dominio di quell'attributo. La soluzione migliore per rendere uno schema relazionale in prima forma normale è rimuovere gli attributi che possono essere multivalore o composti e riporli in una relazione separata con la chiave primaria della tabella originale. In questo modo non ci saranno problemi di ridondanze e non verranno posti limiti sul limite massimo dei valori.
La seconda forma normale si basa invece sulla dipendenza funzionale e ci dice che una dipendenza funzionale è completa quando la rimozione di alcuni attributi dall'entità comportano che la dipendenza non sussista più, mentre la
dipendenza funzionale è parziale quando anche rimuovendo alcuni attributi dall'entità la dipendenza continua a sussistere. Uno schema è in seconda forma normale se ogni attributo non primo A di R dipende funzionalmente in modo completo dalla chiave primaria di R e non solo da una sua parte. Se uno schema non è in seconda forma normale può essere normalizzato decomponendolo in più relazioni che soddisfano la seconda forma normale, nelle quali gli attributi non primi sono associati solo alla parte della chiave primaria da cui sono funzionalmente dipendenti in modo completo. La terza forma normale si basa invece sul concetto di dipendenza transitiva. La dipendenza funzionale X->Y è transitiva se in uno schema R esiste un insieme di attributi Z che non è né una chiave candidata né un sottoinsieme di una chiave di R, per cui valgono contemporaneamente X->Z e Z->Y. Ovvero uno schema è in terza forma normale quando.Tutti gli attributi di una relazione dipendono funzionalmente solo dalla chiave primaria della relazione. Uno schema è in terza forma normale, inoltre, quando soddisfa la seconda forma normale e quando nessun attributo non primario di R dipende in modo transitivo dalla chiave primaria. Per normalizzare uno schema in terza forma normale si decompone esso stesso in 2 schemi in terza forma normale. Infine, abbiamo la forma normale di Boys e Codd (BCNF) che è una forma più restrittiva della terza forma normale, ogni relazione che è nella forma normale di Boys e Codd è anche in terza forma normale ma non viceversa. Uno schema di relazione R è in BCNF se ogni volta che sussiste in R una dipendenza funzionale non banale X->A, X è una superchiave di R.
VINCOLI DI INTEGRITÀ
I vincoli sono detti di integrità in quanto rispettare tali vincoli garantisce l'integrità del database. Essi sono definiti esplicitamente e si dividono in 2
categorie:
- Vincoli di integrità statici: sono dei vincoli che valgono in ogni istante di vita del database (esempio: l’età di una persona assume sempre un valore positivo)
- Vincoli di integrità dinamici: sono dei vincoli che mutano in base all’evoluzione del database (esempio: uno studente per essere iscritto al 2°anno deve necessariamente essersi iscritto in precedenza anche al 1°anno)
I vincoli possono riguardare:
- Proprietà di un’entità
- Proprietà diverse di una stessa entità (esempio: se l’entità Lavoratore ha due attributi Stipendio e Trattenute Fiscali, quest’ultima è vincolata alla prima in quanto non deve superare il 20% del valore della prima)
- Unità diverse di una stessa entità (esempio: tutte le tuple dell’entità Studente devono avere il campo Matricola diverso)
- Proprietà di entità diverse
- Proprietà di collezioni di
valeresempre (ciò vuole dire che la dipendenza funzionale non dipende da un particolare insieme di tuple bensì deve valere sempre).
ASSIOMI DI ARMSTRONG
Si indichi con F l'insieme di dipendenze funzionali specificate sullo schema di relazione R. Ci sono 6 regole, dette regole di inferenza per dipendenze funzionali:
RI1 (regola riflessiva): se X ⊆ Y, allora X -> Y
Questa regola afferma che un insieme di attributi determina sempre se stesso o uno qualsiasi dei suoi sottoinsiemi.
RI2 (regola di arricchimento): [X->Y] = XZ->YZ
Questa regola sostiene che aggiungendo lo stesso insieme di attributi alla parte sinistra e alla parte destra di una dipendenza si ottiene un'altra dipendenza valida.
RI3 (regola transitiva): [X->Y, Y->Z] = X->Z
Secondo questa regola le dipendenze funzionali sono transitive.
RI4 (regola di decomposizione): [X->YZ] = X->Y
Questa regola sostiene che si possono rimuovere attributi dalla parte destra di una dipendenza.
RI5 (regola di unione,
o additiva): [X->Y, X->Z] = X->YZ
Questa regola consente di fare l’opposto, ovvero è possibile combinare un insieme di dipendenze in una singola dipendenza.
RI6 (regola pseudo-transitiva): [X->Y, WY->Z] = WX->Z
Una dipendenza funzionale si dice completa quando, dato un insieme di dipendenze funzionali F specificate su uno schema R, tutte le dipendenze che è possibile inferire da F usando le regole da RI1 a RI3 sussistono in ogni stato di relazione r di R che soddisfa le dipendenze in F.
Una dipendenza funzionale si dice corretta quando, usando ripetutamente le regole da RI1 a RI3 per inferire dipendenze finché non se ne possono più dedurre, si ottiene come risultato l’insieme completo di tutte le possibili dipendenze che possono essere dedotte da F.
MODELLAZIONE CONCETTUALE
Intenzione dell’entità
L’intenzione dell’entità è lo schema astratto che accomuna tutto ciò che fa parte di
quell'entità (cioè è lo schema astratto delle proprietà o degli attributi che costituiscono l'entità).
Estensione dell'entità
L'estensione dell'entità è una collezione di unità che appartengono ad una determinata entità (esempio: se l'entità è studenti, la sua estensione sarà l'insieme degli N studenti che appartengono all'entità stessa).
Dominio dell'entità
Il dominio è un insieme di valori atomici. È dato dall'unione di tutti i domini degli attributi che appartengono all'entità. Un metodo comune per indicare un dominio consiste nello specificare un tipo di dati, da cui sono tratti i valori dei dati che formano il dominio.
Tutti questi valori (limiti) vengono introdotti nel database mediante vincoli. Ogni attributo ha un suo dominio e ad ogni dominio viene assegnato un nome, un tipo di dati e un formato.
L'unione di tutti i domini rappresenta il dominio dell'entità. Intenzione dell'associazione è lo schema astratto dell'associazione, ovvero le proprietà in astratto che verranno descritte. Estensione dell'associazione è una collezione di istanze di associazioni di un'entità. Dominio dell'associazione è dato dall'unione dei domini delle entità più l'unione delle sue proprietà. PRODOTTO CARTESIANO Dati due insiemi X e Y, il prodotto cartesiano tra questi è un insieme di tutte le coppie ordinate possibili dove il primo valore appartiene a X e il secondo appartiene a Y. Cioè è l'insieme di tutte le coppie possibili (x,y) con x ∈ X e y ∈ Y (in definitiva, il prodotto cartesiano è l'insieme di tutte le n-uple. In BD, l'insieme di tutte le coppie viene chiamato insieme di istanze. Si scrive: X * Y Esempio: Prendendo in considerazione le dueso) rappresenta l'associazione tra gli studenti e i corsi a cui sono iscritti. Ogni studente può essere iscritto a più corsi e ogni corso può avere più studenti iscritti. Per rappresentare questa associazione in HTML, possiamo utilizzare una tabella con due colonne: una per gli studenti e una per i corsi. Ogni riga della tabella rappresenterà un'associazione tra uno studente e un corso. Ecco un esempio di come potrebbe essere formattata la tabella: ```htmlStudente | Corso |
---|---|
Studente 1 | Corso 1 |
Studente 1 | Corso 2 |
Studente 2 | Corso 1 |
Studente 2 | Corso 3 |
-
Teoria risposte domande frequenti esame Basi di Dati
-
Basi di Dati - Domande e Risposte
-
Domande esame
-
Domande Microbiologia