Gwallau Cyffredin Wedi'u Gwneud mewn Dylunio Cronfa Ddata

P'un a ydych chi'n gweithio gyda chronfa ddata sy'n dal cannoedd o gofnodion neu filiynau o gofnodion, mae dylunio cronfa ddata briodol bob amser yn bwysig. Nid yn unig y bydd yn gwneud adfer y wybodaeth yn llawer haws, bydd hefyd yn symleiddio ehangu'r cronfa ddata yn y dyfodol. Yn anffodus, mae'n hawdd dod i mewn i ychydig o drapiau a all wneud pethau'n anodd yn y dyfodol.

Mae llyfrau cyfan wedi'u hysgrifennu ar y mater o normaleiddio cronfa ddata, ond os ydych chi'n osgoi'r camgymeriadau cyffredin hyn, byddwch ar y trywydd iawn i ddylunio cronfa ddata dda.

Methiant Cronfa Ddata # 1: Ailadrodd Meysydd mewn Tabl

Un rheol sylfaenol ar gyfer dylunio cronfa ddata dda yw cydnabod ailadrodd data a rhoi'r colofnau ailadroddus yn eu bwrdd eu hunain. Mae caeau ailadrodd mewn tabl yn gyffredin i'r rhai sydd wedi dod o fyd y taenlenni, ond tra bod taenlenni'n tueddu i fod yn wastad trwy ddylunio, dylai cronfeydd data fod yn berthynol. Mae'n debyg o fynd o 2D i 3D.

Yn ffodus, mae meysydd ailadroddus fel arfer yn hawdd eu gweld. Edrychwch ar y tabl hwn:

ID Gorchymyn Cynnyrch1 Cynnyrch2 Cynnyrch3
1 Teddy Bears Beau Jeli
2 Beau Jeli

Beth sy'n digwydd pan fo gorchymyn yn cynnwys pedair cynnyrch? Byddai angen i ni ychwanegu maes arall i'r tabl i gefnogi mwy na thri chynhyrchion. Ac os ydym wedi adeiladu cais cleient o gwmpas y bwrdd i'n helpu i fewnbynnu data, efallai y bydd angen i ni ei addasu gyda'r maes cynnyrch newydd. A sut y gwelwn yr holl orchmynion gyda Jellybeans yn y drefn? Byddai'n rhaid i ni ofyn pob maes cynnyrch yn y tabl gyda datganiad SQL a allai edrych fel hyn: SELECT * FROM Products WHERE Product1 = 'Beau Jeli' NEU Cynnyrch2 = 'Ffa Jeli' NEU Cynnyrch3 = 'Ffa Jeli'.

Yn hytrach na chael un bwrdd sy'n bwydo'r holl wybodaeth ynghyd, dylem gael tri thabla bod gan bob un ddarn o wybodaeth benodol. Yn yr enghraifft hon, byddem am gael tabl Gorchmynion gyda gwybodaeth am y gorchymyn ei hun, tabl Cynhyrchion gyda'n holl gynnyrch a thabl ar ProductOrders a oedd yn cysylltu cynnyrch i'r gorchymyn.

ID Gorchymyn CustomerID Dyddiad Trefnu Cyfanswm
1 7 1/24/17 19.99
2 9 1/25/17 24.99
ProductID Cynnyrch Cyfrif
1 Teddy Bears 1
2 Beau Jeli 100
ProductOrderID ProductID ID Gorchymyn
101 1 1
102 2 1

Rhowch wybod sut mae gan bob bwrdd ei faes ID unigryw ei hun. Dyma'r allwedd gynradd. Rydym yn cysylltu tablau trwy ddefnyddio gwerth allweddol cynradd fel allwedd dramor mewn tabl arall. Darllenwch fwy am allweddi cynradd ac allweddi tramor.

Cronfeydd Cronfa Ddata # 2: Ymgorffori Tabl mewn Tabl

Mae hwn yn gamgymeriad cyffredin arall, ond nid yw bob amser yn sefyll allan gymaint â meysydd ailadroddus. Wrth ddylunio cronfa ddata, rydych chi am sicrhau bod yr holl ddata mewn tabl yn ymwneud â hi'i hun. Mae'n debyg i gêm y plentyn hwnnw am weld beth sy'n wahanol. Os oes gennych banana, mefus, pysgodyn a set deledu, mae'n debyg y bydd y set deledu yn perthyn i rywle arall.

