Denormalisasi basis data ERP sareng dampakna kana pamekaran parangkat lunak: muka tavern di Tortuga

Halo! Nami abdi Andrey Semenov, abdi analis senior di Sportmaster. Dina tulisan ieu kuring hoyong ngangkat masalah denormalisasi database sistem ERP. Urang bakal nempo kaayaan umum, kitu ogé hiji conto husus - hayu urang nyebutkeun éta bakal Tavern monopoli éndah pikeun bajak laut jeung pelaut. Nu bajak laut jeung pelaut kudu dilayanan béda, sabab pamanggih kaéndahan jeung pola konsumen ieu gentlemen alus anu béda sacara signifikan.

Kumaha carana sangkan dulur senang? Kumaha anjeun tiasa nyingkahan gélo ngarancang sareng ngajaga sistem sapertos kitu? Naon anu kudu dilakukeun upami henteu ngan ukur bajak laut biasa sareng pelaut mimiti sumping ka tavern?

Denormalisasi basis data ERP sareng dampakna kana pamekaran parangkat lunak: muka tavern di Tortuga

Sagalana aya di handapeun cut. Tapi hayu urang balik dina urutan.

1. Watesan jeung anggapan

Sadaya di luhur lumaku ngan pikeun database relational. Balukar tina denormalisasi dina bentuk modifikasi, ngahapus, sareng anomali sisipan, anu katutupan saé, kalebet dina Internét, henteu dianggap. Di luar ruang lingkup publikasi ieu aya kasus dimana denormalisasi mangrupikeun tempat anu umum, kalayan conto klasik: séri sareng nomer paspor, tanggal sareng waktos, jsb.

Tulisan ngagunakeun definisi intuitif sareng praktis tina bentuk normal, tanpa ngarujuk kana istilah matematika. Dina bentuk nu maranéhna bisa dilarapkeun ka ujian prosés bisnis nyata (BP) jeung desain software industri.

Disebutkeun yén desain gudang data, alat ngalaporkeun sareng perjanjian integrasi (anu nganggo inpormasi tabular) bénten sareng desain database sistem ERP dina betah konsumsi sareng panggunaan denormalisasi sadar pikeun ngahontal éta tiasa diutamakeun tina integritas. data panyalindungan. Kuring babagi pamadegan ieu, sarta naon anu dijelaskeun di handap manglaku solely kana data master sarta model data transactional sistem ERP.

Katerangan ngeunaan wangun normal dirumuskeun ngagunakeun conto anu kaharti dina tingkat sapopoé pikeun kalolobaan pamiarsa. Nanging, salaku ilustrasi visual, dina paragraf 4-5, tugas anu ngahaja "fiksi" ngahaja dianggo. Upami anjeun henteu ngalakukeun ieu sareng nyandak sababaraha conto buku ajar, contona, modél panyimpen pesenan anu sami ti titik 2, anjeun tiasa mendakan diri anjeun dina kaayaan dimana fokus pamaca bakal dialihkeun tina dékomposisi prosés anu diusulkeun kana modél, ka pangalaman pribadi jeung persepsi kumaha prosés jeung model pikeun nyimpen data dina IS kudu diwangun. Dina basa sejen, nyandak dua analis IT mumpuni, hayu hiji nyadiakeun layanan ka logisticians transporting panumpang, nu séjén pikeun logisticians transporting mesin pikeun produksi microchips. Tanya aranjeunna, tanpa ngabahas BPs otomatis sateuacanna, nyieun model data pikeun nyimpen informasi ngeunaan lalampahan karéta.

Aya kamungkinan non-enol yén dina model diusulkeun anjeun bakal manggihan teu ngan hiji set noticeably béda tina atribut, tapi ogé divergent susunan éntitas, sabab unggal analis bakal ngandelkeun prosés jeung tugas wawuh ka anjeunna. Sareng dina kaayaan sapertos kitu mustahil nyarios modél mana anu "leres", sabab henteu aya kriteria évaluasi.

2. Wangun normal

Denormalisasi basis data ERP sareng dampakna kana pamekaran parangkat lunak: muka tavern di Tortuga

