39 lines
2.7 KiB
TeX
39 lines
2.7 KiB
TeX
% !TEX root = ../main.tex
|
||
|
||
\textbf{Schema logico relazionale in formato testuale}
|
||
\begin{lstlisting}[style=SQLu,escapechar=@]
|
||
Giornali(@\underline{IdEdizione*}@, ComuneStampa)
|
||
SitiWeb(@\underline{IdEdizione*}@, Url)
|
||
Edizioni(@\underline{IdEdizione}@, Titolo, Direttore, AnnoFondazione)
|
||
Articoli(@\underline{IdArticolo}@, IdEdizione*, Titolo, Sottotitolo,
|
||
DataPubblicazione, Premium)
|
||
Visite(@\underline{IdVisita}@, IdArticolo*, TempoLettura, IdUtente*)
|
||
Utenti(@\underline{IdUtente}@, Nome, Cognome, Indirizzo)
|
||
Abbonamenti(@\underline{IdUtente*, IdEdizione*, DataSottoscrizione}@, DataScadenza)
|
||
ArticoliGiornalisti(@\underline{IdArticolo*, IdGiornalista*}@)
|
||
Giornalisti(@\underline{IdGiornalista}@, NumeroAlbo, Cognome, Nome)
|
||
GiornalistiDipendenti(@\underline{IdGiornalista*}@, CodiceInps)
|
||
GiornalistiFreeLance(@\underline{IdGiornalista*}@, PartitaIva)
|
||
\end{lstlisting}
|
||
|
||
\paragraph{Dipendenze funzionali}
|
||
\begin{itemize}
|
||
\item Per ogni tabella la chiave primaria (sottolineata) determina ciascuno degli attributi della tabella ($\{IdEdizione \to Titolo, IdEdizione \to Direttore, \textellipsis\}$)
|
||
\item Nella tabella Giornalisti, vale inoltre che $\{NumeroAlbo \to Nome;$ $NumeroAlbo \to Cognome;$ $NumeroAlbo \to IdGiornalista\}$: NumeroAlbo è una chiave naturale (l’Ordine dei Giornalisti si cura di non attribuire lo stesso numero di iscrizione all’albo a due giornalisti diversi), ho scelto di aggiungere la chiave artificiale IdGiornalista prevedendo possibili errori di inserimento da parte della segreteria della catena editoriale: in queto modo, il NumeroAlbo può essere modificato senza problemi in caso di errori. Discorso analogo per CodiceInps e PartitaIva.
|
||
\end{itemize}
|
||
|
||
|
||
Uno schema R, avente insieme di attributi T e insieme di dipendenze funzionali F, (\lstinline{R<T, F>}) è
|
||
in forma normale di Boyce-Codd (BCNF) se ogni dipendenza funzionale della chiusura di F o è
|
||
banale o ha come determinante una superchiave di T.
|
||
Esiste un teorema che semplifica il calcolo, asserendo che se la condizione di cui sopra vale per
|
||
una qualsiasi copertura di F allora vale per l’intera chiusura di F.
|
||
Nella copertura di F che ho descritto sopra (che peraltro è canonica: ogni dipendenza ha un
|
||
solo attributo come determinato, nessuna dipendenza è ridondante e non sono presenti
|
||
attributi estranei in quanto i determinanti sono tutti chiave), ogni dipendenza funzionale ha
|
||
come determinante o la chiave primaria o una chiave naturale che non è stata scelta come
|
||
primaria, in ogni caso una superchiave. \underline{La BCNF è pertanto rispettata}.
|
||
|
||
NOTA: assumo che la stringa “Indirizzo” e simili siano attributi atomici, anche se forse nella
|
||
realtà sarebbero meglio rappresentati in altro modo.
|