12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- % !TEX root = ../main.tex
- \\
- \textbf{Schema logico-relazionale in formato testuale}
- \begin{lstlisting}[style=SQLu,escapechar=@]
- Persone(@\underline{IdPersona}@, Nome, Cognome, Email, CodiceFiscale)
- Clienti(@\underline{IdPersona*}@, IndirizzoSpedizione)
- Birraie(@\underline{IdPersona*}@, Soprannome)
- Birrifici(@\underline{IdBirrificio}@, Nome, AnnoFondazione, Motto, Stemma,
- CapacitàProduttiva)
- BirrificiBirraie(@\underline{IdBirrificio*, IdBirraia*}@)
- Fornitori(@\underline{IdFornitore}@, RagioneSociale, PartitaIva, Indirizzo)
- Fatture(@\underline{IdFattura}@, IdBirrificio*, IdFornitore*, Data,
- NumeroFattura, Importo)
- TipiIngredienti(@\underline{IdTipo}@, Tipo, UnitàDiMisura)
- Ingredienti(@\underline{IdIngrediente}@, IdTipo*, Descrizione)
- Acquisti(@\underline{IdFattura*, IdIngrediente*}@, Quantità)
- Ricette(@\underline{IdRicetta}@, IdBirrificio*, IdCreatrice*, IdRicettaMadre*,
- Nome, DataCreazione, Stato)
- IngredientiRicette(@\underline{IdRicetta*, IdIngrediente*}@, Quantità)
- Produzioni(@\underline{IdProduzione}@, IdRicetta*, DataProduzione, NumeroLotto,
- Stato, NumeroBottiglie)
- Prenotazioni(@\underline{IdCliente*, IdProduzione*}@, Stato, Quantità)
- Note(@\underline{IdNota}@, IdProduzione*, Testo)
- NoteDegustazione(@\underline{IdNota*}@, Giudizio)
- \end{lstlisting}
- \paragraph{Dipendenze funzionali}
- \begin{itemize}
- \itemsep0em
- \item Per ogni tabella la chiave primaria (sottolineata) determina ciascuno
- degli attributi della tabella.
- \begin{lstlisting}[style=SQLu,escapechar=@]
- IdPersona @$\to$@ Nome, IdPersona @$\to$@ Cognome, IdPersona @$\to$@ Email,
- IdPersona @$\to$@ CodiceFiscale, @$\textellipsis$@
- \end{lstlisting}
- \item Nella tabella \texttt{Persone}, \texttt{CodiceFiscale} è chiave
- naturale e determina tutti gli altri attributi.
- Ho ritenuto prudente aggiungere una chiave artificiale perché, se è vero
- che due persone diverse non avranno mai lo stesso codice fiscale, è vero
- anche che ci possono essere errori umani nell'inserimento di un CF e voglio
- riservarmi la possibilità di correggere un CF senza minare l'affidabiltà
- della base di dati.
- \item Stesso discorso per la RagioneSociale e la PartitaIva nella tabella
- \texttt{Fornitori}.
- \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 ogni determinante è 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}.
|