Bentuk normal munggaran tina pangkalan data merlukeun atomicity sadaya atribut.
Khususna, upami obyék A ngagaduhan atribut non-konci a sareng b, sapertos c = f (a, b) sareng dina tabel anu ngajelaskeun obyék A anjeun nyimpen nilai atribut c, maka bentuk normal anu munggaran dilanggar dina pangkalan data. . Salaku conto, upami spésifikasi pesenan nunjukkeun kuantitas, unit pangukuran anu gumantung kana jinis produk: dina hiji kasus tiasa potongan, dina liter anu sanés, dina bungkusan katilu anu diwangun ku potongan (dina modél di luhur Good_count_WR) , teras atomicity tina atribut dilanggar dina database. Dina hal ieu, dina urutan ngomong naon kluster tabel spésifikasi urutan kedah, anjeun peryogi pedaran sasaran tina prosés gawé di IS, sarta saprak prosés bisa jadi béda, aya bisa jadi loba "bener" versi.

Bentuk normal kadua pangkalan data merlukeun minuhan formulir munggaran tur tabel sorangan pikeun tiap éntitas patali prosés gawé di IS. Lamun dina hiji méja aya dependensi c=f1(a) jeung d=f2(b) jeung euweuh kagumantungan c=f3(b), mangka bentuk normal kadua dilanggar dina tabél. Dina conto di luhur, euweuh gumantungna antara urutan jeung alamat dina tabel Orde. Ganti nami jalan atanapi kota sareng anjeun moal gaduh pangaruh kana atribut penting pesenan.

database formulir normal katilu merlukeun patuh kana formulir normal kadua jeung henteuna kagumantungan fungsional antara atribut entitas béda. Aturan ieu tiasa dirumuskeun kieu: "Sagala anu tiasa diitung kedah diitung." Dina basa sejen, lamun aya dua obyék A jeung B. Dina tabél nyimpen atribut obyék A, atribut C diwujudkeun, sarta objék B boga atribut b, kayaning c=f4(b) aya, mangka bentuk normal katilu. dilanggar. Dina conto di handap, atribut Quantity of Pieces (Total_count_WR) dina catetan pesenan jelas ngaku ngalanggar bentuk normal katilu.

3. Pendekatan kuring pikeun nerapkeun normalisasi

1. Ngan hiji prosés bisnis otomatis target bisa nyadiakeun analis jeung kriteria keur identifying éntitas jeung atribut nalika nyieun model gudang data. Nyieun modél prosés mangrupa prasarat pikeun nyieun modél data normal.

2. Achieving formulir normal katilu dina rasa ketat bisa jadi teu praktis dina praktekna sabenerna nyieun sistem ERP lamun sababaraha atawa sakabéh kaayaan di handap ieu patepung:

  • prosés otomatis jarang tiasa robih,
  • deadlines pikeun panalungtikan sarta pamekaran ketat,
  • syarat pikeun integritas data relatif low (poténsi kasalahan dina software industri teu ngakibatkeun leungitna duit atawa klien ku konsumén software)
  • jeung sajabana

Dina kaayaan anu dijelaskeun, biaya pikeun ngaidentipikasi sareng ngajéntrékeun daur hirup sababaraha objék sareng atributna henteu tiasa diyakinkeun tina sudut pandang efisiensi ékonomi.

3. Sakur konsékuansi tina denormalisasi model data dina IS geus dijieun bisa mitigated ku ulikan awal teleb ngeunaan kode jeung nguji.

4. Denormalisasi mangrupa cara pikeun mindahkeun waragad tanaga gawé ti tahap panalungtikan sumber data jeung ngarancang prosés bisnis ka tahap pangwangunan, ti jaman palaksanaan nepi ka periode pangwangunan sistem.

5. Éta sasaena pikeun narékahan pikeun formulir normal katilu tina database lamun:

  • Arah parobahan dina prosés bisnis otomatis hese diprediksi
  • Aya division lemah tanaga gawé dina palaksanaan jeung / atawa tim ngembangkeun
  • Sistem anu kalebet dina sirkuit integrasi berkembang dumasar kana rencana sorangan
  • Inconsistency data tiasa nyababkeun perusahaan kaleungitan palanggan atanapi artos

6. Desain model data kudu dilaksanakeun ku analis ngan dina sambungan jeung model prosés bisnis target jeung prosés di IS. Upami pamekar mendesain modél data, anjeunna kedah neuleumkeun dirina dina daérah subjek dugi ka, khususna, anjeunna ngartos bédana antara nilai atribut - kaayaan anu dipikabutuh pikeun ngasingkeun atribut atom. Ku kituna, nyandak fungsi mahiwal.

4 Masalah pikeun ilustrasi

Anggap anjeun gaduh tavern robotic leutik di palabuhan. Bagéan pasar anjeun: pelaut sareng bajak laut anu sumping ka palabuhan sareng peryogi istirahat. Anjeun ngajual teh jeung thyme ka pelaut, sarta Rum sarta combs tulang pikeun combing janggot ka bajak laut. Palayanan di tavern sorangan disayogikeun ku hostess robot sareng palayan bar robot. Hatur nuhun kana kualitas luhur anjeun sarta harga low, anjeun geus disetir kaluar pesaing Anjeun, ku kituna dulur datang ti kapal datang ka Tavern Anjeun, nu ngan hiji di palabuhan.

Kompleks sistem inpormasi tavern diwangun ku parangkat lunak ieu:

  • Sistem peringatan dini ngeunaan klien anu ngakuan kategorina dumasar kana fitur karakteristik
  • Sistem kontrol pikeun hostes robot sareng bartenders robot
  • Gudang sareng sistem manajemén pangiriman ka titik jual
  • Sistem Manajemén Hubungan Pemasok (SURP)

prosés:

Sistem peringatan dini ngakuan jalma anu ninggalkeun kapal. Lamun hiji jalma dicukur beresih, manéhna ngaidentipikasi manéhna salaku pelaut; lamun hiji jalma kapanggih boga janggot, mangka manéhna diidentifikasi minangka bajak laut.

Asup ka tavern, tamu ngadangu salam ti awewe nu boga imah robot luyu jeung kategori na, contona: "Ho-ho-ho, dear bajak laut, buka méja No ..."

Tamu angkat ka méja anu ditangtukeun, dimana palayan bar robot parantos nyiapkeun barang-barang pikeun anjeunna saluyu sareng kategori. Bartender robot ngirimkeun inpormasi ka sistem gudang yén bagian pangiriman salajengna kedah dironjatkeun; gudang IS, dumasar kana kasaimbangan sésana dina panyimpenan, ngahasilkeun pamundut pameseran dina sistem manajemen.

Sanaos sistem peringatan dini parantos dikembangkeun ku IT internal anjeun, program manajemén robot bar tiasa didamel ku kontraktor éksternal khusus pikeun bisnis anjeun. Sareng sistem pikeun ngatur gudang sareng hubungan sareng supplier mangrupikeun solusi bungkusan anu disaluyukeun tina pasar.

5. Conto denormalisasi sareng dampakna kana pamekaran parangkat lunak

Nalika ngarancang prosés bisnis, ahli palajaran anu diwawancara sacara unanimously nyatakeun yén bajak laut di sakumna dunya nginum rum sareng nyisiran janggotna nganggo sisir tulang, sareng pelaut nginum tea sareng thyme sareng dicukur bersih.

A diréktori tipe klien muncul kalawan dua nilai: 1 - bajak laut, 2 - pelaut, umum pikeun sakabéh sirkuit informasi pausahaan.

Sistem béwara klien geuwat nyimpen hasil pamrosésan gambar salaku identifier (ID) tina klien dipikawanoh tur tipe na: pelaut atawa bajak laut.

ID objék dipikawanoh
Kategori klien

100500
Bajak laut

100501
Bajak laut

100502
Pelaut

Hayu urang catetan sakali deui éta

1. pelaut urang sabenerna jalma dicukur
2. Bajak laut urang sabenerna jalma janggot

Masalah naon dina hal ieu kedah dileungitkeun supados struktur urang narékahan pikeun bentuk normal katilu:

  • pelanggaran atomicity atribut - Klién Kategori
  • nyampur fakta dianalisis jeung kacindekan dina hiji tabel
  • hubungan fungsional tetep antara atribut éntitas béda.

Dina bentuk anu dinormalisasi, urang bakal nampi dua tabel:

  • hasil pangakuan dina bentuk sakumpulan fitur anu ditetepkeun,

ID objék dipikawanoh
Bulu beungeut

100500
yen

100501
yen

100502
teu

  • hasil tina nangtukeun jinis klien salaku aplikasi tina logika anu dipasang dina IS pikeun napsirkeun ciri anu ditetepkeun.

ID objék dipikawanoh
ID idéntifikasi
Kategori klien

100500
100001
Bajak laut

