Denormalisering av ERP-databaser och dess pÄverkan pÄ mjukvaruutveckling: vi öppnar en tavern pÄ Tortuga

Hej! Jag heter Andrey Semyonov, jag Ă€r senioranalytiker pĂ„ Sportmaster. I det hĂ€r inlĂ€gget vill jag ta upp frĂ„gan om denormalisering av databaser i ERP-system. Vi kommer att titta pĂ„ allmĂ€nna förutsĂ€ttningar samt ett specifikt exempel — lĂ„t oss sĂ€ga, det kommer att vara en underbar tavernamonopol för pirater och sjömĂ€n. DĂ€r pirater och sjömĂ€n mĂ„ste betjĂ€nas pĂ„ olika sĂ€tt, eftersom deras syn pĂ„ det vackra och konsumtionsmönster skiljer sig avsevĂ€rt Ă„t.

Hur gör man sÄ att alla Àr nöjda? Hur undviker man att bli galen nÀr man designar och underhÄller ett sÄdant system? Vad gör man om tavernan börjar ta emot inte bara de vanliga piraterna och sjömÀnnen?

Denormalisering av ERP-databaser och dess pÄverkan pÄ mjukvaruutveckling: vi öppnar en tavern pÄ Tortuga

Allt finns nedan. Men lÄt oss gÄ tillvÀga steg för steg.

1. BegrÀnsningar och antaganden

Allt som anges gÀller endast relationella databaser. De vÀlkÀnda konsekvenserna av denormalisering i form av modifierings-, borttagnings- och insÀttningsanomalier som beskrivs pÄ internet beaktas inte. Utanför publiceringen lÀmnas fall dÀr denormalisering Àr ett allmÀnt fenomen, med klassiska exempel: serienummer och passnummer, datum och tid med mera.

InlÀgget anvÀnder intuitivt begripliga och praktiskt tillÀmpbara definitioner av normala former, utan hÀnvisningar till matematiska termer. I den form de kan tillÀmpas pÄ undersökning av verkliga affÀrsprocesser (BP) och design av industriell programvara.

Det finns en Äsikt om att design av datalager, verktyg för rapportering och integrationsavtal (i vilka tabulÀr informationsrepresentation anvÀnds), skiljer sig frÄn design av ERP-databaser i det att bekvÀmligheten i konsumtionen och tillÀmpligheten för att uppnÄ detta genom medveten denormalisering kan ha prioritet över skyddet av dataintegriteten. Jag delar denna Äsikt, och det som beskrivs nedan gÀller uteslutande modeller för masterdata och transaktionsdata i ERP-system.

Förklaringen av normala former presenteras med ett exempel som mÄnga lÀsare kan förstÄ pÄ en vardaglig nivÄ. Men för att ge en tydlig illustration anvÀnds medvetet en "uppfunnen" uppgift i punkterna 4-5. Om detta inte görs och ett klassiskt exempel tas, som till exempel samma modell för lagring av bestÀllningar frÄn punkt 2, kan lÀsarens fokus flyttas frÄn den föreslagna nedbrytningen av processen till den personliga erfarenheten och uppfattningen av hur processer och datalagringsmodeller bör byggas i informationssystem. Med andra ord, ta tvÄ kvalificerade IT-analytiker, lÄt en betjÀna logistikföretag som transporterar passagerare och den andra de som transporterar maskiner för att producera mikrochip. Be dem, utan att i förvÀg diskutera automatiserbara affÀrsprocesser, skapa en datamodell för att lagra information om en jÀrnvÀgstransport.

Det finns en icke-noll sannolikhet att ni i de föreslagna modellerna hittar inte bara mÀrkbart olika uppsÀttningar av attribut, utan Àven icke överensstÀmmande uppsÀttningar av entiteter, eftersom varje analytiker kommer att basera sig pÄ sina egna kÀnda processer och uppgifter. Att sÀga vilken modell som Àr "rÀtt" i en sÄdan situation Àr omöjligt, eftersom det inte finns nÄgot bedömningskriterium.

2. Normala former

Denormalisering av ERP-databaser och dess pÄverkan pÄ mjukvaruutveckling: vi öppnar en tavern pÄ Tortuga

