Denormalisasi database ERP lan pengaruhe ing pangembangan piranti lunak: mbukak warung ing Tortuga

Hello! Jenengku Andrey Semenov, aku analis senior ing Sportmaster. Ing kirim iki, aku pengin ngunggahake masalah denormalisasi database sistem ERP. Kita bakal katon ing kahanan umum, uga conto tartamtu - ayo kang bakal dadi tavern monopoli apik kanggo pirates lan pelaut. Ing ngendi bajak laut lan pelaut kudu dilayani kanthi cara sing beda, amarga gagasan kaendahan lan pola konsumen saka wong lanang sing apik iki beda banget.

Kepiye carane nggawe kabeh wong seneng? Kepiye cara supaya ora ngrancang lan njaga sistem kasebut? Apa sing kudu ditindakake yen ora mung bajak laut lan pelaut sing biasa teka ing tavern?

Denormalisasi database ERP lan pengaruhe ing pangembangan piranti lunak: mbukak warung ing Tortuga

Kabeh ana ing sangisore potong. Nanging ayo padha pindhah ing urutan.

1. Watesan lan asumsi

Kabeh ing ndhuwur mung ditrapake kanggo database relasional. Konsekuensi saka denormalisasi ing wangun modifikasi, pambusakan, lan anomali penyisipan, sing dilindhungi kanthi apik, kalebu ing Internet, ora dianggep. Ing njaba ruang lingkup publikasi iki ana kasus nalika denormalisasi minangka papan sing umum, kanthi conto klasik: seri lan nomer paspor, tanggal lan wektu, lsp.

Posting nggunakake definisi intuisi lan praktis ditrapake saka wangun normal, tanpa referensi kanggo istilah matematika. Ing wangun sing bisa ditrapake kanggo pamriksan proses bisnis nyata (BP) lan desain piranti lunak industri.

Dituduhake manawa desain gudang data, alat pelapor lan perjanjian integrasi (sing nggunakake representasi informasi tabular) beda karo desain database sistem ERP kanthi gampang konsumsi lan panggunaan denormalisasi sadar kanggo nggayuh bisa luwih dhisik tinimbang integritas. data pangayoman. Aku nuduhake pendapat iki, lan apa sing diterangake ing ngisor iki mung ditrapake kanggo data master lan model data transaksional sistem ERP.

Panjelasan babagan wujud normal diwenehake nggunakake conto sing bisa dingerteni ing tingkat saben dina kanggo umume sing maca. Nanging, minangka ilustrasi visual, ing paragraf 4-5, tugas "fiksi" sing sengaja digunakake. Yen sampeyan ora nindakake iki lan njupuk sawetara conto buku teks, contone, model panyimpenan pesenan padha saka titik 2, sampeyan bisa nemokake dhewe ing kahanan kang fokus maca bakal pindah saka bosok ngajokaken proses menyang model. kanggo pengalaman pribadi lan pemahaman carane pangolahan lan model kanggo nyimpen data ing IS kudu dibangun. Ing tembung liyane, njupuk loro analis IT qualified, supaya siji nyedhiyani layanan kanggo logisticians ngangkut penumpang, liyane kanggo logisticians ngangkut mesin kanggo produksi microchips. Takon wong-wong mau, tanpa ngrembug babagan BP otomatis, nggawe model data kanggo nyimpen informasi babagan perjalanan sepur.

Ana kemungkinan non-nol yen ing model sing diusulake sampeyan bakal nemokake ora mung macem-macem atribut sing beda-beda, nanging uga entitas sing beda-beda, amarga saben analis bakal ngandelake proses lan tugas sing akrab karo dheweke. Lan ing kahanan kaya mengkono ora bisa ngomong model sing "bener", amarga ora ana kritéria evaluasi.

2. Wangun normal

Denormalisasi database ERP lan pengaruhe ing pangembangan piranti lunak: mbukak warung ing Tortuga

