Kasagarang mga Sayop nga Gibuhat sa Disenyo sa Database

Nagtrabaho ka man sa usa ka database nga naghupot sa gatusan ka mga rekord o minilyon nga mga rekord, ang husto nga disenyo sa database kanunay nga importante. Dili lamang kini makahimo sa pagbawi sa kasayuran nga mas sayon, kini usab nagpasayon ​​sa pagpalapad sa database sa umaabot. Ikasubo, sayon ​​nga mahulog sa pipila ka mga lit-ag nga makahimo sa mga butang nga lisud sa umaabut.

Adunay tibuok nga mga libro nga gisulat sa hilisgutan sa pag-normal sa usa ka database, apan kon imo lamang nga likayan kining mga kasagarang sayop, ikaw anaa sa husto nga dalan ngadto sa maayong disenyo sa database.

Database Sayop # 1: Pagbalik-balik nga mga Fields sa usa ka Talaan

Ang usa ka sukaranan nga pamaagi alang sa maayo nga disenyo sa database mao ang pag-ila sa balik-balik nga mga datos ug sa pagbutang sa mga nagbalik-balik nga mga kolum sa ilang kaugalingong lamesa. Ang pagsubli sa mga luna diha sa usa ka lamesa kasagaran alang sa mga naggikan sa kalibutan sa mga spreadsheet, apan samtang ang mga spreadsheet lagmit nga wala'y plano, ang mga database kinahanglan nga may kalabutan. Sama kini sa pagbiya gikan sa 2D ngadto sa 3D.

Sa swerte, ang balikbalik nga kaumahan sa kasagaran sayon ​​makita. Tan-awa lamang ang kini nga lamesa:

OrderID Product1 Product2 Product3
1 Teddy Bears Mga Jelly Bean
2 Mga Jelly Bean

Unsay mahitabo sa diha nga ang order adunay upat ka mga produkto? Kinahanglan namon nga idugang ang isa pa nga patag sa lamesa para masuportahan ang masobra sa tatlo ka mga produkto. Ug kung gitukod namon ang usa ka aplikasyon sa kliyente sa palibot sa lamesa aron sa pagtabang kanamo sa pag-input sa datos, kinahanglan namong usbon kini uban sa bag-ong produkto. Ug giunsa nato makita ang tanan nga mga mando sa mga Jellybeans sa han-ay? Gipugos kami sa pagpangutana sa matag produkto sa lamesa nga adunay pahayag sa SQL nga mahimong tan-awon: PILI * GIKAN SA MGA Produkto NGA Product1 = 'Jelly Beans' OR Product2 = 'Jelly Beans' OR Product3 = 'Jelly Beans'.

Inay nga adunay usa ka lamesa nga magdala sa tanan nga kasayuran nga magkauban, kita kinahanglan adunay tulo ka mga lamesa nga ang matag usa naghupot sa usa ka linain nga impormasyon. Niini nga pananglitan, gusto nato ang usa ka Orders table uban ang kasayuran mahitungod sa order mismo, usa ka produkto nga lamesa uban sa tanan namong mga produkto ug usa ka ProductOrders tablet nga nagsumpay sa mga produkto sa order.

OrderID CustomerID Petsa nga Petsa Total
1 7 1/24/17 19.99
2 9 1/25/17 24.99
ProductID Produkto Hinumdomi
1 Teddy Bears 1
2 Mga Jelly Bean 100
ProductOrderID ProductID OrderID
101 1 1
102 2 1

Matikdi kung giunsa nga ang matag lamesa adunay kaugalingon nga talagsaon nga natad sa ID Kini ang pangunang yawe. I-link namon ang mga lamesa pinaagi sa paggamit sa pangunang hinungdan nga bili isip usa ka langyaw nga yawe sa lain nga lamesa. Basaha ang dugang mahitungod sa pangunang mga yawe ug langyaw nga mga yawe.

Database Sayop # 2: Pag-embedding usa ka Table sa usa ka Table

Kini mao ang laing komon nga sayop, apan kini dili kanunay nga makita sama sa mga nagbalikbalik nga natad. Sa pagdisenyo sa usa ka database, gusto nimo nga masiguro nga ang tanan nga mga data sa usa ka lamesa may kalabutan sa iyang kaugalingon. Sama kini sa dula sa bata mahitungod sa pagtan-aw sa unsay lahi. Kon ikaw adunay saging, usa ka strawberry, usa ka peach ug usa ka telebisyon, ang telebisyon tingali iya sa laing dapit.

Uban sa sama nga mga linya, kon ikaw adunay usa ka lamesa sa mga tawo sa halin, ang tanan nga mga impormasyon sa lamesa kinahanglan nga ilangkub ilabi na sa gibaligya nga tawo. Ang bisan unsang dugang nga impormasyon nga dili talagsaon sa tawo nga gibaligya mahimong nahisakop sa laing dapit sa imong database.

SalesID Una Katapusan Address PhoneNumber Opisina OfficeNumber
1 Sam Elliot 118 Main 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 (Silangan) (211) 855-4541
3 Joe Parish 428 Aker St, Austin, TX (215) 545-5545 Austin Downtown (212) 421-2412

Samtang kini nga lamesa mahimo tan-awon sama sa tanan nga may kalabutan sa indibidwal nga tigbaligya, kini adunay usa ka lamesa nga anaa sa sulod sa lamesa. Matikdi kung giunsa sa Office ug OfficeNumber balik sa "Austin Downtown". Unsa kaha kon ang numero sa telepono sa opisina mausab? Kinahanglan nimo ipa-update ang usa ka bug-os nga datos alang sa usa ka us aka piraso sa impormasyon nga mag-usab, nga dili usa ka maayong butang. Kini nga mga umahan kinahanglan ibalhin sa ilang kaugalingong lamesa.

SalesID Una Katapusan Address PhoneNumber OfficeID
1 Sam Elliot 118 Main 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 Opisina OfficeNumber
1 Austin Downtown (212) 421-2412
2 New York (Silangan) (211) 855-4541

Kini nga matang sa disenyo naghatag usab kanimo sa katakos sa pagdugang sa dugang nga kasayuran ngadto sa lamesa sa Office nga walay pagmugna og usa ka kasilag sa kalat diha sa lamesa sa tawo sa halin. Hunahunaa kung unsa ka dako ang pagtrabaho sa pagsubay sa address sa dalan, siyudad, estado ug zip code kung ang tanan nga kasayuran anaa sa lamesa sa tawo sa halin!

Database Sayop # 3: Paghimo Duha o Dugang nga mga Pulong sa Impormasyon Ngadto sa usa ka Single Field

Ang pagtangtang sa impormasyon sa buhatan ngadto sa lamesa sa tawo sa pamaligya dili lang ang problema sa database. Ang address field adunay tulo ka piraso nga impormasyon: ang address sa dalan, ang siyudad ug ang estado. Ang matag field sa database kinahanglan nga adunay usa lamang ka piraso sa impormasyon. Kon ikaw adunay daghan nga mga piraso sa kasayuran sa usa ka field, mahimong mas lisud ang pagpangutana sa database alang sa kasayuran.

Pananglitan, unsa kaha kon gusto naton nga magpangutana sa mga tawo gikan sa Austin? Kinahanglan natong pangitaon sulod sa address field, nga dili kaayo kulang, apan makabalik ang dili maayo nga impormasyon. Human sa tanan, unsa ang mahitabo kon adunay tawo nga nagpuyo sa Austin nga dalan sa Portland, Oregon?

Ania kung unsa ang hitsura sa lamesa:

SalesID Una Katapusan Address1 Address2 Dakbayan Estado Zip Telepono
1 Sam Elliot 118 Main St 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

Adunay duha ka mga butang nga makita dinhi. Una, ang "Address1" ug "Address2" morag nahulog ubos sa balik-balik nga sayup nga natala.

Apan, sa kini nga kaso sila nagtumong sa lain nga mga piraso sa datos nga direktang may kalabutan sa tawo nga gibaligya kay sa usa ka balik-balik nga pundok sa mga datos nga kinahanglan moadto sa kaugalingong lamesa.

Ingon usab, ingon nga usa ka bonus nga sayup nga malikayan, tan-awa kung giunsa paghulma ang formatting alang sa numero sa telepono gikan sa lamesa. Kinahanglan nimo likayan ang pagtago sa format sa mga luna kung mahimo. Sa kaso sa mga numero sa telepono, adunay daghan nga mga paagi ang nagsulat sa numero sa telepono: 215-555-5858 o (215) 555-5858. Kini makahimo sa pagpangita sa usa ka sales person pinaagi sa ilang numero sa telepono o sa pagpangita sa mga tawo sa pagbaligya sa sama nga area code nga mas lisud.

Database Sayop # 4: Dili Paggamit sa Tukma nga Primary nga Yawe

Sa kasagaran nga mga higayon, gusto nimo nga gamiton ang usa ka awtomatikong nagkadaghan nga numero o uban nga lain nga gidaghanon nga numero o alphanumeric alang sa imong pangunang yawe. Kinahanglan nga likayan mo ang paggamit sa bisan unsa nga aktwal nga kasayuran alang sa nag-una nga yawe bisan kon kini ingon og kini mahimo nga usa ka maayo nga tigpaila.

Pananglitan, matag usa kanato adunay kaugalingong tagsa-tagsa nga social security number, busa ang paggamit sa social security number alang sa database sa empleyado tingali sama sa usa ka maayong ideya. Apan bisan pa sa talagsaon, posible bisan ang numero sa sosyal nga seguridad nga mag-usab, ug dili gayud nato gusto nga ang atong pangunang yawe sa pag-usab.

Ug mao kana ang problema sa paggamit sa aktwal nga kasayuran ingon nga usa ka importante nga bili. Mahimo kini mausab.

Database Sayop # 5: Wala Paggamit sa Nagtuo nga Kombensiyon

Tingali dili kini sama sa usa ka dako nga panagsama sa una nga pagsugod sa pagdisenyo sa imong database, apan sa higayon nga moabut ka sa pagsulat sa mga pangutana batok sa database aron makuha ang impormasyon, ang usa ka kombensiyon sa pagngalan makatabang sa imong pagsag-ulo sa mga ngalan sa uma.

Hunahunaa kung unsa ka mas lisud ang proseso kung ang mga ngalan gitipigan isip FirstName, LastName sa usa ka lamesa ug first_name, last_name sa laing lamesa.

Ang duha ka labing popular nga mga kombensyon sa pagngalan mao ang pag-capitalize sa unang letra sa matag pulong sa kapatagan o pagbulag sa mga pulong gamit ang usa ka underscore. Mahimo usab nimo makita ang pipila ka mga developers nga nag-capitalize sa unang letra sa matag pulong gawas sa unang pulong: firstName, lastName.

Buot usab nimo nga magdesisyon sa paggamit sa mga ngalan sa lamesa nga singular o plural nga mga ngalan sa plasa. Mao ba kini nga lamesa sa Order o usa ka lamesa sa Orders? Mao ba kini nga lamesa sa Customer o mga lamesa sa mga Customers? Pag-usab, dili nimo gusto nga mapuno sa Order table ug sa Customers table.

Ang paghatag nga kombensiyon nga imong gipili dili sama ka importante sa proseso sa aktwal nga pagpili ug pagpabilin sa usa ka kombensyon sa pagngalan.

Database sayop # 6: Dili husto nga pag-indeks

Ang pag-indeks usa sa pinakalisud nga mga butang nga mahimong husto, ilabi na alang sa mga bag-o sa disenyo sa database. Ang tanan nga nag-una nga mga yawe ug langyaw nga mga yawe kinahanglan ma-indeks. Kini mao ang mga link sa mga lamesa nga magkauban, mao nga walay indeks, imong makita ang dili maayo nga performance gikan sa imong database.

Apan ang mga sagad nga gipalabay mao ang ubang mga natad. Kini ang mga "SAAN" nga mga umahan. Kon kanunay ka nga magpakpak sa imong pagsiksik pinaagi sa paggamit sa usa ka basahon sa usa ka SINULAT NGA BAHIN, gusto nimong maghunahuna mahitungod sa pagbutang og usa ka index sa maong natad. Apan, dili nimo gusto nga ma-index ang lamesa, nga makadaot usab sa performance.

Unsaon paghukom? Kini kabahin sa arte sa disenyo sa database. Walay lisud nga limitasyon kon pila ka mga indeks ang imong ibutang sa lamesa. Una, gusto nimong i-index ang bisan unsang natad nga kanunayng gigamit sa WHERE clause. Basaha ang dugang mahitungod sa tukmang pag-index sa imong database.