Shmangni varësitë tranzitive për të ndihmuar në sigurimin e normalizimit
Një varësi tranzitore në një bazë të dhënash është një marrëdhënie indirekte midis vlerave në të njëjtën tabelë që shkakton një varësi funksionale . Për të arritur standardin e normalizimit të Formës së Tretë Normal (3NF), duhet të eliminoni çdo varësi tranzitore.
Nga natyra e tij, një varësi tranzitore kërkon tre ose më shumë atribute (ose kolona të bazave të të dhënave) që kanë një varësi funksionale mes tyre, që do të thotë se Kolona A në një tabelë mbështetet në Kolonën B nëpërmjet një kolone të ndërmjetme.
Le të shohim se si kjo mund të funksionojë.
Shembull i Varësisë Tranzitore
AUTORËT
Author_ID | autor | libër | Author_Nationality |
---|---|---|---|
Auth_001 | Orson Scott Card | Lojë e Ender | Shtetet e Bashkuara |
Auth_001 | Orson Scott Card | Lojë e Ender | Shtetet e Bashkuara |
Auth_002 | Margaret Atwood | Taleja e Shërbeses | Kanadë |
Në shembullin AUTHORS më sipër:
- Libri → Autori : Këtu, atributi i Librit përcakton atributin e Autorit . Nëse e dini emrin e librit, mund të mësoni emrin e autorit. Megjithatë, Autori nuk përcakton Librin , sepse një autor mund të shkruajë libra të shumtë. Për shembull, vetëm për shkak se ne e njohim emrin e autorit Orson Scott Card, ende nuk e dimë emrin e librit.
- Autori → Autoriteti : Parimi : Po ashtu, atributi i Autorit përcakton Autorizimin , por jo anasjelltas; vetëm për shkak se ne e dimë kombësinë nuk do të thotë që ne mund ta përcaktojmë autorin.
Por kjo tabelë paraqet një varësi transitive:
- Libri → Autori_nacionaliteti: Nëse e njohim emrin e librit, mund ta përcaktojmë kombësinë nëpërmjet kolonës së Autorit.
Shmangia e varësisë transitive
Për të siguruar formën e tretë normale, le të heqim varësinë kalimtare.
Mund të fillojmë duke hequr kolonën e Librit nga tabela e Autorëve dhe duke krijuar një tabelë të veçantë të Librave:
LIBRA
Book_ID | libër | Author_ID |
---|---|---|
Book_001 | Lojë e Ender | Auth_001 |
Book_001 | Fëmijët e mendjes | Auth_001 |
Book_002 | Taleja e Shërbeses | Auth_002 |
AUTORËT
Author_ID | autor | Author_Nationality |
---|---|---|
Auth_001 | Orson Scott Card | Shtetet e Bashkuara |
Auth_002 | Margaret Atwood | Kanadë |
A e rregulloi kjo? Le të shqyrtojmë varësitë tona tani:
LIBRA tabela :
- Book_ID → Libri: Libri varet nga Libri_ID .
- Nuk ka varësi të tjera në këtë tabelë, kështu që ne jemi në rregull. Vini në dukje se autorit kyç i jashtëm Autori_ID e lidh këtë tabelë në tabelën AUTHORS përmes autorit të tij primar Author_ID . Ne kemi krijuar një marrëdhënie për të shmangur një varësi transitive, një dizajn kyç të bazave të të dhënave relacionale.
Tabela e autorëve :
- Author_ID → Autor: Autori varet nga Author_ID .
- Autori → Autoriteti: Nacionalizmi: Shtetësia mund të përcaktohet nga autori.
- Author_ID → Author_Nationality: Shtetësia mund të përcaktohet nga Author_ID përmes atributit të Autorit . Ende kemi një varësi transitive.
Ne duhet të shtojmë një tabelë të tretë për të normalizuar këto të dhëna:
SHTETE
Country_ID | vend |
---|---|
Coun_001 | Shtetet e Bashkuara |
Coun_002 | Kanadë |
AUTORËT
Author_ID | autor | Country_ID |
---|---|---|
Auth_001 | Orson Scott Card | Coun_001 |
Auth_002 | Margaret Atwood | Coun_002 |
Tani kemi tri tavolina, duke përdorur çelësa të huaj për të lidhur mes tabelave:
- Çelësi i jashtëm i tabelës së librit BOOK Author_ID lidh një libër me një autor në tabelën AUTHORS.
- Kyç i jashtëm i tabelës AUTHORS i Shtetit Country_ID lidh një autor në një vend në tabelën e COUNTRIES.
- Tabela COUNTRIES nuk ka çelës të huaj sepse nuk ka nevojë të lidhet me një tabelë tjetër në këtë dizajn.
Pse Dependencat Transitive janë Design Bad Database
Cila është vlera e shmangies së varësive kalimtare për të ndihmuar në sigurimin e 3NF? Le të shqyrtojmë sërish tabelën tonë të parë dhe të shohim çështjet që krijon:
AUTORËT
Author_ID | autor | libër | Author_Nationality |
---|---|---|---|
Auth_001 | Orson Scott Card | Lojë e Ender | Shtetet e Bashkuara |
Auth_001 | Orson Scott Card | Fëmijët e mendjes | Shtetet e Bashkuara |
Auth_002 | Margaret Atwood | Taleja e Shërbeses | Kanadë |
Ky lloj dizajni mund të kontribuojë në anomalitë dhe mospërputhjet e të dhënave, për shembull:
- Nëse fshini dy librat "Fëmijët e mendjes" dhe "Ender's Game", do të fshini autorin "Orson Scott Card" dhe kombësinë e tij plotësisht nga baza e të dhënave.
- Ju nuk mund të shtoni një autor të ri në bazën e të dhënave nëse nuk shtoni edhe një libër; çka nëse autori është ende i pabotuar ose nuk e njeh emrin e një libri që ajo ka shkruar?
- Nëse "Orson Scott Card" ndryshoi nënshtetësinë e tij, ju do të duhet ta ndryshoni atë në të gjitha të dhënat në të cilat ai shfaqet. Duke pasur të dhëna të shumta me të njëjtin autor mund të rezultojë në të dhëna të pasakta: çka nëse personi i regjistrimit të të dhënave nuk e kupton se ka të dhëna të shumta për të dhe i ndryshon të dhënat në vetëm një rekord?
- Ju nuk mund të fshini një libër si "Taleja e Shërbesës" pa fshirë plotësisht autorin.
Këto janë vetëm disa arsye pse normalizimi , dhe shmangia e varësive kalimtare, mbrojnë të dhënat dhe sigurojnë qëndrueshmëri.