Normalize ang Iyong Database: Unang Normal na Form

Ang dalawang simpleng patakaran ay makakatulong sa pag-normalize ng iyong database

Ang Unang Normal na Form (1NF) ay nagtatakda ng mga pangunahing alituntunin para sa organisadong database:

Ano ang ibig sabihin ng mga patakarang ito kapag nag-isip ng praktikal na disenyo ng isang database? Ito ay talagang simple.

1. Tanggalin ang Pag-duplicate

Ang unang panuntunan ay nagpapahiwatig na hindi dapat namin dobleng data sa loob ng parehong hanay ng isang talahanayan. Sa loob ng komunidad ng database, ang konseptong ito ay tinukoy bilang ang atomicity ng isang mesa. Ang mga talahanayan na sumunod sa patakarang ito ay sinasabing atomic. Talakayin natin ang alituntuning ito sa isang klasikong halimbawa: isang talahanayan sa loob ng isang database ng human resources na nag-iimbak ng manager-subordinate na relasyon. Para sa mga layunin ng aming halimbawa, ipapataw namin ang patakaran sa negosyo na maaaring magkaroon ang isa ng tagapamahala ng isa o higit pang mga subordinate habang ang bawat pantulong ay maaaring magkaroon lamang ng isang tagapamahala.

Intindihin, kapag gumagawa ng isang listahan o spreadsheet upang subaybayan ang impormasyong ito, maaari kaming lumikha ng talahanayan na may mga sumusunod na field:

Gayunpaman, isaalang-alang ang unang panuntunan na ipinataw ng 1NF: Tanggalin ang mga duplicate na haligi mula sa parehong table. Maliwanag, ang mga haligi ng Subordinate1-Subordinate4 ay duplicative. Gumawa ng isang sandali at pag-isipan ang mga problema na nakataas sa pamamagitan ng sitwasyong ito. Kung ang isang tagapamahala ay may isa lamang na subordinate, ang mga haligi ng Subordinate2-Subordinate4 ay simpleng nasayang na espasyo ng imbakan (isang mahalagang database ng kalakal). Bukod dito, isipin ang kaso kung saan ang isang tagapamahala ay mayroon nang 4 subordinates - ano ang mangyayari kung siya ay tumatagal sa ibang empleyado? Ang buong istraktura ng talahanayan ay nangangailangan ng pagbabago.

Sa puntong ito, ang pangalawang maliwanag na ideya ay kadalasang nangyayari sa mga novice sa database: Hindi namin nais na magkaroon ng higit sa isang haligi at gusto naming payagan para sa isang nababaluktot na halaga ng imbakan ng data. Subukan natin ang ganito:

At ang patlang ng Subordinates ay naglalaman ng maraming entry sa form na "Mary, Bill, Joe."

Ang solusyon na ito ay mas malapit, ngunit ito ay bumagsak din sa marka. Ang haligi ng subordinates ay pa rin ang dobleng at di-atomic. Ano ang mangyayari kapag kailangan nating idagdag o alisin ang isang pantulong? Kailangan naming basahin at isulat ang buong nilalaman ng talahanayan. Iyon ay hindi isang malaking deal sa sitwasyong ito, ngunit paano kung ang isang tagapamahala ay may isang daang empleyado? Gayundin, pinalala nito ang proseso ng pagpili ng data mula sa database sa mga query sa hinaharap.

Narito ang isang talahanayan na nakakatugon sa unang panuntunan ng 1NF:

Sa kasong ito, ang bawat pantulong ay may isang solong entry, ngunit ang mga tagapamahala ay maaaring magkaroon ng maramihang mga entry.

2. Kilalanin ang Pangunahing Saligan

Ngayon, ano ang tungkol sa pangalawang panuntunan: kilalanin ang bawat hilera na may natatanging haligi o hanay ng mga haligi (ang pangunahing susi )? Maaari mong tingnan ang talahanayan sa itaas at imungkahi ang paggamit ng haligi na pantulong bilang isang pangunahing susi. Sa katunayan, ang haligi ng subordinate ay isang mahusay na kandidato para sa isang pangunahing susi dahil sa ang katunayan na ang aming mga patakaran sa negosyo ay tinukoy na ang bawat pantulong ay maaaring magkaroon lamang ng isang tagapamahala. Gayunpaman, ang data na aming pinili upang mag-imbak sa aming mesa ay gumagawa ito ng mas mababa kaysa sa perpektong solusyon. Ano ang mangyayari kung umupa kami ng ibang empleyado na nagngangalang Jim? Paano namin mai-imbak ang kanyang manager-pantulong na relasyon sa database?

Pinakamainam na gumamit ng isang tunay na natatanging tagatukoy (tulad ng ID ng empleyado) bilang pangunahing susi . Ang aming huling talahanayan ay magiging ganito:

Ngayon, ang aming talahanayan ay nasa unang normal na form! Kung nais mong ipagpatuloy ang pag-aaral tungkol sa normalisasyon, basahin ang iba pang mga artikulo sa serye na ito: