Gabimet e zakonshme të bëra në dizajnimin e bazës së të dhënave

Nëse jeni duke punuar me një bazë të dhënash që mban qindra të dhëna ose miliona të dhënat, dizajni i duhur i bazës së të dhënave është gjithmonë i rëndësishëm. Jo vetëm që do ta bëjë ta tërheqë informacionin shumë më lehtë, por gjithashtu do të thjeshtojë zgjerimin e bazës së të dhënave në të ardhmen. Për fat të keq, është e lehtë të biesh në disa kurthe që mund t'i bëjnë gjërat të vështira në të ardhmen.

Ka libra të tërë të shkruar mbi temën e normalizimit të një baze të dhënash, por nëse thjesht i shmangni këto gabime të zakonshme, do të jeni në rrugën e duhur për të hartuar një bazë të dhënash të mirë.

Gabimi i bazës së të dhënave # 1: Fushat përsëritëse në një tabelë

Një rregull bazë për hartimin e një baze të dhënash është njohja e të dhënave të përsëritura dhe vendosja e atyre kolonave të përsëritura në tabelën e tyre. Fushat e përsëritura në një tabelë janë të zakonshme për ata që kanë ardhur nga bota e spreadsheets-it, por ndërsa fletët e tabelave priren të jenë të sheshta sipas dizajnit, bazat e të dhënave duhet të jenë relacionale. Është sikur të shkosh nga 2D në 3D.

Për fat të mirë, fushat e përsëritura zakonisht janë të lehta për t'u lokalizuar. Vetëm hidhni një sy në këtë tabelë:

OrderID Product1 Product2 Product3
1 Arushe Tedi Fasule pelte
2 Fasule pelte

Çfarë ndodh kur një urdhër përmban katër produkte? Ne do të duhet të shtojmë një fushë tjetër në tavolinë për të mbështetur më shumë se tre produkte. Dhe nëse ne kemi ndërtuar një aplikacion klient rreth tabelës për të na ndihmuar të futim të dhëna, mund të na duhet ta modifikojmë atë me fushën e produktit të ri. Dhe si i gjejmë të gjitha urdhrat me Jellybeans në rend? Ne do të detyroheshim të kontrollonim çdo fushë produkti në tabelë me një deklaratë SQL që mund të duket si: SELECT * NGA PRODUKTET KU PRODUCT1 = 'Jelly Beans' ose Product2 = 'Jelly Beans' OR Product3 = 'Jelly Beans'.

Në vend që të kemi një tabelë të vetme që grumbullon të gjithë informacionin, ne duhet të kemi tre tabela që secili të mbajë një informacion të veçantë. Në këtë shembull, do të dëshironim një tabelë me urdhër për informacionin në lidhje me vetë porosinë, një tabelë Produkte me të gjitha produktet tona dhe një tablet ProductOrders që lidhi produktet me porosinë.

OrderID Numri i identifikimit të konsumatorit Data e porosisë Total
1 7 1/24/17 19,99
2 9 1/25/17 24.99
Numri identifikues i produktit Produkt akuzë
1 Arushe Tedi 1
2 Fasule pelte 100
ProductOrderID Numri identifikues i produktit OrderID
101 1 1
102 2 1

Vini re se si secila tabelë ka një fushë ID të veçantë. Ky është çelësi kryesor. Ne lidhim tabelat duke përdorur një vlerë kryesore primare si një çelës i jashtëm në një tabelë tjetër. Lexoni më shumë rreth çelësave primarë dhe çelësave të huaj.

Gabimi i bazës së të dhënave # 2: Vendosja e një tabele në një tabelë

Ky është një tjetër gabim i zakonshëm, por nuk del gjithmonë aq shumë sa edhe fushat e përsëritura. Kur harton një bazë të dhënash, ju doni të siguroheni që të gjitha të dhënat në një tabelë lidhen me veten. Është si loja e fëmijës për të dalluar atë që është e ndryshme. Nëse keni një banane, një luleshtrydhe, një bukuroshe dhe një televizor, televizioni ndoshta i përket diku tjetër.

Në të njëjtën linjë, në qoftë se ju keni një tryezë të shitjeve të njerëzve, të gjitha informatat në atë tabelë duhet të lidhen në mënyrë specifike me atë person shitës. Çdo informacion shtesë që nuk është unik ndaj atij shitësi mund të jetë diku tjetër në bazën tuaj të të dhënave.

SalesID i parë i fundit Adresë Numri i telefonit Zyrë OfficeNumber
1 Sam Elliot 118 Main St, Austin, TX (215) 555-5858 Austin Downtown (212) 421-2412
2 Alice kovaç 504 2nd Street, New York, NY (211) 122-1821 Nju Jork (Lindje) (211) 855-4541
3 Joe famulli 428 Aker St, Austin, TX (215) 545-5545 Austin Downtown (212) 421-2412

Ndërsa kjo tabelë mund të duket sikur është e gjitha e lidhur me shitësin individual, ai aktualisht ka një tabelë të ngulitur brenda tabelës. Vini re se si Office dhe OfficeNumber përsëriten me "Austin Downtown". Çka nëse ndryshon një numër i zyrës së telefonit? Ju do të duhet të përditësoni një sërë të dhënash për një pjesë të vetme të informacionit që ndryshon, gjë që kurrë nuk është gjë e mirë. Këto fusha duhet të zhvendosen në tryezën e tyre.

SalesID i parë i fundit Adresë Numri i telefonit OfficeID
1 Sam Elliot 118 Main St, Austin, TX (215) 555-5858 1
2 Alice kovaç 504 2nd Street, New York, NY (211) 122-1821 2
3 Joe famulli 428 Aker St, Austin, TX (215) 545-5545 1
OfficeID Zyrë OfficeNumber
1 Austin Downtown (212) 421-2412
2 Nju Jork (Lindje) (211) 855-4541

Ky lloj i dizajnit gjithashtu ju jep mundësinë për të shtuar informacion shtesë në tryezën e Zyrës pa krijuar një makth të rrëmujës në tryezën e personit të shitjes. Imagjinoni sa punë do të ishte thjesht të mbani gjurmët e adresës së rrugës, qytetit, shtetit dhe kodit postar nëse të gjithë këto të dhëna ishin në tryezën e personit të shitjes!

Gabimi i bazës së të dhënave # 3: Vendosja e dy ose më shumë elementeve të informacionit në një fushë të vetme

Përfshirja e informacionit të zyrës në tabelën e personave të shitjes nuk ishte problemi i vetëm me atë databazë. Fusha e adresës përmbante tri informacione: adresa e rrugës, qyteti dhe shteti. Çdo fushë në bazën e të dhënave duhet të përmbajë vetëm një pjesë të vetme informacioni. Kur keni pjesë të shumta të informacionit në një fushë të vetme, mund të bëhet më e vështirë të pyesni bazën e të dhënave për informacion.

Për shembull, nëse do të donim të bënim një pyetje në të gjithë njerëzit e shitjeve nga Austin? Ne do të duhet të kërkojmë brenda fushës së adresës, e cila nuk është joefikase, por mund të kthejë informacionin e keq. Në fund të fundit, çfarë ndodh nëse dikush ka jetuar në Austin në Portland, Oregon?

Ja çfarë duhet të duket tabela:

SalesID i parë i fundit Adresa 1 Adresa 2 qytet shtet zinxhir telefon
1 Sam Elliot 118 Rr Austin TX 78720 2155555858
2 Alice kovaç 504 2 St Nju Jork NY 10022 2111221821
3 Joe famulli 428 Aker St Apt 304 Austin TX 78716 2155455545

Ka disa gjëra që duhet të vihen në dukje këtu. Së pari, "Address1" dhe "Address2" duket se bien nën gabimet e përsëritura të fushave.

Megjithatë, në këtë rast ata janë duke iu referuar pjesëve të veçanta të të dhënave që lidhen drejtpërdrejt me personin e shitjes sesa një grup të përsëritur të të dhënave që duhet të shkojnë në tryezën e vet.