Ar yr un pryd, os oes gennych dabl o bobl sy'n gwerthu, dylai'r holl wybodaeth yn y tabl hwnnw ymwneud yn benodol â'r person gwerthu hwnnw. Gall unrhyw wybodaeth ychwanegol nad yw'n unigryw i'r person gwerthu hwnnw fod yn perthyn i rywle arall yn eich cronfa ddata.

SalesID Yn gyntaf Yn olaf Cyfeiriad Rhif ffôn Swyddfa Swyddfa Nifer
1 Sam Elliot 118 Main St, Austin, TX (215) 555-5858 Austin Downtown (212) 421-2412
2 Alice Smith 504 2nd Street, Efrog Newydd, NY (211) 122-1821 Efrog Newydd (Dwyrain) (211) 855-4541
3 Joe Plwyf 428 Aker St, Austin, TX (215) 545-5545 Austin Downtown (212) 421-2412

Er y bydd y tabl hwn yn edrych fel ei fod i gyd yn gysylltiedig â'r gwerthwr unigol, mae mewn gwirionedd â thabl wedi'i fewnosod o fewn y tabl. Rhowch wybod sut mae'r Swyddfa a OfficeNumber yn ailadrodd gyda "Austin Downtown". Beth os yw rhif ffôn swyddfa yn newid? Byddai angen i chi ddiweddaru set gyfan o ddata ar gyfer un darn unigol o wybodaeth sy'n newid, sydd byth yn beth da. Dylai'r meysydd hyn gael eu symud i'w bwrdd eu hunain.

SalesID Yn gyntaf Yn olaf Cyfeiriad Rhif ffôn OfficeID
1 Sam Elliot 118 Main St, Austin, TX (215) 555-5858 1
2 Alice Smith 504 2nd Street, Efrog Newydd, NY (211) 122-1821 2
3 Joe Plwyf 428 Aker St, Austin, TX (215) 545-5545 1
OfficeID Swyddfa Swyddfa Nifer
1 Austin Downtown (212) 421-2412
2 Efrog Newydd (Dwyrain) (211) 855-4541

Mae'r math hwn o ddyluniad hefyd yn rhoi'r gallu i chi ychwanegu gwybodaeth ychwanegol i fwrdd y Swyddfa heb greu hunllef o annibendod yn y tabl person gwerthu. Dychmygwch faint o waith fyddai cadw llygad ar y cyfeiriad stryd, y ddinas, y wladwriaeth a chod zip os oedd yr holl wybodaeth honno yn y tabl gwerthiant!

Cronfeydd Cronfa Ddata # 3: Rhoi Dau Dros Darn o Wybodaeth Mewn Maes Sengl

Nid ymgorffori gwybodaeth swyddfa i'r tabl gwerthiant oedd yr unig broblem gyda'r gronfa ddata honno. Roedd y maes cyfeiriad yn cynnwys tri darn o wybodaeth: cyfeiriad y stryd, y ddinas a'r wladwriaeth. Dylai pob maes yn y gronfa ddata gynnwys dim ond un darn o wybodaeth. Pan fydd gennych lawer o ddarnau o wybodaeth mewn un maes, gall fod yn anoddach i ymholio'r gronfa ddata er gwybodaeth.

Er enghraifft, beth os ydym am gynnal ymholiad ar yr holl bobl werthiant o Austin? Byddai angen i ni chwilio o fewn y maes cyfeiriad, sydd nid yn unig yn aneffeithlon, ond y gall ddychwelyd gwybodaeth wael. Wedi'r cyfan, beth sy'n digwydd pe bai rhywun yn byw ar stryd Austin yn Portland, Oregon?

Dyma beth ddylai'r tabl edrych fel:

SalesID Yn gyntaf Yn olaf Cyfeiriad 1 Cyfeiriad2 Dinas Wladwriaeth Zip Ffôn
1 Sam Elliot 118 Main St Austin TX 78720 2155555858
2 Alice Smith 504 2il St Efrog Newydd NY 10022 2111221821
3 Joe Plwyf 428 Aker St Apt 304 Austin TX 78716 2155455545

Mae ychydig o bethau i'w nodi yma. Yn gyntaf, ymddengys bod "Cyfeiriad1" a "Address2" yn dod o dan y camgymeriad meysydd ailadroddus.

Fodd bynnag, yn yr achos hwn, maent yn cyfeirio at ddarnau ar wahân o ddata sy'n ymwneud yn uniongyrchol â'r person gwerthu yn hytrach na grŵp o ddata ailadroddus a ddylai fynd yn ei fwrdd ei hun.

