Kupotosha Database yako: Kugeuka kwa Fomu ya Pili ya kawaida (2NF)

Kuweka Database katika Fomu ya Pili ya kawaida

Zaidi ya mwezi uliopita, tumeangalia vipengele kadhaa vya kuimarisha meza ya database. Kwanza, tulijadili kanuni za msingi za uhalali wa database. Mara ya mwisho, tumezingatia mahitaji ya msingi yaliyowekwa na fomu ya kawaida ya kawaida (1NF). Sasa, hebu tuendelee safari yetu na kuzingatia kanuni za fomu ya pili ya kawaida (2NF).

Kumbuka mahitaji ya jumla ya 2NF:

Sheria hizi zinaweza kufupishwa kwa kauli rahisi: 2NF inajaribu kupunguza kiasi cha data nyingi katika meza kwa kuiondoa, kuiweka kwenye meza mpya na kujenga uhusiano kati ya meza hizo.

Hebu tuangalie mfano. Fikiria duka la mtandaoni linalohifadhi maelezo ya wateja kwenye databana. Wanaweza kuwa na meza moja inayoitwa Wateja kwa mambo yafuatayo:

Uangalizi mfupi katika meza hii unaonyesha kiasi kidogo cha data nyingi. Tunahifadhi "Bahari ya Bahari, NY 11579" na "Miami, FL 33157" mara mbili kila mmoja. Sasa, hiyo inaweza kuonekana kama hifadhi ya ziada sana katika mfano wetu rahisi, lakini fikiria nafasi iliyopoteza ikiwa tulikuwa na maelfu ya safu katika meza yetu. Zaidi ya hayo, kama msimbo wa ZIP wa Bahari ya Bahari ungebadilika, tunatakiwa kufanya mabadiliko hayo katika maeneo mengi kwenye databana.

Katika muundo wa database wa 2NF unaozingatia, taarifa hii ya uharibifu hutolewa na kuhifadhiwa kwenye meza tofauti. Jedwali letu jipya (hebu tupige ZIP) inaweza kuwa na nyanja zifuatazo:

Ikiwa tunataka kuwa na ufanisi mkubwa, tunaweza hata kujaza meza hii mapema - ofisi ya posta inatoa saraka ya codes zote za ZIP zilizo sahihi na uhusiano wao wa jiji / hali. Hakika, umekutana na hali ambapo aina hii ya daraka ilitumiwa. Mtu alichukua amri angeweza kukuuliza code yako ya kwanza kwanza na kisha akajua jiji na hali uliyokuwa ukiita. Aina hii ya utaratibu inapunguza hitilafu ya operator na huongeza ufanisi.

Sasa kwa kuwa tumeondoa data ya duplicative kutoka kwa Wateja meza, tumetimiza utawala wa kwanza wa fomu ya pili ya kawaida. Bado tunahitaji kutumia ufunguo wa kigeni ili kuunganisha meza mbili pamoja. Tutatumia msimbo wa ZIP (ufunguo wa msingi kutoka meza ya ZIP ) ili kuunda uhusiano huo. Hapa kuna meza yetu ya Wateja mpya:

Sasa tumeipunguza kiasi cha habari nyekundu iliyohifadhiwa kwenye databana na muundo wetu ni katika fomu ya kawaida ya kawaida!

Ikiwa ungependa kuhakikisha kuwa database yako ni kawaida, angalia makala zetu nyingine katika mfululizo huu: