Makosa ya kawaida yaliyotengenezwa katika Design Design

Ikiwa unafanya kazi na darasani iliyo na mamia ya rekodi au mamilioni ya rekodi, kubuni sahihi ya database daima ni muhimu. Siyo tu kutengeneza taarifa rahisi zaidi, pia itapunguza kura ya dhamana baadaye. Kwa bahati mbaya, ni rahisi kuanguka katika mitego machache ambayo inaweza kufanya mambo magumu siku zijazo.

Kuna vitabu vyote vilivyoandikwa juu ya suala la kuimarisha database, lakini ikiwa tu kuepuka makosa haya ya kawaida, utakuwa kwenye njia sahihi ya kubuni mzuri wa database.

Hifadhi ya Hifadhi # 1: Mashamba ya Kurudia katika Jedwali

Utawala wa msingi wa kubuni nzuri wa database ni kutambua data kurudia na kuweka safu hizo za kurudia katika meza yao. Masuala ya kurudia kwenye meza ni ya kawaida kwa wale ambao wamekuja kutoka ulimwenguni la lahajedwali, lakini wakati sahajedwali zinaonekana kuwa gorofa na kubuni, databasta zinapaswa kuwa kihusiano. Ni kama kwenda kutoka 2D hadi 3D.

Kwa bahati, mashamba ya kurudia mara nyingi ni rahisi kuona. Angalia tu meza hii:

OrderID Bidhaa1 Bidhaa2 Bidhaa3
1 Bears ya Teddy Maharage ya Jelly
2 Maharage ya Jelly

Nini kinatokea wakati amri ina bidhaa nne? Tunahitaji kuongeza uwanja mwingine kwenye meza ili kuunga mkono zaidi ya bidhaa tatu. Na kama tumejenga programu ya mteja karibu na meza ili kutusaidia data ya pembejeo, tunaweza kuitayarisha na shamba jipya la bidhaa. Na tunawezaje kupata amri zote za Jellybeans kwa utaratibu? Tutalazimika kuuliza kila shamba la bidhaa katika meza na taarifa ya SQL ambayo inaweza kuonekana kama: SELECT * KUTOKA Bidhaa ILIYO Bidhaa1 = 'Maharage ya Jelly' Au Bidhaa2 = 'Maharage ya Jelly' OR Bidhaa3 = 'Maharage ya Jelly'.

Badala ya kuwa na meza moja ambayo inajumuisha maelezo yote pamoja, tunapaswa kuwa na meza tatu ambazo kila mmoja humiliki kipande cha habari. Katika mfano huu, tungependa meza ya Amri na taarifa kuhusu utaratibu yenyewe, meza ya Bidhaa na bidhaa zetu zote na kompyuta kibao ya ProductOrders ambazo ziliunganisha bidhaa kwa utaratibu.

OrderID CustomerID Tarehe ya amri Jumla
1 7 1/24/17 19.99
2 9 1/25/17 24.99
BidhaaID Bidhaa Hesabu
1 Bears ya Teddy 1
2 Maharage ya Jelly 100
BidhaaOrderID BidhaaID OrderID
101 1 1
102 2 1

Angalia jinsi kila meza ina shamba lake la kipekee la ID. Hii ndiyo ufunguo wa msingi. Tunaunganisha meza kwa kutumia thamani muhimu ya msingi kama ufunguo wa kigeni kwenye meza nyingine. Soma zaidi kuhusu funguo za msingi na funguo za kigeni.

Hifadhi ya Hifadhi ya # 2: Kusambaza Jedwali katika Jedwali

Hii ni kosa lingine la kawaida, lakini sio daima kusimama nje kama mashamba ya kurudia. Wakati wa kuunda database, unataka kuhakikisha data yote katika meza inahusiana na yenyewe. Ni kama mchezo wa mtoto huyo kuhusu kutazama kile kilicho tofauti. Ikiwa una ndizi, strawberry, peach na seti ya televisheni, seti ya televisheni huenda iko sehemu nyingine.

