Algeng mistök í gagnagrunni

Hvort sem þú ert að vinna með gagnagrunni sem geymir hundruð færslur eða milljónir af skrám, er rétt gagnasafn hönnun alltaf mikilvægt. Ekki aðeins mun það gera að sækja upplýsingarnar miklu auðveldara, það mun einnig einfalda að auka gagnagrunninn í framtíðinni. Því miður er auðvelt að falla í nokkra gildrur sem geta gert það erfitt í framtíðinni.

Það eru heilar bækur skrifaðar um efnið að normalize gagnagrunn, en ef þú forðast einfaldlega þessar algeng mistök, þá verður þú á réttri braut til góðrar gagnagrunarhönnunar.

Gagnasafn Mistök # 1: Endurtaka reiti í töflu

Grunnþumalputtaregla til góðrar gagnagrunarhönnunar er að viðurkenna endurtaka gögn og setja þær endurteknar dálka í eigin borð. Endurteknar reitir í töflu eru algengar fyrir þá sem komu frá töflureiknum, en á meðan töflureikar hafa tilhneigingu til að vera flöt með hönnun, skulu gagnagrunna vera sambönd. Það er eins og að fara frá 2D til 3D.

Til allrar hamingju eru endurteknar reitir venjulega auðvelt að koma fram. Kíktu bara á þetta borð:

OrderID Vara1 Vara2 Vara3
1 Bangsar Hlaupbaunir
2 Hlaupbaunir

Hvað gerist þegar pöntun inniheldur fjórar vörur? Við þurfum að bæta við öðru sviði við borðið til að styðja meira en þrjá vörur. Og ef við höfum byggt upp viðskiptavinarforrit um borðið til að hjálpa okkur að slá inn gögn, gætum við þurft að breyta því með nýju vöruflokkanum. Og hvernig finnum við allar pantanir með Jellybeans í röðinni? Við þyrftum að spyrja hvert vöruflokk í töflunni með SQL staðhæfing sem gæti líkist: SELECT * FROM PRODUCTS WHERE Product1 = 'Jelly Beans' OR Product2 = 'Jelly Beans' OR Product3 = 'Jelly Beans'.

Í stað þess að hafa eitt borð sem inniheldur allar upplýsingar saman, ættum við að hafa þrjú töflur sem hverjir eru með mismunandi upplýsingar. Í þessu dæmi viljum við panta borð með upplýsingum um pöntunina sjálfan, vöruborð með öllum vörum okkar og ProductOrders töflu sem tengdu vörur við pöntunina.

OrderID Skilríki viðskiptavinar Pöntunardagur Samtals
1 7 1/24/17 19.99
2 9 1/25/17 24.99
ProductID Vara Telja
1 Bangsar 1
2 Hlaupbaunir 100
ProductOrderID ProductID OrderID
101 1 1
102 2 1

Takið eftir því hvernig hvert borð hefur sitt eigið einstaka auðkenni. Þetta er aðal lykillinn. Við tengjum töflur með því að nota aðal lykil gildi sem erlent lykill í öðru töflu. Lestu meira um aðallyklum og erlendum lyklum.

Gagnasafn mistök # 2: Embedding töflu í töflu

Þetta er annað algeng mistök, en það kemur ekki alltaf eins mikið og endurteknar sviðum. Þegar þú ert að hanna gagnagrunn, viltu ganga úr skugga um að öll gögnin í töflunni tengist sjálfum sér. Það er eins og leikur barnsins um að finna hvað er öðruvísi. Ef þú ert með banani, jarðarber, ferskja og sjónvarpstæki, setur sjónvarpið líklega einhvers staðar annars staðar.

Á sama hátt, ef þú ert með sölufulltrúa, skulu allar upplýsingar í töflunni eiga sérstaklega við um söluaðila. Allar aukaupplýsingar sem ekki eru einstökir við sölumanninn geta átt einhvers staðar í gagnagrunninum þínum.

Söluupplýsingar Í fyrsta lagi Síðast Heimilisfang Símanúmer Skrifstofa OfficeNumber
1 Sam Elliot 118 Main St, Austin, TX (215) 555-5858 Austin Downtown (212) 421-2412
2 Alice smiður 504 2. Street, New York, NY (211) 122-1821 New York (austur) (211) 855-4541
3 Joe Sókn 428 Aker St, Austin, TX (215) 545-5545 Austin Downtown (212) 421-2412

Þó að þetta borð gæti litið út eins og það er allt sem tengist einstökum sölufulltrúa, þá hefur það í raun borðið sem er innbyggt í töflunni. Takið eftir því hvernig Office og OfficeNumber endurtaka með "Austin Downtown". Hvað gerist ef símanúmer skrifstofu breytist? Þú þarft að uppfæra allt sett af gögnum fyrir eitt smáupplýsinga sem breytist, sem er aldrei gott. Þessir reitir skulu fluttir í eigið borð.

Söluupplýsingar Í fyrsta lagi Síðast Heimilisfang Símanúmer OfficeID
1 Sam Elliot 118 Main St, Austin, TX (215) 555-5858 1
2 Alice smiður 504 2. Street, New York, NY (211) 122-1821 2
3 Joe Sókn 428 Aker St, Austin, TX (215) 545-5545 1
OfficeID Skrifstofa OfficeNumber
1 Austin Downtown (212) 421-2412
2 New York (austur) (211) 855-4541

Þessi tegund hönnunar gefur þér einnig möguleika á að bæta við viðbótarupplýsingum við skrifstofuborðið án þess að búa til martröð af ringulreið í sölustaðartöflunni. Ímyndaðu þér hversu mikil vinna það væri að einfaldlega fylgjast með götukortinu, borginni, ríkinu og póstnúmerinu ef allar þessar upplýsingar voru í sölutilboði!

Gagnasafn Mistök # 3: Að setja tvö eða fleiri stykki af upplýsingum í eitt svið

Innbygging skrifstofuupplýsinganna í sölustaðartöflunni var ekki eina vandamálið við þá gagnagrunn. Heimilisfangssvæðið innihélt þrjú stykki af upplýsingum: götuheiti, borgin og ríkið. Hvert reit í gagnagrunninum ætti aðeins að innihalda eitt stykki af upplýsingum. Þegar þú hefur margar upplýsingar í einu sviði getur það orðið erfiðara að leita að gagnagrunninum til að fá upplýsingar.

Til dæmis, hvað ef við viljum keyra fyrirspurn á öllum sölumönnum frá Austin? Við þurfum að leita innan heimilisfangssvæðisins, sem er ekki aðeins óhagkvæmt heldur getur skilað slæmum upplýsingum. Eftir allt saman, hvað gerist ef einhver bjó á Austin Street í Portland, Oregon?

Hér er hvernig borðið ætti að líta út:

Söluupplýsingar Í fyrsta lagi Síðast Heimilisfang 1 Heimilisfang 2 Borg Ríki Zip Sími
1 Sam Elliot 118 Main St Austin TX 78720 2155555858
2 Alice smiður 504 2. St Nýja Jórvík NY 10022 2111221821
3 Joe Sókn 428 Aker St Apt 304 Austin TX 78716 2155455545

Það eru nokkrir hlutir til að hafa í huga hér. Í fyrsta lagi virðist "Address1" og "Address2" falla undir endurteknar reiti mistök.

En í þessu tilfelli vísar þau til aðgreina gögnstykki sem tengjast beint söluaðilanum fremur en endurtaka hóp gagna sem ætti að fara í eigin borði.

Einnig, sem bónus mistök til að forðast, taka eftir því hvernig formatting fyrir símanúmerið hefur verið fjarlægt úr töflunni. Þú ættir að forðast að geyma snið reitanna hvenær sem er. Þegar um er að ræða símanúmer eru margar leiðir til að skrifa símanúmer: 215-555-5858 eða (215) 555-5858. Þetta myndi gera leit að sölumanni með símanúmeri sínu eða gera leit sölumanna á sama svæðisnúmeri erfiðara.

Gagnasafn Mistök # 4: Ekki notað rétta aðallykil

Í flestum tilfellum muntu vilja nota sjálfkrafa aukningarnúmer eða annað myndað númer eða albúma fyrir aðal lykilinn þinn. Þú ættir að forðast að nota raunverulegar upplýsingar um aðallykilinn, jafnvel þótt það hljóti eins og það myndi gera gott auðkenni.

Til dæmis höfum við hver okkar eigin persónulega öryggisnúmer, þannig að nota almannatryggingarnúmer gagnagrunns starfsmanns gæti hljómað eins og góð hugmynd. En á meðan sjaldgæft er, er það mögulegt fyrir jafnvel almannatryggingarnúmer að breytast og við viljum aldrei aðal lykilinn okkar til að breyta.

Og það er vandamálið með því að nota raunverulegar upplýsingar sem lykilvirði. Það getur breyst.

Gagnasafn Mistök # 5: Notkun nafngiftarsamnings

Þetta gæti ekki hljómað eins og stór samningur þegar þú byrjar fyrst að hanna gagnagrunninn þinn, en þegar þú færð að benda á að skrifa fyrirspurnir gagnvart gagnagrunninum til að sækja upplýsingar, eiga nafngiftarsamningur að hjálpa eins og þú minnir á reitina.

Réttlátur ímyndaðu þér hversu mikið erfiðara að vinna ef nafnið var geymt sem FirstName, LastName í einu borði og fyrsta nafn, síðasta nafn í öðru borði.

Tveir vinsælustu nafngiftarsamþykktirnir eru að hámarka fyrsta staf hvers orðs í reitnum eða aðgreina orð með því að nota undirstrikun. Þú gætir líka séð forritara að hámarka fyrsta staf hvers orðs nema fyrsta orðið: FirstName, LastName.

Þú verður einnig að ákveða að nota eintölu töfluheiti eða fleirtöluheiti. Er það panta borð eða panta borð? Er það töflu Viðskiptavinur eða Viðskiptavinur? Aftur viltu ekki vera fastur með panta borð og viðskiptavinarborð.

Nafngiftarsamningurinn sem þú velur er ekki eins mikilvægt og ferlið í raun að velja og standa við nafngiftarsamning.

Gagnasafn Mistök # 6: Óviðeigandi flokkun

Flokkun er eitt af erfiðustu hlutum til að fá rétt, sérstaklega fyrir þá sem eru nýir í gagnagrunni. Allar aðallyklar og erlendir lyklar eiga að vera verðtryggðir. Þetta eru tengslatöflur saman, svo án vísitölu, munt þú sjá mjög léleg árangur úr gagnagrunninum þínum.

En hvað er of oft saknað eru hinir sviðin. Þetta eru "WHERE" sviðin. Ef þú ert oft að fara að þrengja leitina með því að nota reit í WHERE-ákvæði, vilt þú hugsa um að setja vísitölu á það sviði. Hins vegar villtu ekki of mikið á töflunni, sem getur einnig skaðað árangur.

Hvernig á að ákveða? Þetta er hluti af list gagnagrunns hönnun. Það eru engar erfiðar takmarkanir á hversu mörgum vísitölum þú ættir að setja á borðið. Fyrst og fremst viltu vísitölu hvaða reit sem er oft notuð í WHERE-ákvæði. Lestu meira um réttan flokkun gagnagrunnsins.