Normalization vs Denormalization
Ang mga database ng relasyon ay binubuo ng mga relasyon (mga kaugnay na talahanayan). Ang mga talahanayan ay binubuo ng mga hanay. Kung ang mga talahanayan ay dalawang malaki (i.e. masyadong maraming mga haligi sa isang talahanayan), maaaring mangyari ang mga anomalya sa database. Kung ang mga talahanayan ay dalawang maliit (ibig sabihin, ang database ay binubuo ng maraming mas maliliit na talahanayan), ito ay magiging hindi mahusay para sa pagtatanong. Ang Normalization at Denormalization ay dalawang proseso na ginagamit upang i-optimize ang pagganap ng database. Pinaliit ng normalisasyon ang mga redundancies na naroroon sa mga talahanayan ng data. Ang denormalization (reverse of normalization) ay nagdaragdag ng redundant data o group data.
Ano ang Normalization?
Ang Normalization ay isang proseso na isinasagawa upang mabawasan ang mga redundancies na naroroon sa data sa mga relational na database. Pangunahing hahatiin ng prosesong ito ang malalaking talahanayan sa mas maliliit na talahanayan na may mas kaunting mga redundancy (tinatawag na "Mga normal na anyo"). Ang mga mas maliliit na talahanayan na ito ay magkakaugnay sa isa't isa sa pamamagitan ng mahusay na tinukoy na mga relasyon. Sa isang mahusay na na-normalize na database, ang anumang pagbabago o pagbabago sa data ay mangangailangan ng pagbabago lamang ng isang talahanayan. Unang Normal Form (1NF), Second Normal Form (2NF), at ang Third Normal Form (3NF) ay ipinakilala ni Edgar F. Codd. Ang Boyce-Codd Normal Form (BCNF) ay ipinakilala noong 1974 nina Codd at Raymond F. Boyce. Natukoy na ang Higher Normal Forms (4NF, 5NF at 6NF), ngunit bihirang ginagamit ang mga ito.
Ang isang talahanayan na sumusunod sa 1NF ay tumitiyak na ito ay aktwal na kumakatawan sa isang kaugnayan (ibig sabihin, hindi ito naglalaman ng anumang mga talaan na umuulit), at hindi naglalaman ng anumang mga katangian na pinapahalagahan ng relasyon (i.e. ang lahat ng mga katangian ay dapat magkaroon ng mga atomic na halaga). Para makasunod ang talahanayan sa 2NF, dapat itong sumunod sa 1NF at anumang katangian na hindi bahagi ng anumang susi ng kandidato (i.e. mga hindi pangunahing katangian) ay dapat na ganap na nakadepende sa alinman sa mga susi ng kandidato sa talahanayan. Ayon sa depinisyon ng Codd, ang isang talahanayan ay sinasabing nasa 3NF, kung at kung lamang, ang talahanayang iyon ay nasa pangalawang normal na anyo (2NF) at ang bawat katangian sa talahanayan na hindi kabilang sa isang susi ng kandidato ay dapat na direktang nakadepende sa bawat candidate key ng table na iyon. Kinukuha ng BCNF (kilala rin bilang 3.5NF) ang ilang mga anomalya na hindi tinutugunan ng 3NF.
Ano ang Denormalization?
Ang Denormalization ay ang reverse process ng normalization process. Gumagana ang denormalization sa pamamagitan ng pagdaragdag ng redundant na data o pagpapangkat ng data para ma-optimize ang performance. Kahit na, ang pagdaragdag ng kalabisan ng data ay mukhang kontra-produktibo, kung minsan ang denormalization ay isang napakahalagang proseso upang mapagtagumpayan ang ilan sa mga pagkukulang sa relational database software na maaaring magkaroon ng mabibigat na parusa sa pagganap sa mga normalized na database (kahit na nakatutok para sa mas mataas na pagganap). Ito ay dahil ang pagsali sa ilang mga relasyon (na mga resulta ng pag-normalize) upang makagawa ng resulta sa isang query kung minsan ay maaaring maging mabagal depende sa aktwal na pisikal na pagpapatupad ng mga database system.
Ano ang pagkakaiba ng Normalization at Denormalization?
– Ang normalization at denormalization ay dalawang proseso na ganap na magkasalungat.
– Ang normalization ay ang proseso ng paghahati ng mas malalaking table sa mas maliliit na table na binabawasan ang redundant na data, habang ang denormalization ay ang proseso ng pagdaragdag ng redundant na data para ma-optimize ang performance.
– Isinasagawa ang normalization para maiwasan ang mga anomalya ng database.
– Karaniwang isinasagawa ang denormalization upang mapabuti ang pagganap ng pagbasa ng database, ngunit dahil sa mga karagdagang hadlang na ginagamit para sa denormalization, maaaring maging mas mabagal ang pagsusulat (ibig sabihin, pagpasok, pag-update at pagtanggal ng mga operasyon). Samakatuwid, ang isang denormalized database ay maaaring mag-alok ng mas masamang pagganap ng pagsulat kaysa sa isang normalized na database.
– Kadalasang inirerekomenda na dapat kang “mag-normalize hanggang sa sumakit, mag-denormalize hanggang sa gumana”.