100501
100002
Bajak laut

100502
100003
Pelaut

Kumaha organisasi panyimpen data anu dinormalisasi tiasa ngagampangkeun ngembangkeun kompleks IP? Hayu urang ujug-ujug meunang klien anyar. Hayu éta bajak laut Jepang anu bisa jadi teu boga janggot a, Tapi aranjeunna leumpang kalawan beo dina taktak maranéhanana, sarta bajak laut environmentalist, anjeun bisa kalayan gampang ngakuan aranjeunna ku profil biru Greta dina dada kénca.

Bajak laut lingkungan, sacara alami, henteu tiasa nganggo sisir tulang sareng peryogi analog anu didamel tina plastik laut daur ulang.

Anjeun kedah ngerjakeun deui algoritma program saluyu sareng input énggal. Upami aturan normalisasi diturutan, maka anjeun ngan ukur kedah nambihan input pikeun sababaraha cabang prosés dina sababaraha sistem sareng nyiptakeun cabang énggal ngan ukur pikeun kasus-kasus éta sareng dina IS anu pentingna rambut raray. Tapi, saprak aturan teu dituturkeun, anjeun kudu nganalisis sakabéh kode, sapanjang sakabéh sirkuit, dimana nilai diréktori tipe klien dipaké tur jelas netepkeun yén dina hiji hal algoritma kudu tumut kana akun profésional. aktivitas klien, sarta dina fitur fisik lianna.

Dina bentuk anu neangan Pikeun dinormalisasi, urang bakal nampi dua tabel kalayan data operasional sareng dua diréktori:

Denormalisasi basis data ERP sareng dampakna kana pamekaran parangkat lunak: muka tavern di Tortuga

  • hasil pangakuan dina bentuk sakumpulan fitur anu ditetepkeun,

ID objék dipikawanoh
Greta dina dada kénca
Manuk dina punduk
Bulu beungeut

100510
1
1
1

100511
0
0
1

100512

1
0

  • hasil tina nangtukeun jinis klien (antepkeun éta tampilan khusus dimana déskripsi tina diréktori ditampilkeun)

Naha denormalisasi anu dideteksi hartosna yén sistem henteu tiasa dirobih pikeun nyumponan kaayaan énggal? Nya kantenan henteu. Lamun urang ngabayangkeun yén sakabéh sistem informasi dijieun ku hiji tim kalawan enol elehan staf, kamajuan anu documented ogé sarta informasi ditransferkeun dina tim tanpa leungitna, lajeng parobahan diperlukeun bisa dijieun kalawan negligibly saeutik usaha. Tapi lamun urang balik deui ka kaayaan aslina tina masalah, 1,5 kibor bakal dihapus ngan pikeun nyitak protokol diskusi babarengan jeung 0,5 séjén pikeun ngolah prosedur ngayakeun.

Dina conto di luhur, sadaya tilu bentuk normal dilanggar, hayu urang cobaan ngalanggar aranjeunna nyalira.

Palanggaran bentuk normal kahiji:

Anggap barang dikirim ka gudang anjeun ti gudang suppliers ku pick-up ngagunakeun hiji gazelle 1.5 ton milik Tavern Anjeun. Ukuran pesenan anjeun jadi leutik relatif ka elehan suppliers 'nu aranjeunna salawasna réngsé hiji-hiji tanpa ngantosan produksi. Naha anjeun peryogi tabel anu misah sareng prosés bisnis sapertos kitu: kendaraan, jinis kendaraan, naha peryogi misahkeun rencana sareng kanyataan dina pesenan anjeun ka supplier anu angkat?

Bayangkeun sabaraha sambungan "tambahan" programer anjeun kedah nyerat upami anjeun nganggo modél di handap pikeun ngembangkeun program.

Denormalisasi basis data ERP sareng dampakna kana pamekaran parangkat lunak: muka tavern di Tortuga

Anggap urang mutuskeun yén struktur anu diusulkeun teu perlu rumit; dina kasus urang, misahkeun rencana sareng kanyataan dina catetan pesenan mangrupikeun inpormasi anu kaleuleuwihan, sareng spésifikasi pesenan anu dibangkitkeun ditulis ulang dumasar kana hasil nampi barang anu sumping, mis langka. -grading sarta datangna barang kualitas inadequate anu netep di luar IS.
Lajeng hiji poé nu katingali kumaha sakabéh aula Tavern ieu ngeusi bajak laut indignant na unkempt. Aya naon?