Första normala formen av databasen krÀver atomÀr struktur för alla attribut.
Specifikt, om objekt A har icke-nyckelattribut a och b, sÄdana att c=f(a,b) och i tabellen som beskriver objekt A lagrar du vÀrdet av attribut c, sÄ bryts den första normala formen i databasen. Till exempel, om i bestÀllningsspecifikationen anges en mÀngd vars enheter beror pÄ produkttypen: i vissa fall kan det vara stycken, i andra liter, och i tredje förpackningar bestÄende av stycken (i modellen ovan Good_count_WR), sÄ övertrÀder det atomÀriteten för attributen i databasen. I detta fall, för att sÀga hur tabellstrukturen för bestÀllningsspecifikationen bör se ut, behövs en mÄlspecifikation av arbetsprocessen i informationssystemet, och eftersom processerna kan vara olika, kan det finnas mÄnga "rÀtta" versioner.

Andra normala formen av databasen krĂ€ver att den första formen beaktas och att varje entitet som hör till processarbetet i informationssystemet har sin egen tabell. Om det i en tabell finns beroenden med=f1(a) och d=f2(b) och det inte finns nĂ„got beroende med=f3(b), Ă€r den andra normala formen bruten i tabellen. I exemplet ovan finns det inget beroende mellan bestĂ€llningen och adressen i tabellen "BestĂ€llning". Ändra gatunamnet eller staden, och du pĂ„verkar inte nĂ„gra vĂ€sentliga attribut av bestĂ€llningen.

Tredje normala formen av databasen krÀver att den andra normala formen beaktas och att det inte finns nÄgra funktionella beroenden mellan attributen för olika entiteter. Denna regel kan formuleras som: "allt som kan berÀknas, ska berÀknas". Med andra ord, om det finns tvÄ objekt A och B. I tabellen som lagrar attributen för objekt A visas attributet C, och objekt B har ett attribut b, sÄdant att det finns c=f4(b), dÄ bryts den tredje normala formen. I det nedanstÄende exemplet pÄstÄr attributet "Antal bitar" (Total_count_WR) i bestÀllningsposten att det bryter mot den tredje normala formen.

3. Min metod för tillÀmpning av normalisering

1. Endast den mÄlorienterade automatiserbara affÀrsprocessen kan ge analytikern kriterier för att identifiera entiteter och attribut vid skapandet av datalagringsmodellen. Skapandet av processmodellen Àr en förutsÀttning för att skapa en normal datamodell.

2. Att uppnÄ den tredje normala formen i strikt mening kan vara orealistiskt i praktiken vid skapandet av ERP-system under den del av eller alla följande villkor:

  • automatiserbara processer Ă€r sĂ€llan utsatta för förĂ€ndringar,
  • tidsramarna för forskning och utveckling Ă€r snĂ€va,
  • kraven pĂ„ dataintegritet Ă€r relativt lĂ„ga (potentiella fel i industriprogramvara leder inte till förlust av pengar eller kunder för programvarukunden)
  • och sĂ„ vidare.

Under de angivna förhÄllandena kan kostnaderna för att identifiera, beskriva livscykeln för vissa objekt och deras attribut vara oekonomiska.

3. Eventuella konsekvenser av denormalisering av datamodellen i ett redan skapat informationssystem kan mildras genom noggrann förundersökning av koden och testning.

4. Denormalisering Àr en metod för att överföra arbetsinsatser frÄn forsknings- och datakÀllstegen, samt affÀrsprocessdesign, till utvecklingssteget, frÄn implementeringsperioden till systemutvecklingsperioden.

5. Det Àr rimligt att strÀva efter den tredje normalformen för databaser om:

  • FörĂ€ndringarna i de automatiserade affĂ€rsprocesserna Ă€r svĂ„ra att förutsĂ€ga.
  • Det finns en svag djupindelning av arbetsuppgifter inom implementerings- och/eller utvecklingsteamet.
  • Systemen som ingĂ„r i integrationskonturen utvecklas enligt egna planer.
  • Oenigheter i data kan leda till kund- eller intĂ€ktsförluster för företaget.