Pamoja na mstari huo huo, ikiwa una meza ya watu wa mauzo, habari zote katika meza hiyo zinapaswa kuhusisha hasa kwa mtu huyo wa mauzo. Taarifa yoyote ya ziada ambayo sio tu kwa mtu huyo wa mauzo inaweza kuwa na mahali pengine kwenye database yako.

SalesID Kwanza Mwisho Anwani Nambari ya simu Ofisi OfficeNumber
1 Sam Elliot 118 St St, Austin, TX (215) 555-5858 Austin Downtown (212) 421-2412
2 Alice Smith 504 2nd Street, New York, NY (211) 122-1821 New York (Mashariki) (211) 855-4541
3 Joe Parish 428 Aker St, Austin, TX (215) 545-5545 Austin Downtown (212) 421-2412

Wakati meza hii inaweza kuangalia kama ni yote yanayohusiana na mfanyabiashara binafsi, ina kweli ina meza iliyoingia ndani ya meza. Angalia jinsi Office na Ofisi ya Nambari hurudia tena na "Austin Downtown". Nini kama nambari ya simu ya ofisi inabadilika? Unahitaji kusasisha seti kamili ya data kwa kipande kimoja cha kubadilisha habari, ambacho sio jambo jema. Mashamba haya yanapaswa kuhamishwa kwenye meza yao wenyewe.

SalesID Kwanza Mwisho Anwani Nambari ya simu OfficeID
1 Sam Elliot 118 St St, Austin, TX (215) 555-5858 1
2 Alice Smith 504 2nd Street, New York, NY (211) 122-1821 2
3 Joe Parish 428 Aker St, Austin, TX (215) 545-5545 1
OfficeID Ofisi OfficeNumber
1 Austin Downtown (212) 421-2412
2 New York (Mashariki) (211) 855-4541

Aina hii ya kubuni pia inakupa uwezo wa kuongeza maelezo ya ziada kwenye meza ya Ofisi bila kuunda ndoto ya jitihada kwenye meza ya mtu wa mauzo. Fikiria ni kazi ngapi ya kuweka tu wimbo wa anwani ya mitaani, jiji, hali na msimbo wa habari ikiwa habari zote hizo zilikuwa kwenye meza ya mtu wa mauzo!

Dharura ya Hifadhi ya # 3: Kuweka Sehemu mbili au zaidi za Taarifa Katika Shamba moja

Kuingiza habari za ofisi kwenye meza ya mtu ya mauzo sio tatizo pekee kwa database hiyo. Eneo la anwani lili na vipande vitatu vya habari: anwani ya mitaani, mji na serikali. Kila shamba katika duka lazima iwe na kipande kimoja cha habari. Unapokuwa na vipande vingi vya habari katika shamba moja, inaweza kuwa vigumu kuuliza database kwa habari.

Kwa mfano, je! Ikiwa tulitaka kuendesha swala kwa watu wote wa mauzo kutoka Austin? Tunahitaji kutafuta ndani ya uwanja wa anwani, ambayo sio ufanisi tu, lakini inaweza kurudi taarifa mbaya. Baada ya yote, kinachotokea kama mtu anaishi mitaani la Austin huko Portland, Oregon?

Hapa ni nini meza inapaswa kuangalia kama:

SalesID Kwanza Mwisho Anwani1 Anwani2 Jiji Hali Zip Simu
1 Sam Elliot 118 St Main Austin TX 78720 2155555858
2 Alice Smith 504 2nd St New York NY 10022 2111221821
3 Joe Parish 428 Aker St Apt 304 Austin TX 78716 2155455545

Kuna mambo kadhaa ya kumbuka hapa. Kwanza, "Anwani1" na "Anwani2" itaonekana kuwa chini ya makosa ya kurudia.

Hata hivyo, katika kesi hii wanaelezea vipande tofauti vya data vinavyohusiana moja kwa moja na mtu wa mauzo badala ya kundi linalojitokeza la data ambalo linapaswa kuingia katika meza yake.

Pia, kama kosa la ziada ili kuepuka, tazama jinsi muundo wa nambari ya simu umeondolewa kwenye meza. Unapaswa kuepuka kuhifadhi muundo wa mashamba wakati iwezekanavyo. Katika kesi ya namba za simu, kuna njia nyingi watu kuandika namba ya simu: 215-555-5858 au (215) 555-5858. Hii ingeweza kutafuta mtu wa mauzo kwa namba yao ya simu au kufanya utafutaji wa watu wa mauzo katika msimbo wa eneo sawa zaidi ngumu.

Hifadhi ya Database # 4: Si Kutumia Muhimu Msingi Msingi

Katika matukio mengi, utataka kutumia nambari ya kuongezeka kwa moja kwa moja au nambari nyingine inayozalishwa au alphanumeric kwa ufunguo wako wa msingi. Unapaswa kuepuka kutumia taarifa yoyote halisi kwa ufunguo wa msingi hata kama inaonekana kama ingeweza kufanya kitambulisho kizuri.

Kwa mfano, kila mmoja ana nambari yetu ya kibinafsi ya usalama wa jamii, kwa hiyo kutumia namba ya usalama wa jamii kwa database ya wafanyakazi inaweza kuonekana kama wazo nzuri. Lakini wakati ni nadra, inawezekana hata nambari ya usalama wa jamii kubadili, na hatutaki kamwe ufunguo wetu wa msingi kubadili.

Na hiyo ndiyo shida kwa kutumia taarifa halisi kama thamani muhimu. Inaweza kubadilika.

Dharura ya Hifadhi ya # 5: Si Kutumia Mkataba wa Kumtaja Jina

Hii inaweza kusikia kama mpango mkubwa wakati unapoanza kuunda database yako, lakini mara tu unapokuja maswali ya kuandika dhidi ya database ili kupata habari, kuwa na mkataba wa kutaja jina utasaidia unapoweza kutaja majina ya shamba.

Hebu fikiria jinsi mchakato huo ungekuwa vigumu zaidi kama majina yalihifadhiwa kama Jina la kwanza, Jina la Mwisho katika meza moja na kwanza_name, mwisho_name katika meza nyingine.

Mikutano miwili inayojulikana zaidi inajumuisha barua ya kwanza ya kila neno katika shamba au kutenganisha maneno kwa kutumia kusisitiza. Unaweza pia kuona waendelezaji wengine wakifanya barua ya kwanza ya kila neno ila neno la kwanza: kwanza, jina la mwisho.

Utahitaji pia kuamua kutumia majina ya meza ya umoja au majina ya meza ya wingi. Je! Ni meza ya Order au meza ya amri? Je! Ni meza ya Wateja au meza ya Wateja? Tena, hutaki kushikamana na meza ya Order na meza ya Wateja.

Mkataba wa kutaja unayochagua sio muhimu kama mchakato wa kuchagua na kushikamana na mkataba wa kutaja jina.

Hifadhi ya Hifadhi # 6: Ufafanuzi usiofaa

Ufafanuzi ni mojawapo ya mambo magumu zaidi ya kupata haki, hasa kwa wale wapya kwenye kubuni ya database. Funguo zote za msingi na funguo za kigeni zinapaswa kuwa indexed. Hizi ni nini kiunganishi chati pamoja, kwa hiyo bila index, utaona utendaji mbaya sana kutoka kwenye orodha yako.

Lakini nini mara nyingi hukosa ni maeneo mengine. Hizi ndio "PAMO" mashamba. Ikiwa unapenda mara nyingi kupunguza utafutaji wako kwa kutumia shamba katika kifungu cha WHERE, unataka kufikiri juu ya kuweka index kwenye shamba hilo. Hata hivyo, hutaki kuondosha meza, ambayo inaweza pia kuumiza utendaji.

Jinsi ya kuamua? Hii ni sehemu ya sanaa ya kubuni ya database. Hakuna mipaka ngumu juu ya ngapi indexes unapaswa kuweka kwenye meza. Kimsingi, unataka kurekebisha shamba lolote ambalo linatumika mara kwa mara katika kifungu cha WHERE. Soma zaidi juu ya kuorodhesha vizuri database yako.