Wangun normal pisanan saka database mbutuhake atomicity kabeh atribut.
Utamane, yen obyek A nduweni atribut non-key a lan b, kayata c=f(a,b) lan ing tabel sing njlentrehake obyek A sampeyan nyimpen nilai atribut c, banjur wangun normal pisanan dilanggar ing database. . Contone, yen spesifikasi pesenan nuduhake jumlah, unit pangukuran sing gumantung saka jinis produk: ing siji kasus bisa dadi potongan, ing liter liyane, ing paket katelu sing kalebu potongan (ing model ing ndhuwur Good_count_WR) , banjur atomicity atribut dilanggar ing database. Ing kasus iki, kanggo ngomong apa kluster tabel saka specification supaya, sampeyan kudu gambaran diangkah saka proses karya ing IS, lan wiwit pangolahan bisa beda-beda, ana bisa akeh versi "bener".

Wangun normal kapindho saka database mbutuhake selaras karo wangun pisanan lan tabel dhewe kanggo saben entitas related kanggo proses karya ing IS. Yen ing siji tabel ana dependensi c=f1(a) lan d=f2(b) lan ora ana dependensi c=f3(b), banjur wangun normal kapindho dilanggar ing tabel. Ing conto ing ndhuwur, ora ana ketergantungan antarane pesenan lan alamat ing tabel Urutan. Ganti jeneng dalan utawa kutha lan sampeyan ora bakal duwe pengaruh ing atribut penting pesenan kasebut.

Database wangun normal katelu mbutuhake selaras karo wangun normal kapindho lan ora ana dependensi fungsional antarane atribut entitas beda. Aturan iki bisa dirumusake kaya ing ngisor iki: "kabeh sing bisa diitung kudu diitung." Ing tembung liya, yen ana rong obyek A lan B. Ing tabel sing nyimpen atribut obyek A, atribut C diwujudake, lan obyek B nduweni atribut b, kayata c=f4(b) ana, banjur wujud normal katelu dilanggar. Ing conto ing ngisor iki, atribut Quantity of Pieces (Total_count_WR) ing rekaman pesenan kanthi jelas nyatakake nglanggar formulir normal katelu

3. Pendekatanku kanggo ngetrapake normalisasi

1. Mung target proses bisnis otomatis bisa nyedhiyani Analyst karo kritéria kanggo ngenali entitas lan atribut nalika nggawe model panyimpenan data. Nggawe model proses minangka prasyarat kanggo nggawe model data normal.

2. Nampa wangun normal katelu ing pangertèn ketat bisa uga ora praktis ing laku nyata nggawe sistem ERP yen sawetara utawa kabeh kondisi ing ngisor iki ketemu:

  • proses otomatis arang bisa diganti,
  • tenggat wektu kanggo riset lan pangembangan ketat,
  • syarat integritas data relatif kurang (potensi kesalahan ing piranti lunak industri ora nyebabake mundhut dhuwit utawa klien dening pelanggan piranti lunak)
  • lan kaya.

Ing kahanan sing diterangake, biaya kanggo ngenali lan njlèntrèhaké siklus urip sawetara obyek lan kawicaksanan bisa uga ora bisa dibenerake saka sudut pandang efisiensi ekonomi.

3. Sembarang akibat saka denormalisasi model data ing IS sing wis digawe bisa dikurangi kanthi sinau awal kode lan testing.

4. Denormalisasi minangka cara kanggo nransfer biaya tenaga kerja saka tahap riset sumber data lan ngrancang proses bisnis menyang tahap pangembangan, saka periode implementasi nganti periode pangembangan sistem.

5. Apike kanggo nyoba kanggo wangun normal katelu saka database yen:

  • Arah pangowahan ing proses bisnis otomatis angel diprediksi
  • Ana divisi tenaga kerja sing lemah ing implementasine lan / utawa tim pangembangan
  • Sistem sing kalebu ing sirkuit integrasi berkembang miturut rencana dhewe
  • Inkonsistensi data bisa nyebabake perusahaan kelangan pelanggan utawa dhuwit

6. Desain model data kudu ditindakake dening analis mung ana hubungane karo model proses bisnis target lan proses ing IS. Yen pangembang ngrancang model data, dheweke kudu nyemplungake awake dhewe ing area subyek nganti, utamane, dheweke ngerti bedane antarane nilai atribut - syarat sing dibutuhake kanggo ngisolasi atribut atom. Mangkono, njupuk fungsi mboten umum.

