Evite Dependenzi Transitivu per aiutà Assistenza Normalizazione
A dependenza transitivu in una basa di dati hè una rilazione indiretta trà i valori in a stessa tavula chì provoca una dependenza funziona . Per ghjunghje a normalizazione norma di a Tercera Forma Normale (3NF), deve esse eliminate a dependenza transitivu.
Per a so natura, una dependenza transitivu precisa de tres o più attributi (o corsi di basa di basa) chì anu una dependenza funzionale frà elli, chì significheghja chì a Colonne A in una tavula basa in Coluna B a través d'intermediate Column C.
Avemu vistu cumu si puderà travaglià.
Esempiu di Dependenza Transitivu
AUTOR
Autor_ID | Autor | Libru | Author_Nationality |
---|---|---|---|
Auth_001 | Orson Scott Card | Ender's Game | Stati Uniti |
Auth_001 | Orson Scott Card | Ender's Game | Stati Uniti |
Auth_002 | Margaret Atwood | A notte di l'uttini | Canada |
In l'esempiu di l'AUTORANDI:
- Libru → Autor : Quì, l'attribuariu libru determina l'attributu di l' Autoru . Se sapete u nome di libru, pudete amparà u nome di l'autoru. In ogni casu, l' Autoritariu ùn detergune micca u Libru , perchè un autoru pudete scrive diversi libbra. Per esempiu, solu per chì avemu cunnisciutu u nome di l'autore Orson Scott Card, ùn anu micca cunnisciutu u nome di u libru.
- Autor → Author_Nationality : In u stessu, l'attribuariu auturizeghja determina l' Author_Nationality , ma micca l'altra manera; sulu picchì sapemu a naziunalità ùn significa micca chì pudemu determinà l'autori.
Ma questa tela inserisce una dependenza transitivu:
- Libru → Author_Nationality: Se sapemu u nome di libru, pudemu determinà a naziunalità per l'autore.
Avoiding Dependencies Transitivu
Per assicurà a Tercera Forma Normale, sguassate a dependenza transitivu.
Puderemu principià per sguassà a Columna di u Libru da a Table di l'autori è creendu una Libbretta di Libri separata:
LIBRI
Book_ID | Libru | Autor_ID |
---|---|---|
Book_001 | Ender's Game | Auth_001 |
Book_001 | U figliolu di a Mind | Auth_001 |
Book_002 | A notte di l'uttini | Auth_002 |
AUTOR
Autor_ID | Autor | Author_Nationality |
---|---|---|
Auth_001 | Orson Scott Card | Stati Uniti |
Auth_002 | Margaret Atwood | Canada |
Avete bè fixchianu? Eccettu e nostre analizà i nostri dependenzii:
LIBRI :
- Book_ID → Libro: U Libru depende di u Book_ID .
- Nisuna dependenza in questa testa si esistinu, perciammu bè. Nota chì a chjave straniera Autor_ID vende stu tavulu à a tavola AUTHORS traversu a chjave principale Autor_ID . Avemu criatu una relazione per evità una dependenza transitivu, un designu chjave di e dati in relazione.
AUTOR taula :
- Autor_ID → Autor: L' autore dipende à l' Autor_ID .
- Autore → Author_Nationality: A naziunalità pò esse determinata da l'autore.
- Autor_ID → Author_Nationality: A naziunalità pò esse determinata da l' Autor_ID à l'attributu di l' Autoru . Avemu sempre una dependenza transitivu.
Avemu bisognu à aghjunghje una terza testa per nurmalizà sta dati:
PAESI
Country_ID | Paese |
---|---|
Coun_001 | Stati Uniti |
Coun_002 | Canada |
AUTOR
Autor_ID | Autor | Country_ID |
---|---|---|
Auth_001 | Orson Scott Card | Coun_001 |
Auth_002 | Margaret Atwood | Coun_002 |
Avemu avemu trè tavule, facennu usu di i chjavi stranieri per ligami trà i tavule:
- A buttula straniera di a carta di LIBERU Author_ID ponce un libru à un autore in a tabella AUTHORS.
- A tappa straniera di l' altezza di l'ALESSORI AUTHORS face un autoru à un paese in a table PALEZIONI .
- A tabel PAESI ùn ha micca alcuna straniera, perchè ùn hè bisognu di ligà cù un altru tabellu in stu prugettu.
Perchè e Dependenzi Transitivu sò Design Bad Database
Qualessu hè u valore di evitari e dependenzii transitivu per aiutà à assicurà 3NF? Fighjà a nostra prima tassa novu è vede i prublemi chì crea:
AUTOR
Autor_ID | Autor | Libru | Author_Nationality |
---|---|---|---|
Auth_001 | Orson Scott Card | Ender's Game | Stati Uniti |
Auth_001 | Orson Scott Card | U figliolu di a Mind | Stati Uniti |
Auth_002 | Margaret Atwood | A notte di l'uttini | Canada |
Stu tipu di designu pò cuntribuisce à l'anomalii di dati è inconsistenzi, per esempiu:
- Se avete suprimi i dui libbra "Fiddine di a Menti" è "Ender's Game", avete esse elettu l'autori "Orson Scott Card" è a so naziunalità da a basa di dati.
- Ùn pudete micca aghjunghje un novu autoru à a basa di dati, salvu ancu di aghjunghje un libru; Chì s'ellu l'autore hè sempre ineditatu o ùn cunnosci micca u nome di un libru chì hà autore?
- Se "Orson Scott Card" hà cambiatu a so citadinanza, avete da esse cambiatu in tutti i registri in quale ellu pare. Avè pussibuli parechji registra cù u listessu autore pò esse riunioni in accurtezza di dati: chì se a persona di l'accessione di dati ùn si capisci chì ci sò parechji registri per ellu è cambia a dati in una sola storia?
- Ùn pudete micca esibite un libru cum'è "The Handmaid's Tale" senza sparte ancu l'autore cumpletu.
Eccu alcuni ragiuni per a normalizazione , è evitendi e dependenzii transitivu, prutege i dati è assicurate a coherenza.