Tétéla yén nalika bisnis anjeun tumbuh, konsumsi anjeun ogé ningkat. Baheula, kaputusan manajemén dijieun yén lamun gazelle ieu overloaded dina volume jeung / atawa beurat, nu jarang pisan, supplier bakal prioritas beban dina kahadean inuman.

Barang anu henteu dikirimkeun réngsé dina urutan salajengna sareng angkat dina penerbangan énggal; ayana kasaimbangan minimum dina gudang di tavern ngamungkinkeun anjeun henteu perhatikeun kasus anu leungit.

Saingan terakhir ditutup di palabuhan, sareng kasus punctured of gazelle overload, bypassed ku prioritization dumasar kana asumsi kacukupan kasaimbangan minimum jeung underloading périodik tina wahana, janten prakték umum. Sistem anu diciptakeun idéal bakal tiasa dianggo saluyu sareng algoritma anu dipasang di jerona sareng bakal dicabut kasempetan pikeun ngalacak gagalna sistematis pikeun minuhan pesenan anu direncanakeun. Ngan hiji reputasi ruksak jeung konsumén sugema bakal tiasa ngadeteksi masalah.

Hiji maca attentive mungkin geus noticed yén kuantitas maréntahkeun dina spésifikasi urutan (T_ORDER_SPEC) dina bagian 2 jeung bagian 5 bisa atawa teu minuhan sarat tina formulir normal munggaran. Eta sadayana gumantung kana naha, dibere rupa-rupa dipilih barang, dasarna unit béda pangukuran bisa digolongkeun kana widang anu sarua.

Pelanggaran bentuk normal kadua:

Nalika kabutuhan anjeun ningkat, anjeun mésér sababaraha kendaraan anu béda-béda ukuran. Dina kontéks di luhur, kreasi diréktori kendaraan dianggap kaleuleuwihan; salaku hasilna, sadaya algoritma ngolah data anu nyayogikeun kabutuhan pangiriman sareng gudang nganggap gerakan kargo ti supplier ka gudang salaku penerbangan éksklusif 1,5 ton. kijang. Janten, sareng ngagaleuh kendaraan énggal, anjeun masih nyiptakeun diréktori kendaraan, tapi nalika ngabéréskeunana, anjeun kedah nganalisis sadaya kode anu ngarujuk kana gerakan kargo pikeun milari naha dina unggal tempat khusus rujukan tersirat kana ciri. tina pisan kendaraan ti mana bisnis dimimitian.

Palanggaran bentuk normal katilu:

Di sawatara titik Anjeun ngamimitian nyieun program kasatiaan, catetan a customer biasa némbongan. Naha, contona, nyéépkeun waktos nyiptakeun tampilan bahan anu nyimpen data agrégat ngeunaan penjualan ka klien individu pikeun dianggo dina ngalaporkeun sareng mindahkeun kana sistem analitis, upami dina mimiti program kasatiaan sadayana anu dipikaresep ku nasabah tiasa disimpen dina catetan klien. ? Jeung, memang, dina glance kahiji, teu aya gunana. Tapi unggal waktos bisnis anjeun nyambung, contona, saluran penjualan anyar, kedah aya batur diantara analis anjeun anu bakal émut yén atribut agrégasi sapertos kitu aya.

Nalika ngarancang unggal prosés anyar, contona, jualan di Internet, jualan ngaliwatan distributor disambungkeun ka sistem kasatiaan umum, batur kudu tetep dina pikiran yén sakabéh prosés anyar kudu mastikeun integritas data dina tingkat kode. Pikeun database industri sareng sarébu méja, ieu sigana tugas anu teu mungkin.

Pamekar anu berpengalaman, tangtosna, terang kumaha ngeureunkeun sadaya masalah anu disebatkeun di luhur, tapi, dina pamanggih kuring, tugas analis anu berpengalaman henteu nyadarkeunana.

Abdi hoyong nganyatakeun rasa syukur ka pamekar ngarah Evgeniy Yarukhin pikeun eupan balik berharga na salila persiapan publikasi.

pustaka

https://habr.com/en/post/254773/
Connolly Thomas, Begg Caroline. Pangkalan data. Desain, palaksanaan jeung rojongan. Téori jeung prakték

sumber: www.habr.com

Tambahkeun komentar