4 Masalah kanggo ilustrasi

Ayo dadi ngomong sampeyan duwe tavern robot cilik ing port. Segmen pasar sampeyan: pelaut lan bajak laut sing teka ing pelabuhan lan butuh istirahat. Sampeyan adol teh karo thyme kanggo pelaut, lan rum lan balung combs kanggo combing jenggot kanggo pirates. Layanan ing tavern dhewe diwenehake dening hostess robot lan bartender robot. Thanks kanggo kualitas dhuwur lan prices murah, sampeyan wis mimpin metu saingan, supaya saben wong teka saka kapal teka tavern Panjenengan, kang mung siji ing port.

Komplek sistem informasi tavern kasusun saka piranti lunak ing ngisor iki:

  • Sistem peringatan dini babagan klien sing ngenali kategori kasebut adhedhasar fitur karakteristik
  • Sistem kontrol kanggo hostes robot lan bartender robot
  • Sistem manajemen gudang lan pangiriman menyang titik jual
  • Supplier Relationship Management System (SURP)

Proses:

Sistem peringatan awal ngenali wong sing ninggalake kapal. Yen ana wong sing dicukur resik, dheweke ngenalake dheweke minangka pelaut; yen ana wong sing duwe jenggot, dheweke diarani bajak laut.

Mlebet warung, tamu krungu salam saka hostess robot sesuai karo kategorine, contone: "Ho-ho-ho, bajak laut sing dikasihi, pindhah menyang meja No ..."

Tamu menyang meja sing ditemtokake, ing ngendi bartender robot wis nyiapake barang kanggo dheweke miturut kategori kasebut. Bartender robot ngirim informasi menyang sistem gudang yen bagean pangiriman sabanjure kudu ditambah; gudang IS, adhedhasar saldo sing isih ana ing panyimpenan, nggawe panjaluk tuku ing sistem manajemen.

Nalika sistem peringatan dini bisa uga dikembangake dening IT internal sampeyan, program manajemen robot bar bisa uga digawe dening kontraktor eksternal khusus kanggo bisnis sampeyan. Lan sistem kanggo ngatur gudang lan hubungan karo supplier minangka solusi paket sing disesuaikan saka pasar.

5. Conto denormalisasi lan pengaruhe ing pangembangan piranti lunak

Nalika ngrancang proses bisnis, ahli subyek sing diwawancarai kanthi bulat nyatakake yen bajak laut ing saindenging jagad ngombe rum lan nyisir jenggot nganggo sisir balung, lan para pelaut ngombe teh karo thyme lan tansah dicukur resik.

Direktori jinis klien katon kanthi rong nilai: 1 - bajak laut, 2 - pelaut, umum kanggo kabeh sirkuit informasi perusahaan.

Sistem kabar klien langsung nyimpen asil pangolahan gambar minangka pengenal (ID) klien sing diakoni lan jinise: pelaut utawa bajak laut.

ID obyek sing diakoni
Kategori klien

100500
Pirate

100501
Pirate

100502
Sailor

Ayo dicathet sepisan maneh

1. Pelaut kita sejatine wong sing dicukur
2. Bajak laut kita sejatine wong janggut

Masalah apa ing kasus iki kudu diilangi supaya struktur kita ngupayakake wangun normal katelu:

  • nglanggar atomicity atribut - Kategori Klien
  • nyampurake fakta sing dianalisis lan kesimpulan ing siji tabel
  • hubungan fungsional tetep antarane atribut saka entitas sing beda.

Ing wangun normal, kita bakal entuk rong tabel:

  • asil pangenalan ing wangun set fitur sing wis ditemtokake,

ID obyek sing diakoni
rambut rai

100500
Ya

100501
Ya

100502
Ora

  • asil saka nemtokake jinis klien minangka aplikasi saka logika sing ditempelake ing IS kanggo napsirake karakteristik sing diadegake.

ID obyek sing diakoni
ID Idhentifikasi
Kategori klien

100500
100001
Pirate

100501
100002
Pirate

100502
100003
Sailor