Gjithashtu, si një gabim bonus për të shmangur, vini re se si formatimi për numrin e telefonit është zhveshur nga tabela. Duhet të shmangni ruajtjen e formatit të fushave kur është e mundur. Në rastin e numrave të telefonit, ka shumë mënyra që njerëzit të shkruajnë një numër telefoni: 215-555-5858 ose (215) 555-5858. Kjo do të bënte kërkimin e një personi të shitjes me numrin e tyre të telefonit ose duke bërë një kërkim të njerëzve të shitjes në të njëjtën kod të zonës më të vështirë.

Gabimi i bazës së të dhënave # 4: Jo duke përdorur një çelës primar korrekt

Në shumicën e rasteve, do të dëshironi të përdorni një numër automatikisht rritje ose disa numra të tjerë të gjeneruar ose alfanumerik për çelësin tuaj primar. Ju duhet të shmangni përdorimin e çdo informacioni aktual për çelësin kryesor edhe nëse duket sikur do të bënte një identifikues të mirë.

Për shembull, secila prej nesh ka numrin tonë personal të sigurimeve shoqërore, kështu që përdorimi i numrit të sigurimeve shoqërore për një bazë të të dhënave të punonjësve mund të tingëllojë si një ide e mirë. Por, ndonëse është e rrallë, është e mundur që edhe një numër i sigurimeve shoqërore të ndryshojë dhe ne kurrë nuk duam që çelësi ynë primar të ndryshojë.

Dhe ky është problemi me përdorimin e informacionit aktual si vlerë kryesore. Mund të ndryshojë.

Gabimi i bazës së të dhënave # 5: Mos përdorimi i një Konvente për Naming

Kjo mund të mos tingëllojë si një punë e madhe kur fillimisht filloni të hartoni bazën e të dhënave tuaja, por sapo të arrini në pikën e shkrimit të pyetjeve në lidhje me bazën e të dhënave për të marrë informacionin, të paturit e një konventë emërtimi do t'ju ndihmojë që të mësuar përmendësh emrat e fushave.

Vetëm imagjinoni se sa më e vështirë do të ishte procesi nëse emrat janë ruajtur si Emri, Emri në një tabelë dhe emri i parë, emri i fundit në një tabelë tjetër.

Dy konventat më të njohura të emërtimit janë duke përdorur shkronjën e parë të çdo fjale në fushë ose duke ndarë fjalët duke përdorur një nënvizim. Ju gjithashtu mund të shihni disa zhvillues që kapitalizojnë shkronjën e parë të çdo fjale përveç fjalës së parë: firstName, lastName.

Ju gjithashtu do të dëshironi të vendosni për përdorimin e emrave të tryezave të njëjës ose emrave të shumës së tabelave. A është një tabelë e Rendit ose një tabelë e Urdhrave? A është tabela e klientit apo tavolina e klientëve? Përsëri, ju nuk dëshironi të jeni të mbërthyer me një tryezë të Rendit dhe një tavolinë Konsumatorësh.

Konventa e emërtimit që zgjidhni nuk është aq e rëndësishme sa procesi i zgjedhjes së vërtetë dhe mbajtjes në një konventë të emërtimit.

Gabimi i bazës së të dhënave # 6: Indeksimi i gabuar

Indeksimi është një nga gjërat më të vështira për t'u arritur, veçanërisht për ata që janë të rinj në dizajnimin e bazës së të dhënave. Të gjithë çelësat primarë dhe çelësat e huaj duhet të indeksohen. Këto janë ato që lidhin tabelat së bashku, kështu që pa një indeks, do të shihni performancë shumë të dobët nga databaza juaj.

Por ajo që mungon shumë shpesh janë fushat e tjera. Këto janë fushat "KU". Nëse shpesh jeni duke shkuar për të ngushtuar kërkimin tuaj duke përdorur një fushë në një klauzolë WHERE, ju doni të mendoni për vendosjen e një indeksi në atë fushë. Sidoqoftë, nuk dëshiron të indeksosh tepër tabelën, e cila gjithashtu mund të dëmtojë performancën.

Si të vendosni? Kjo është pjesë e artit të dizajnimit të bazës së të dhënave. Nuk ka kufizime të forta se sa indekse duhet të vendosni në një tryezë. Fillimisht, ju doni të indeksoni çdo fushë që përdoret shpesh në një klauzolë WHERE. Lexoni më shumë rreth indeksimit të duhur të bazës së të dhënave.