3.1 Pag-normalize ng database
Ang normal na anyo ay isang pag-aari ng isang relasyon sa isang modelo ng relational na data na nagpapakilala dito sa mga tuntunin ng redundancy, na posibleng humahantong sa lohikal na maling mga resulta ng pag-sample o pagbabago ng data. Ang normal na anyo ay tinukoy bilang ang hanay ng mga kinakailangan na dapat matugunan ng isang kaugnayan (mga talahanayan sa isang database).
Ang proseso ng pag-convert ng mga relasyon sa database sa isang form na umaayon sa mga normal na form ay tinatawag na normalization. Ang normalisasyon ay inilaan upang dalhin ang istraktura ng database sa isang form na nagbibigay ng minimal na lohikal na redundancy , at hindi nilayon upang bawasan o pataasin ang pagganap, o bawasan o pataasin ang pisikal na dami ng database .
Ang pinakalayunin ng normalisasyon ay bawasan ang potensyal na hindi pagkakapare-pareho ng impormasyong nakaimbak sa database. Ang pangkalahatang layunin ng proseso ng normalisasyon ay ang mga sumusunod:
- pagbubukod ng ilang uri ng redundancy;
- ayusin ang ilang mga anomalya sa pag-update;
- pagbuo ng isang proyekto sa database na isang sapat na "mataas na kalidad" na representasyon ng totoong mundo, ay intuitive at maaaring magsilbi bilang isang magandang batayan para sa kasunod na pagpapalawak;
- pagpapasimple ng pamamaraan para sa paglalapat ng mga kinakailangang hadlang sa integridad.
Ang redundancy ay kadalasang inaalis sa pamamagitan ng nabubulok na mga relasyon sa paraang ang mga pangunahing katotohanan lamang ang nakaimbak sa bawat kaugnayan (iyon ay, mga katotohanang hindi nagmula sa iba pang mga nakaimbak na katotohanan).
Habang ang mga ideya sa normalisasyon ay lubhang kapaki-pakinabang para sa disenyo ng database, ang mga ito ay hindi nangangahulugang isang pangkalahatan o kumpletong paraan ng pagpapabuti ng kalidad ng isang disenyo ng database. Ito ay dahil sa ang katunayan na mayroong masyadong maraming iba't ibang mga posibleng error at pagkukulang sa istraktura ng database na hindi maaaring alisin sa pamamagitan ng normalisasyon.
Sa kabila ng mga pagsasaalang-alang na ito, ang teorya ng normalisasyon ay isang napakahalagang tagumpay ng teorya at kasanayan sa relasyon, dahil nagbibigay ito ng mahigpit at makatwirang pamantayan para sa kalidad ng isang proyekto sa database at mga pormal na pamamaraan para sa pagpapabuti ng kalidad na ito. Ginagawa nitong kakaiba ang teorya ng normalisasyon mula sa mga empirical na diskarte sa disenyo na inaalok sa iba pang mga modelo ng data. Bukod dito, maaari itong maitalo na sa buong larangan ng teknolohiya ng impormasyon ay halos walang mga pamamaraan para sa pagsusuri at pagpapabuti ng mga solusyon sa disenyo na maihahambing sa teorya ng normalisasyon ng mga relational na database sa mga tuntunin ng antas ng pormal na higpit.
Minsan ay pinupuna ang normalisasyon sa kadahilanang "common sense lang ito" at ang sinumang karampatang propesyonal ay "natural" na magdidisenyo ng ganap na normalized na database nang hindi kinakailangang maglapat ng dependency theory.
Gayunpaman, tulad ng sinabi ni Propesor Christopher Date, ang normalisasyon ay tiyak na mga prinsipyo ng sentido komun na gumagabay sa isang may-gulang na taga-disenyo sa kanyang isipan, iyon ay, ang mga prinsipyo ng normalisasyon ay pormal na sentido komun . Samantala, ang pagtukoy at pagpormal sa mga prinsipyo ng sentido komun ay isang napakahirap na gawain, at ang tagumpay sa paglutas nito ay isang makabuluhang tagumpay.
3.2 Unang normal na anyo
Ang unang normal na anyo (1NF) ay ang pangunahing normal na anyo ng isang kaugnayan sa modelo ng relational na data.
Ang isang variable na ugnayan ay nasa unang normal na anyo kung at kung, sa anumang wastong halaga ng variable na iyon, ang bawat tuple ng kaugnayan ay naglalaman ng eksaktong isang halaga para sa bawat isa sa mga katangian.
Sa isang relational na modelo, ang isang relasyon ay palaging nasa unang normal na anyo, sa pamamagitan ng kahulugan ng konsepto ng relasyon.
Tulad ng para sa iba't ibang mga talahanayan, maaaring hindi sila wastong representasyon ng mga relasyon at, nang naaayon, maaaring wala sa 1NF. Ayon sa depinisyon ni Christopher Date para sa naturang kaso, ang isang talahanayan ay na-normalize (katumbas nito, ay nasa unang normal na anyo) kung at kung ito ay direkta at totoong representasyon ng ilang kaugnayan. Higit na partikular, ang talahanayang pinag-uusapan ay dapat matugunan ang sumusunod na limang kundisyon:
- Walang pagkakasunud-sunod ng mga hilera mula sa itaas hanggang sa ibaba (sa madaling salita, ang pagkakasunud-sunod ng mga hilera ay hindi naghahatid ng anumang impormasyon).
- Walang kaliwa-pakanan na pagkakasunud-sunod ng mga column (sa madaling salita, ang pagkakasunud-sunod ng mga column ay walang dalang impormasyon).
- Walang duplicate na linya.
- Ang bawat intersection ng isang row at isang column ay naglalaman ng eksaktong isang value mula sa kaukulang domain (at wala nang iba pa).
- Ang lahat ng mga column ay "regular".
Ang "regularity" ng lahat ng column ng isang table ay nangangahulugan na walang "hidden" na mga component sa table na maa-access lang sa invocation ng ilang espesyal na operator sa halip na tumukoy sa mga regular na pangalan ng column, o na humahantong sa mga side effect para sa mga row o mga talahanayan kapag gumagamit ng mga karaniwang operator.
Ang orihinal na hindi normalized (iyon ay, hindi isang tamang representasyon ng ilang kaugnayan) na talahanayan:
Empleado | Numero ng telepono |
---|---|
Ivanov I.I. |
283-56-82 390-57-34 |
Petrov P.P. | 708-62-34 |
Sidorov S.S. |
Ang isang talahanayan ay binawasan sa 1NF, na siyang tamang representasyon ng ilang kaugnayan:
Empleado | Numero ng telepono |
---|---|
Ivanov I.I. | 283-56-82 |
Ivanov I.I. | 390-57-34 |
Petrov P.P. | 708-62-34 |
3.3 Pangalawang normal na anyo
Ang isang variable ng ugnayan ay nasa pangalawang normal na anyo kung at kung ito ay nasa unang normal na anyo at ang bawat hindi pangunahing katangian ay hindi mababawasang umaasa sa (bawat) susi ng kandidato nito .
Ang irreducibility ay nangangahulugan na ang potensyal na key ay hindi naglalaman ng mas maliit na subset ng mga katangian kung saan maaari ding makuha ang functional dependency na ito. Para sa hindi mababawasang functional dependency, ang katumbas na konsepto ng "full functional dependency" ay kadalasang ginagamit.
Kung ang susi ng kandidato ay simple, iyon ay, ito ay binubuo ng isang solong katangian, kung gayon ang anumang functional na pag-asa dito ay hindi mababawasan (kumpleto). Kung ang susi ng kandidato ay isang pinagsama-samang susi, kung gayon, ayon sa kahulugan ng pangalawang normal na anyo, dapat na walang mga hindi pangunahing katangian sa kaugnayan na nakadepende sa bahagi ng pinagsama-samang susi ng kandidato.
Isang halimbawa ng pag-convert ng kaugnayan sa pangalawang normal na anyo
Hayaang ang pares ng mga attribute na {Company branch, Position} ay bumuo ng pangunahing key sa sumusunod na kaugnayan:
sangay ng kumpanya | Titulo sa trabaho | suweldo | Availability ng isang computer |
---|---|---|---|
Sangay sa Tomsk | Mas malinis | 20000 | Hindi |
Sangay sa Moscow | Programmer | 40000 | Kumain |
Sangay sa Tomsk | Programmer | 25000 | Kumain |
Sabihin natin na ang suweldo ay nakasalalay sa sangay at posisyon, at ang pagkakaroon ng isang computer ay nakasalalay lamang sa posisyon.
Mayroong functional dependence Position -> Ang pagkakaroon ng computer, kung saan ang kaliwang bahagi (determinant) ay bahagi lamang ng primary key, na lumalabag sa kondisyon ng pangalawang normal na anyo.
Upang mabawasan sa 2NF, ang orihinal na kaugnayan ay dapat na mabulok sa dalawang relasyon:
sangay ng kumpanya | Titulo sa trabaho | suweldo |
---|---|---|
Sangay sa Tomsk | Mas malinis | 20000 |
Sangay sa Moscow | Programmer | 40000 |
Sangay sa Tomsk | Programmer | 25000 |
Titulo sa trabaho | Availability ng isang computer |
---|---|
Mas malinis | Hindi |
Programmer | Kumain |
Programmer | Kumain |
3.4 Ikatlong normal na anyo (3NF)
Ang isang ugnayang variable R ay nasa 3NF kung at kung ang mga sumusunod na kundisyon ay totoo:
- Ray nasa pangalawang normal na anyo.
- walang hindi pangunahing katangianRay wala sa transitive functional dependence sa candidate keyR.
Mga paliwanag para sa kahulugan:
Ang isang hindi pangunahing katangian ng isang kaugnayang R ay isang katangian na hindi kabilang sa alinman sa mga susi ng kandidato ng R.
Ang functional dependence ng hanay ng mga katangian Z sa hanay ng mga katangian X (isinulat X → Z, binibigkas na "x tinutukoy z") ay palipat kung mayroong isang hanay ng mga katangian Y na X → Y at Y → Z. Sa ito kaso, wala sa mga set X, Y at Z ay hindi isang subset ng isa pa, ibig sabihin, ang functional dependencies X → Z, X → Y, at Y → Z ay hindi mahalaga, at wala ring functional dependency Y → X.
Isang kahulugan ng 3NF, katumbas ng kay Codd ngunit iba ang pagkakasabi, ay ibinigay ni Carlo Zaniolo noong 1982. Ayon dito, ang isang variable na ugnayan ay nasa 3NF kung at kung ang bawat isa sa mga functional dependencies nito X → A ay nakakatugon sa kahit isa sa mga sumusunod na kondisyon:
- Ang X ay naglalaman ng A (iyon ay, X → A ay isang walang kuwentang functional dependency)
- X - sobrang susi
- Ang A ay isang pangunahing katangian (iyon ay, ang A ay bahagi ng isang susi ng kandidato).
Malinaw na tinukoy ng depinisyon ni Zaniolo ang pagkakaiba sa pagitan ng 3NF at ng mas mahigpit na Boyce-Codd Normal Form (BCNF): Hindi kasama ng BCNF ang ikatlong kundisyon ("Ang A ay isang pangunahing katangian").
Isang di-malilimutang at tradisyonal na naglalarawang buod ng kahulugan ng 3NF ng Codd ay ibinigay ni Bill Kent: bawat hindi pangunahing katangian "ay dapat magbigay ng impormasyon tungkol sa susi, ang buong susi, at walang iba kundi ang susi ".
Ang kondisyon ng pagdepende sa "buong susi" ng mga hindi pangunahing katangian ay tumitiyak na ang kaugnayan ay nasa pangalawang normal na anyo; at ang kundisyon para umasa sila sa "wala kundi ang susi" ay nasa ikatlong normal na anyo sila.
Binanggit ni Chris Date ang buod ni Kent bilang isang "intuitively attractive feature" ng 3NF, at napagmasdan na, na may kaunting pagbabago, maaari din itong magsilbi bilang isang kahulugan ng mas mahigpit na normal na anyo ng Boyce-Codd: "ang bawat katangian ay dapat magbigay ng impormasyon tungkol sa isang susi. , isang buong susi, at walang anuman kundi ang susi.
Ang bersyon ni Kent ng 3NF na kahulugan ay hindi gaanong mahigpit kaysa sa Boyce-Codd na normal na anyo na bersyon ng pagbabalangkas ng Data, dahil ang una ay nagsasaad lamang na ang mga hindi pangunahing katangian ay nakadepende sa mga susi.
Ang mga pangunahing katangian (na mga susi o bahagi ng mga ito) ay hindi kailangang umasa sa pagganap; bawat isa sa kanila ay nagbibigay ng impormasyon tungkol sa susi sa pamamagitan ng pagbibigay ng susi mismo o bahagi nito. Dapat tandaan dito na ang panuntunang ito ay may bisa lamang para sa mga hindi pangunahing katangian, dahil ang paglalapat nito sa lahat ng mga katangian ay ganap na hindi paganahin ang lahat ng kumplikadong alternatibong mga susi, dahil ang bawat elemento ng naturang key ay lalabag sa "buong key" na kondisyon.
Isaalang-alang ang ugnayang variable R1 bilang isang halimbawa:
Empleado | Kagawaran | Telepono |
---|---|---|
Grishin | Accounting | 11-22-33 |
Vasiliev | Accounting | 11-22-33 |
Petrov | Supply | 44-55-66 |
Ang bawat empleyado ay eksklusibong nabibilang sa isang departamento; bawat departamento ay may iisang telepono. Ang katangian ng Empleyado ay ang pangunahing susi. Ang mga empleyado ay walang mga personal na telepono, at ang numero ng telepono ng empleyado ay nakasalalay lamang sa departamento.
Sa halimbawa, umiiral ang mga sumusunod na functional dependencies: Empleyado → Department, Department → Phone, Employee → Phone.
Ang ugnayang variable na R1 ay nasa pangalawang normal na anyo dahil ang bawat katangian ay may hindi mababawasang functional dependency sa potensyal na key na Empleyado.
Ang relasyong Empleyado → Ang telepono ay palipat, kaya ang kaugnayan ay wala sa ikatlong normal na anyo.
Ang paghahati ng R1 ay nagreresulta sa dalawang variable ng kaugnayan na nasa 3NF:
Kagawaran | Telepono |
---|---|
Accounting | 11-22-33 |
Supply | 44-55-66 |
Empleado | Kagawaran |
---|---|
Grishin | Accounting |
Vasiliev | Accounting |
Petrov | Supply |
Ang paunang kaugnayan R1, kung kinakailangan, ay madaling makuha bilang isang resulta ng operasyon ng pagsali sa mga relasyon R2 at R3.