Hefyd, fel camgymeriad bonws i osgoi, sylwch ar sut mae'r fformatio ar gyfer y rhif ffôn wedi'i dynnu allan o'r bwrdd. Dylech osgoi storio fformat y caeau pan fo hynny'n bosibl. Yn achos rhifau ffôn, mae sawl ffordd mae pobl yn ysgrifennu rhif ffôn: 215-555-5858 neu (215) 555-5858. Byddai hyn yn ceisio chwilio am berson gwerthiant yn ôl eu rhif ffôn neu wneud chwilio am bobl werthiant yn yr un ardal â chod yn fwy anodd.

Disgrifiad Cronfa Ddata # 4: Ddim yn Defnyddio Allweddol Cynradd Cywir

Yn y rhan fwyaf o achosion, byddwch chi am ddefnyddio rhif sy'n cynyddu'n awtomatig neu ryw rif arall a gynhyrchir neu alffaniwmerig ar gyfer eich allwedd gynradd. Dylech osgoi defnyddio unrhyw wybodaeth wirioneddol ar gyfer yr allwedd gynradd hyd yn oed os yw'n swnio fel y byddai'n gwneud dynodwr da.

Er enghraifft, mae gan bob un ohonom ein rhif diogelwch cymdeithasol ein hunain, felly gallai defnyddio rhif y nawdd cymdeithasol ar gyfer cronfa ddata gweithiwr swnio fel syniad da. Ond er ei bod yn brin, mae'n bosibl y bydd rhif diogelwch cymdeithasol hyd yn oed yn newid, ac nid ydym am i ni newid ein prif allwedd ni erioed.

A dyna'r broblem wrth ddefnyddio gwybodaeth wirioneddol fel gwerth allweddol. Gall newid.

Cronfa Ddata # 5: Peidio â defnyddio Confensiwn Enwi

Efallai na fydd hyn yn swnio'n fawr iawn pan fyddwch yn dechrau dechrau dylunio'ch cronfa ddata, ond unwaith y byddwch chi'n cyrraedd y pwynt ysgrifennu ymholiadau yn erbyn y gronfa ddata i adfer gwybodaeth, bydd cael confensiwn enwi yn helpu wrth i chi gofio enwau caeau.

Dychmygwch faint yn fwy anodd y byddai'r broses honno pe bai enwau'n cael eu storio fel FirstName, LastName mewn un tabl ac enw cyntaf, enw olaf mewn tabl arall.

Y ddau gonfensiwn enwi mwyaf poblogaidd yw cyfalafu llythyr cyntaf pob gair yn y maes neu wahanu geiriau gan ddefnyddio darllediad. Efallai y byddwch hefyd yn gweld rhai datblygwyr yn manteisio ar y llythyr cyntaf o bob gair ac eithrio'r gair cyntaf: firstName, lastName.

Byddwch hefyd am benderfynu ar ddefnyddio enwau tabl unigol neu enwau tabl lluosog. A yw'n fwrdd Archeb neu fwrdd Gorchmynion? A yw'n fwrdd Tabl Cwsmeriaid neu Gwsmeriaid? Unwaith eto, nid ydych am fod yn sownd gyda thabl Archeb a thabl Cwsmeriaid.

Nid yw'r confensiwn enwi a ddewiswch chi mor bwysig â'r broses o ddewis a chadw at confensiwn enwi mewn gwirionedd.

Methiant Cronfa Ddata # 6: Mynegeio Anghywir

Mynegai yw un o'r pethau anoddaf i'w gael yn iawn, yn enwedig ar gyfer y rhai newydd wrth gynllunio cronfa ddata. Dylid mynegeio pob allwedd sylfaenol ac allweddi tramor. Dyma'r tablau cyswllt gyda'i gilydd, felly heb fynegai, fe welwch berfformiad gwael iawn o'ch cronfa ddata.

Ond yr hyn sy'n cael ei golli yn rhy aml yw'r meysydd eraill. Dyma'r meysydd "LLE". Os ydych chi'n aml yn mynd i gasglu'ch chwiliad trwy ddefnyddio cae mewn cymal LLE, rydych chi am feddwl am roi mynegai ar y maes hwnnw. Fodd bynnag, nid ydych chi eisiau gor-fynegai'r tabl, a all hefyd brifo perfformiad.

Sut i benderfynu? Mae hwn yn rhan o grefft cronfa ddata. Nid oes terfynau caled ar faint o fynegeion y dylech eu rhoi ar fwrdd. Yn bennaf, rydych chi am fynegai unrhyw faes a ddefnyddir yn aml mewn cymal LLE. Darllenwch fwy am fynegeio'ch cronfa ddata yn gywir.