Kuweka Faili katika Fomu ya Tatu Ya kawaida (3NF)

Fomu ya tatu ya kawaida (3NF) ni kanuni ya database inayounga mkono uadilifu wa data kwa kujenga juu ya kanuni za usimamiaji wa database zinazotolewa na Fomu ya Kwanza ya kawaida (1NF) na Fomu ya Pili ya kawaida (2NF).

Mahitaji ya Fomu ya Tatu ya kawaida

Kuna mahitaji mawili ya msingi kwa database kuwa katika fomu ya tatu ya kawaida:

Kuhusu Msingi wa Msingi wa Msingi

Hebu tutafakari zaidi kile tunachosema kwa ukweli kwamba nguzo zote zinategemea ufunguo wa msingi.

Ikiwa thamani ya safu inaweza kupatikana kutoka kwa ufunguo wote wa msingi na safu nyingine katika meza, inakiuka 3NF. Fikiria meza ya Waajiri na nguzo hizi:

Je, jina la mwisho na jina la kwanza linategemea tu thamani ya Wafanyakazi? Naam, Je, Jina la Mwisho linategemea jina la kwanza? La, kwa sababu hakuna kitu kinachojulikana katika Jina la Mwisho kinaonyesha thamani ya Jina la Mwanzo. Je, jina la kwanza linategemea Jina la Mwisho? Hakuna tena, kwa sababu hiyo ni ya kweli: chochote Nambari ya Mwisho inaweza kuwa, haikuweza kutoa maelezo kama thamani ya Jina la Mwanzo. Kwa hiyo, meza hii ni 3NF inayokubaliana.

Lakini fikiria meza hii ya Magari:

Mtengenezaji na Mfano wanaweza kupata kutoka kwa VehicleID - lakini Mfano pia unatokana na Mtengenezaji kwa sababu mtindo wa gari unafanywa tu na mtengenezaji fulani. Mpangilio wa jedwali hili sio la 3NF linalolingana, na kwa hiyo, linaweza kusababisha matokeo mabaya ya data. Kwa mfano, unaweza kuboresha mtengenezaji bila uppdatering mtindo, kuanzisha sahihi.

Ili kuifanya kuzingatia, tunahitaji kuhamisha safu ya ziada ya tegemezi kwenye meza nyingine na kuielezea kwa kutumia ufunguo wa kigeni. Hii ingeweza kusababisha meza mbili:

Magari Jedwali

Katika meza hapa chini, ModelID ni ufunguo wa kigeni kwenye meza ya Mifano :

Jedwali la Mifano

Mifumo hii mpya ya ramani ya meza kwa wazalishaji. Ikiwa unataka update maelezo yoyote ya gari maalum kwa mfano, utafanya hivyo katika meza hii, badala ya meza ya Magari.

Mashamba yaliyoharibiwa katika Mfano wa 3NF

Jedwali linaweza kuwa na shamba inayotokana - moja iliyohesabiwa kulingana na nguzo zingine kwenye meza. Kwa mfano, fikiria meza hii ya maagizo ya widget:

Uvunjaji wa jumla wa 3NF kwa sababu inaweza kutekelezwa kwa kuzidisha bei ya kitengo kwa wingi, badala ya kutegemeana kikamilifu na ufunguo wa msingi. Lazima tuondoe kwenye meza ili tufuatie fomu ya kawaida ya tatu.

Kwa kweli, kwa kuwa imechukuliwa, ni vyema si kuihifadhi kwenye darasani kabisa.

Tunaweza kuihesabu tu "juu ya kuruka" wakati wa kufanya maswali ya msingi. Kwa mfano, tunaweza kutumia awali swali hili ili kupata nambari za utaratibu na jumla:

Chagua Nambari ya Nambari, Jumla kutoka kwa Wajaji wa Widget

Sasa tunaweza kutumia swala lifuatayo:

Chagua Nambari ya Order, UnitPrice * Wingi AS Jumla kutoka kwa WidgetOrders

ili kufikia matokeo sawa bila kukiuka sheria za kawaida.