6. Designen av datamodellen ska utföras av en analytiker endast i samband med modeller av den avsedda affÀrsprocessen och processen i informationssystemet. Om datamodellen designas av en utvecklare, mÄste denne fördjupa sig i ÀmnesomrÄdet i sÄdan grad att denne sÀrskilt kan förstÄ skillnaden mellan vÀrdena för attribut - en nödvÀndig villkor för att identifiera atomÀra attribut. PÄ sÄ sÀtt tar man pÄ sig funktioner som inte Àr typiska.

4 Uppgift för illustration.

Anta att du har en liten robotiserad krog i hamnen. Din mÄlmarknad: sjömÀn och pirater som gÄr in i hamnen och behöver vila. Till sjömÀn sÀljer du te med timjan, och till piraterna rom och benkam för att kamma sin skÀgg. Servicen i krogen utförs av en robotvÀrdinna och en robotbartender. Tack vare hög kvalitet och lÄga priser har du trÀngt ut alla konkurrenter, sÄ varje person som gÄr iland gÄr till din krog, som Àr den enda i hamnen.

Komplexet av informationssystem för krogen bestÄr av följande programvara:

  • Ett tidigt varningssystem för kunder som kĂ€nner igen deras kategori efter karakteristiska drag.
  • Ett system för att hantera robotvĂ€rdinnor och robotbartenders.
  • Ett system för att hantera lager och leveranser till försĂ€ljningsstĂ€llen.
  • Ett system för att hantera relationer med leverantörer (SRM).

Process:

Det tidiga varningssystemet kÀnner igen personer som gÄr iland frÄn bÄten. Om en person Àr slÀtbarberad klassas de som sjömÀn, medan en person med skÀgg klassas som pirat.

NÀr gÀsten gÄr in i krogen hör de ett vÀlkomnande frÄn robotvÀrdinnan i enlighet med sin kategori, exempelvis: "Ho-ho-ho, Àrade pirat, gÄ till bordet nr..."

GÀsten gÄr till den angivna stationen dÀr robotbaren redan har förberett varor för dem enligt kategori. Robotbaren överför information till lagersystemet om att nÀsta leverans bör ökas, och lagersystemet utifrÄn lagret formar en inköpsansökan i systemet.

LÄt tidigt varningssystem utvecklas av din interna IT, programmet för att hantera barrobotar skapades av en extern entreprenör specifikt för ditt företag. Lagringsystem och leverantörers relationshanteringssystem Àr specialanpassade paketlösningar frÄn marknaden.

5. Exempel pÄ denormalisering och dess pÄverkan pÄ programvaruutveckling

Vid utformningen av affÀrsprocessen sa de tillfrÄgade experterna enigt att pirater över hela vÀrlden dricker rom och kammar sina skÀgg med benkammar, medan sjömÀn dricker te med timjan och alltid Àr vÀlrakade.

En katalog över kundtyper kommer att skapas med tvÄ vÀrden: 1 - pirater, 2 - sjömÀn, gemensam för hela företagets informationsram.

Kundens varningssystem sparar omedelbart resultatet av bildbehandlingen som identifierare (ID) av den igenkÀnda kunden och dess typ: sjöman eller pirat.

ID för den igenkÀnda objekten
Kundkategori

100500
Pirat

100501
Pirat

100502
Sjöman

Vi noterar Äterigen att

1. VÄra sjömÀn Àr faktiskt rakhyvelmÀnniskor
2. VÄra pirater Àr faktiskt skÀggiga personer

Vilka problem mÄste lösas i detta fall för att vÄr struktur ska strÀva efter den tredje normala formen:

  • brott mot atomĂ€riteten av attributet - Kundkategori
  • blandning av den analyserade fakta och slutsatsen i samma tabell
  • faststĂ€lld funktionell beroende mellan attribut av olika entiteter.

I normaliserad form skulle vi fÄ tvÄ tabeller:

  • resultatet av igenkĂ€nning i form av en uppsĂ€ttning faststĂ€llda kĂ€nnetecken,

ID för den igenkÀnda objekten
HÄrfÀste i ansiktet

100500
Ja

100501
Ja

100502
Ingen

  • resultatet av att bestĂ€mma kundtypen som en tillĂ€mpning av den inbyggda systemlogiken för tolkning av de faststĂ€llda kĂ€nnetecknen