Kepiye organisasi panyimpenan data sing dinormalisasi bisa nggampangake pangembangan kompleks IP? Ayo ngomong sampeyan dumadakan entuk klien anyar. Ayo dadi bajak laut Jepang sing bisa uga ora duwe jenggot, nanging padha lumaku karo manuk beo ing Pundhak, lan pirates lingkungan, sampeyan bisa kanthi gampang ngenali karo profil biru Greta ing dodo kiwa.

Bajak laut lingkungan, kanthi alami, ora bisa nggunakake sisir balung lan njaluk analog sing digawe saka plastik segara daur ulang.

Sampeyan kudu ngolah ulang algoritma program sesuai karo input anyar. Yen aturan normalisasi ditindakake, sampeyan mung kudu nambah input kanggo sawetara cabang proses ing sawetara sistem lan nggawe cabang anyar mung kanggo kasus kasebut lan ing IS sing penting kanggo rambut rai. Nanging, amarga aturan kasebut ora dituruti, sampeyan kudu nganalisa kabeh kode, ing kabeh sirkuit, ing ngendi nilai-nilai direktori jinis klien digunakake lan kanthi jelas nemtokake manawa algoritma kasebut kudu nggatekake profesional. aktivitas klien, lan ing fitur fisik liyane.

Ing wangun sing nggoleki kanggo normal, kita bakal entuk rong tabel kanthi data operasional lan rong direktori:

Denormalisasi database ERP lan pengaruhe ing pangembangan piranti lunak: mbukak warung ing Tortuga

  • asil pangenalan ing wangun set fitur sing wis ditemtokake,

ID obyek sing diakoni
Greta ing dhadha kiwa
Manuk ing pundhak
rambut rai

100510
1
1
1

100511
0
0
1

100512

1
0

  • asil nemtokake jinis klien (supaya dadi tampilan khusus ing ngendi deskripsi saka direktori ditampilake)

Apa denormalisasi sing dideteksi tegese sistem ora bisa diowahi kanggo nyukupi kahanan anyar? Mesthi ora. Yen kita mbayangno kabeh sistem informasi digawe dening siji tim karo nol turnover Staff, pembangunan wis didokumentasikan kanthi apik lan informasi ditransfer ing tim tanpa mundhut, banjur owah-owahan sing dibutuhake bisa digawe kanthi gaweyan cilik. Nanging yen kita bali menyang kondisi asli saka masalah, 1,5 keyboard bakal dibusak mung kanggo protokol printing diskusi bebarengan lan liyane 0,5 kanggo proses procurement prosedur.

Ing conto ing ndhuwur, kabeh telung wangun normal dilanggar, ayo nyoba nglanggar kanthi kapisah.

Pelanggaran wangun normal pisanan:

Contone, barang dikirim menyang gudang saka gudang supplier kanthi njupuk siji gazelle 1.5 ton sing ana ing tavern sampeyan. Ukuran pesenan sampeyan sithik banget dibandhingake karo omset pemasok sing mesthi rampung siji-siji tanpa ngenteni produksi. Apa sampeyan butuh tabel sing kapisah karo proses bisnis kasebut: kendharaan, jinis kendharaan, apa kudu misahake rencana lan kasunyatan ing pesenan menyang pemasok sing wis mangkat?

Bayangake carane akeh sambungan "ekstra" sing kudu ditulis programer yen sampeyan nggunakake model ing ngisor iki kanggo ngembangake program.

Denormalisasi database ERP lan pengaruhe ing pangembangan piranti lunak: mbukak warung ing Tortuga

Ayo kita mutusake manawa struktur sing diusulake ora perlu rumit; ing kasus kita, misahake rencana lan kasunyatan ing cathetan pesenan minangka informasi sing berlebihan, lan spesifikasi pesenan sing digawe ditulis maneh adhedhasar asil panriman barang sing teka, mis langka. -grading lan rawuh barang saka kualitas boten cecek dienggoni njaba IS.
Lan ing sawijining dina, sampeyan bisa ndeleng carane kabeh bale tavern kapenuhan bajak laut sing nesu lan ora rapi. Ana apa?

Pranyata yen bisnis sampeyan mundhak, konsumsi sampeyan uga saya mundhak. Biyen, keputusan manajemen digawe yen gazelle kakehan volume lan / utawa bobote, sing arang banget, supplier bakal menehi prioritas kanggo beban kanggo ngombe minuman.

Barang sing ora dikirim rampung ing urutan sabanjure lan ditinggalake ing pesawat anyar; anané imbangan minimal ing gudang ing tavern ndadekake ora weruh kasus sing ilang.

Pesaing pungkasan ditutup ing pelabuhan, lan kasus tusukan saka kakehan gazelle, dilewati kanthi prioritas adhedhasar asumsi kecukupan keseimbangan minimal lan underloading kendaraan, dadi praktik umum. Sistem sing digawe saenipun bakal bisa digunakake ing sesuai karo algoritma sing ditempelake ing lan bakal sangsoro saka sembarang kesempatan kanggo nglacak Gagal sistematis kanggo nepaki pesenan ngrancang. Mung reputasi sing rusak lan pelanggan sing ora marem bakal bisa ndeteksi masalah kasebut.

Sing maca enten bisa uga wis ngeweruhi sing jumlahe dhawuh ing specification supaya (T_ORDER_SPEC) ing bagean 2 lan bagean 5 bisa utawa ora ketemu requirement saka wangun normal pisanan. Kabeh gumantung apa, diwenehi macem-macem barang sing dipilih, unit pangukuran sing beda bisa tiba ing lapangan sing padha.

Pelanggaran saka wangun normal kapindho:

Nalika kabutuhan saya mundhak, sampeyan tuku sawetara kendaraan kanthi ukuran sing beda-beda. Ing konteks ing ndhuwur, nggawe direktori kendaraan dianggep keluwih; minangka asil, kabeh algoritma pangolahan data sing nyukupi kabutuhan pangiriman lan gudang nganggep gerakan kargo saka supplier menyang gudang minangka penerbangan saka 1,5 ton khusus. gazelle. Dadi, bebarengan karo tuku kendaraan anyar, sampeyan isih nggawe direktori kendharaan, nanging nalika ngrampungake, sampeyan kudu nganalisa kabeh kode sing ngrujuk gerakan kargo kanggo ngerteni apa ing saben panggonan tartamtu referensi diwenehake kanggo karakteristik. saka kendaraan banget saka ngendi bisnis diwiwiti.

Pelanggaran saka wangun normal katelu:

Ing sawetara titik sampeyan miwiti nggawe program kasetyan, cathetan saka pelanggan biasa katon. Napa, umpamane, nglampahi wektu nggawe tampilan materi sing nyimpen data agregat babagan dodolan menyang klien individu kanggo digunakake ing laporan lan transfer menyang sistem analitis, yen ing wiwitan program kesetiaan kabeh sing dikarepake pelanggan bisa diselehake ing rekaman klien ? Lan, pancen, ing pandang sepisanan, ora ana gunane. Nanging saben bisnis sampeyan nyambung, umpamane, saluran penjualan anyar, mesthine ana wong ing antarane analis sampeyan sing bakal ngelingi yen atribut agregasi kasebut ana.

Nalika ngrancang saben proses anyar, contone, dodolan ing Internet, dodolan liwat distributor sing disambungake menyang sistem kesetiaan umum, wong kudu ngelingi yen kabeh proses anyar kudu njamin integritas data ing tingkat kode. Kanggo database industri kanthi sewu tabel, iki katon kaya tugas sing ora mungkin.

Pangembang sing berpengalaman, mesthine ngerti carane mungkasi kabeh masalah sing kasebut ing ndhuwur, nanging, miturut pendapatku, tugas analis sing berpengalaman ora kanggo nggawa dheweke.

Aku seneng ngucapake matur nuwun marang pangembang utama Evgeniy Yarukhin kanggo umpan balik sing penting sajrone nyiapake publikasi kasebut.

Sastra

https://habr.com/en/post/254773/
Connolly Thomas, Begg Caroline. Database. Desain, implementasine lan dhukungan. Teori lan praktik

Source: www.habr.com

Add a comment