ID för den igenkÀnda objekten
ID för identifiering
Kundkategori

100500
100001
Pirat

100501
100002
Pirat

100502
100003
Sjöman

Hur kan en normaliserad lagringsorganisation underlÀtta utvecklingen av ett informationssystem? Anta att du plötsligt fÄr nya kunder. LÄt oss sÀga att det Àr japanska pirater som kanske saknar skÀgg, men de gÄr runt med en papegoja pÄ axeln, samt miljövÀnliga pirater, som lÀtt kÀnns igen pÄ Gretas blÄ profil pÄ vÀnster bröst.

MiljövÀnliga pirater kan naturligtvis inte anvÀnda benkammar och krÀver en motsvarighet av Ätervunnen havsplast.

Du behöver omarbeta programalgoritmerna enligt de nya förutsÀttningarna. Om normaliseringsreglerna hade följts, skulle du bara behöva komplettera ingÄngarna för vissa processgrenar i vissa system och skapa nya grenar endast för de fall och i de informationssystem dÀr ansiktshÄr Àr relevant. Men eftersom reglerna inte följdes, mÄste du analysera hela koden inom hela systemet dÀr vÀrden frÄn kundtypregister anvÀnds och entydigt faststÀlla att i ett fall bör algoritmen ta hÀnsyn till kundens yrkesverksamhet, medan i ett annat fall bör den beakta fysiska egenskaper.

I den form som strÀvar efter normalisering, skulle vi ha fÄtt tvÄ tabeller med operativa data och tvÄ register:

Denormalisering av ERP-databaser och dess pÄverkan pÄ mjukvaruutveckling: vi öppnar en tavern pÄ Tortuga

  • resultatet av igenkĂ€nning i form av en uppsĂ€ttning faststĂ€llda kĂ€nnetecken,

ID för den igenkÀnda objekten
Greta pÄ vÀnster bröst
FÄgel pÄ axeln
HÄrfÀste i ansiktet

100510
1
1
1

100511
0
0
1

100512

1
0

  • resultatet av att bestĂ€mma kundtyp (lĂ„t detta vara anvĂ€ndarens visning, dĂ€r beskrivningar frĂ„n registren visas)

Betyder den upptÀckta denormaliseringen att systemen inte kan anpassas till de nya villkoren? SjÀlvklart inte. Om vi antar att alla informationssystem skapades av ett team med noll personalomsÀttning, att utvecklingen Àr vÀl dokumenterad och att informationen i teamet överförs utan förluster, kan de nödvÀndiga förÀndringarna göras med försumbara insatser. Men om vi ÄtervÀnder till de ursprungliga förutsÀttningarna för uppgiften, skulle en och en halv tangentbord gÄ Ät för att skriva protokollen för gemensamma diskussioner och ytterligare ett halvt för att utforma upphandlingsprocesserna.

I exemplet ovan har alla tre normala former bryts, lÄt oss försöka bryta dem separat.

Brott mot den första normala formen:

Anta att varor levereras till ditt lager frÄn leverantörernas lager via en 1,5 tons skÄpbil som tillhör ditt vÀrdshus. Storleken pÄ dina bestÀllningar Àr sÄ liten i förhÄllande till leverantörernas omsÀttning att de alltid utförs exakt utan vÀntan pÄ tillverkning. KrÀvs det separata tabeller för detta flöde: fordon, typer av fordon, behöver ni separera plan och verklighet i era bestÀllningar som skickats till leverantörerna?

TÀnk bara pÄ hur mÄnga "överskott"-anslutningar som dina programmerare mÄste skriva om ni anvÀnder modellen nedan för att utveckla programmet.

Denormalisering av ERP-databaser och dess pÄverkan pÄ mjukvaruutveckling: vi öppnar en tavern pÄ Tortuga

Anta att vi har kommit fram till att den föreslagna strukturen Àr alltför komplicerad, att separera plan och verklighet vid bestÀllningsregistreringen Àr överflödig information, och att den framtagna bestÀllningsspecifikationen skrivs om baserat pÄ resultatet av mottagningen av den ankommande varan, sÀllsynta felaktigheter och varor av undermÄlig kvalitet hanteras utanför informationssystemet.
Och en dag ser du hur hela salen i vÀrdshuset Àr fylld av upprörda och ovÄrdade pirater. Vad har hÀnt?

Det visade sig att nÀr ditt företag vÀxte, vÀxte ocksÄ konsumtionen. NÄgon gÄng fattades det ett ledningsbeslut att om skÄpbilen blev överlastad med volym och/eller vikt, vilket hÀnde ytterst sÀllan, prioriterade leverantören lastningen till fördel för drycker.

Underlevererat gods hamnade i nÀsta bestÀllning och skickades ivÀg i en ny tur, medan det tillgÀngliga underlaget pÄ lagret vid vÀrdshuset möjliggjorde att man kunde ignorera de bortfallna fallen.

I hamnen stÀngde den sista konkurrenten, och det bortfallna fallet av överlastning av skÄpbilen, som undvikits genom prioritering baserad pÄ antagandet om tillrÀckligt lagersaldo och periodisk underlastning av fordonet, blev en vanlig praxis. Det skapade systemet kommer att fungera perfekt i enlighet med de inlagda algoritmerna och kommer att sakna möjligheten att spÄra systematisk misslyckande med planerade bestÀllningar. Endast en skadad rykte och missnöjda kunder kan upptÀcka problemet.

UppmÀrksam lÀsare har nog mÀrkt att den bestÀllda kvantiteten i bestÀllningsspecifikationen (T_ORDER_SPEC) i avsnitt 2 och avsnitt 5 kan motsvara eller inte motsvara kraven i den första normalformen. Det beror helt pÄ om olika enheter av mÄtt kan falla in i samma fÀlt med det valda sortimentet av varor.

ÖvertrĂ€delser av den andra normalformen:

NÀr dina behov vÀxer skaffar du ytterligare nÄgra transportmedel i olika storlekar. I den beskrivna kontexten har skapandet av en transportmedelsregistrering bedömts som överflödig, vilket gör att alla algoritmer som arbetar med data och stöder leverans- och lagringsbehov uppfattar lastens flyttning frÄn leverantören till lagret som en transport av endast en 1,5 tons skÄpbil. SÄ, tillsammans med köpet av nya transportmedel skapar du ÀndÄ en transportmedelsregistrering, men vid vidareutvecklingen mÄste du analysera all kod som refererar till lastens flyttning för att ta reda pÄ om det i varje specifikt fall syftas pÄ egenskaperna hos just det fordonet som verksamheten började med.

ÖvertrĂ€delser av den tredje normalformen:

Vid nÄgot tillfÀlle börjar du skapa ett lojalitetsprogram, och det skapas en post för en Äterkommande kund. Varför, till exempel, slösa tid pÄ att skapa materiella representationer som lagrar aggregerade uppgifter om försÀljning för en enskild kund för att anvÀnda i rapportering och överföring till analytiska system, nÀr allt som intresserar kunden i början av lojalitetsprogrammet kan lÀggas pÄ sjÀlva kundposten? Och, verkligen, verkar det till en början vara meningslöst. Men varje gÄng ditt företag ansluter till exempel nya försÀljningskanaler, bör det finnas nÄgon bland era analytiker som pÄminner om att det finns en sÄdan aggregeringsattribut.

NÀr du designar varje ny process, sÀg, försÀljning pÄ internet, försÀljning genom distributörer kopplade till det gemensamma lojalitetssystemet, mÄste nÄgon hÄlla i Ätanke att alla nya processer mÄste sÀkerstÀlla dataintegritet pÄ kodnivÄ. För en industriell databas med tusentals tabeller verkar detta vara en svÄrgenomförbar uppgift.

En erfaren utvecklare vet sÄklart hur man ÄtgÀrdar de ovan nÀmnda problemen, men enligt min mening Àr det en erfaren analytikers uppgift att förhindra att de uppstÄr.

Jag vill uttrycka mitt tack för den vÀrdefulla feedbacken vid förberedelsen av publikationen till huvudutvecklaren Evgenij Jaruhin.

Litteratur

https://habr.com/en/post/254773/
Connolly Thomas, Begg Caroline. Databaser. Design, implementation och underhÄll. Teori och praktik.

KĂ€lla: habr.com

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster