Bonghjornu! Mi chjamu Andrey Semenov, sò un analista senior in Sportmaster. In questu post vogliu suscitarà u prublema di a denormalizazione di e basa di dati di u sistema ERP. Fighjemu e cundizioni generale, è ancu un esempiu specificu - dicemu chì seria una maravigliosa taverna di monopoliu per i pirati è i marinari. In quale i pirati è i marinari devenu esse servuti in modu diversu, perchè l'idee di bellezza è i mudelli di cunsumu di sti boni signori sò significativamente diffirenti.
Cumu fà tutti felici? Cumu pudete evità di impazzisce cuncependu è mantene un tali sistema? Cosa da fà se micca solu i soli pirati è marinari cumincianu à vene à a taverna?
Tuttu hè sottu u cut. Ma andemu in ordine.
1. Limitazioni è supposizioni
Tuttu ciò chì sopra s'applica solu à e basa di dati relazionale. E cunsequenze di a denormalizazione in a forma di mudificazione, eliminazione è anomalie di inserzione, chì sò ben cuparti, ancu in Internet, ùn sò micca cunsiderate. Fora di u scopu di sta publicazione, ci sò casi induve a denormalizazione hè un locu cumuni, cù esempi classici: serie è numeru di passaportu, data è ora, etc.
U post usa definizioni intuitive è praticamenti applicabili di e forme normali, senza riferimentu à i termini matematichi. In a forma in quale ponu esse appiicati à l'esame di i prucessi di cummerciale reali (BP) è u disignu di software industriale.
Hè sustinutu chì u disignu di magazzini di dati, strumenti di rapportu è accordi d'integrazione (chì utilizanu rapprisintazioni tabulari di l'infurmazioni) difiere da u disignu di basa di dati di u sistema ERP in quella facilità di cunsumu è l'usu di denormalizazione cuscente per ottene questu pò piglià a precedenza annantu à l'integrità. dati di prutezzione. I sparte sta opinione, è ciò chì hè descrittu quì sottu s'applica solu à i dati maestri è i mudelli di dati transazzione di i sistemi ERP.
Una spiegazione di e forme nurmali hè datu cù un esempiu chì si capisce à u livellu di ogni ghjornu per a maiò parte di i lettori. In ogni casu, cum'è un'illustrazione visuale, in i paragrafi 4-5, un compitu deliberatamente "fictivu" hè statu deliberatamente utilizatu. Se ùn fate micca questu è pigliate un esempiu di libru di testu, per esempiu, u listessu mudellu di almacenamentu di l'ordine da u puntu 2, pudete truvà in una situazione induve u focu di u lettore serà spustatu da a descomposizione pruposta di u prucessu in un mudellu. à l'esperienza persunale è a percepzione di cumu i prucessi è i mudelli per l'almacenamiento di dati in IS deve esse custruitu. In altre parolle, pigliate dui analisti IT qualificati, chì unu furnisce servizii à i logistici chì trasportanu i passageri, l'altru à i logistici chì trasportanu e macchine per a produzzione di microchips. Dumandate à elli, senza discutiri di BP automatizati in anticipu, per creà un mudellu di dati per almacenà l'infurmazioni nantu à un viaghju in ferrovia.
Ci hè una probabilità non-zero chì in i mudelli pruposti truverete micca solu un inseme notevolmente sfarente di attributi, ma ancu insemi divergenti di entità, perchè ogni analista s'appoghjanu nantu à i prucessi è i travaglii familiari per ellu. È in una tale situazione hè impussibile di dì quale mudellu hè "correttu", perchè ùn ci hè micca un criteriu di valutazione.
2. Forme nurmale
Prima forma normale di a basa di dati richiede l'atomicità di tutti i attributi.
In particulare, se l'ughjettu A hà attributi micca chjave a è b, cusì chì c = f (a, b) è in a tabella chì descrive l'ughjettu A guardate u valore di l'attributu c, allora a prima forma normale hè violata in a basa di dati. . Per esempiu, se a specificazione di l'ordine indica una quantità, l'unità di misurazione di quale dipende di u tipu di pruduttu: in un casu pò esse pezzi, in un altru litri, in un terzu pacchettu cumpostu di pezzi (in u mudellu sopra Good_count_WR) , allura l'atomicità di l'attributi hè violata in a basa di dati. In questu casu, per dì ciò chì deve esse u cluster di tavula di a specificazione di l'ordine, avete bisognu di una descrizzione mirata di u prucessu di travagliu in l'IS, è postu chì i prucessi ponu esse sfarenti, ponu esse parechje versioni "corrette".
Siconda forma normale di a basa di dati esige u rispettu di a prima forma è a so propria tabella per ogni entità ligata à u prucessu di travagliu in l'IS. Se in una tavula ci sò dipendenze c=f1(a) è d=f2(b) è ùn ci hè micca dependenza c=f3(b), allura a seconda forma normale hè violata in a tavula. In l'esempiu sopra, ùn ci hè micca una dependenza trà l'ordine è l'indirizzu in a tavola di l'Ordine. Cambia u nome di a strada o di a cità è ùn averete micca effettu nantu à l'attributi essenziali di l'ordine.
Terza basa di dati di forma normale richiede u rispettu di a seconda forma normale è l'absenza di dependenzii funziunali trà l'attributi di e diverse entità. Sta regula pò esse formulata cusì: "tuttu ciò chì pò esse calculatu deve esse calculatu". In altri palori, s'ellu ci sò dui ogetti A è B. In a tavula chì guarda l'attributi di l'ughjettu A, l'attributu C hè manifestatu, è l'ughjettu B hà l'attributu b, cusì chì c = f4 (b) esiste, allora a terza forma normale. hè violatu. In l'esempiu quì sottu, l'attributu Quantità di Pezzi (Total_count_WR) nantu à u registru di l'ordine dichjara chjaramente di violà a terza forma normale.
3. U mo approcciu per appiccà a nurmalizazione
1. Solu un prucessu di cummerciale automatizatu di destinazione pò furnisce l'analista cun criteri per identificà entità è attributi quandu creanu un mudellu di almacenamiento di dati. A creazione di un mudellu di prucessu hè un prerequisite per creà un mudellu di dati normale.
2. Assicurà a terza forma nurmale in u sensu strettu pò esse micca praticu in a pratica attuale di creà sistemi ERP, se alcune o tutte e seguenti cundizioni sò cumplette:
- i prucessi automatizati sò raramente sughjetti à cambià,
- i termini per a ricerca è u sviluppu sò stretti,
- i requisiti per l'integrità di e dati sò relativamente bassu (errori potenziali in u software industriale ùn portanu micca à a perdita di soldi o clienti da u cliente di u software)
- è simili.
In e cundizioni descritte, i costi di identificà è di discrizzione di u ciculu di vita di certi ogetti è i so attributi ùn ponu esse ghjustificate da u puntu di vista di l'efficienza ecunomica.
3. Qualchese cunsequenze di a denormalizazione di u mudellu di dati in un IS digià creatu pò esse mitigatu da un studiu preliminariu approfonditu di u codice è a prova.
4. A denormalizazione hè una manera di trasfiriri i costi di u travagliu da u stadiu di a ricerca di fonti di dati è di cuncepimentu di un prucessu cummerciale à u stadiu di sviluppu, da u periodu di implementazione à u periodu di sviluppu di u sistema.
5. Hè cunsigliatu di strive per a terza forma normale di una basa di dati se:
- A direzzione di u cambiamentu in i prucessi di cummerciale automatizati hè difficiule di predicà
- Ci hè una divisione debule di u travagliu in a squadra di implementazione è / o di sviluppu
- I sistemi inclusi in u circuitu di integrazione si sviluppanu secondu i so piani
- L'incoerenza di dati pò esse risultatu in una sucità perde clienti o soldi
6. U disignu di un mudellu di dati deve esse realizatu da un analista solu in cunnessione cù i mudelli di u prucessu cummerciale di destinazione è u prucessu in l'IS. Se un sviluppatore cuncepisce un mudellu di dati, duverà immerse in u sughjettu in una tale misura chì, in particulare, capisce a diffarenza trà i valori di l'attributi - una cundizione necessaria per isolà l'attributi atomichi. Cusì, piglià funzioni inusual.
4 Prublemu per l'illustrazione
Diciamu chì avete una piccula taverna robotica in u portu. U vostru segmentu di u mercatu: marinari è pirati chì venenu in portu è necessitanu una pausa. Vendite tè cù timu à i marinari, è rum è pettini d'ossu per pettinare a barba à i pirati. U serviziu in a taverna stessu hè furnitu da un robot hostess è un robot barman. Grazie à a vostra alta qualità è i prezzi bassi, avete cacciatu i vostri cuncurrenti, perchè tutti quelli chì venenu da a nave venenu à a vostra taverna, chì hè l'unicu in u portu.
U cumplessu di sistemi d'informazione di taverna hè custituitu da u software seguente:
- Un sistema d'alerta anticipata nantu à un cliente chì ricunnosce a so categuria basatu nantu à e caratteristiche caratteristiche
- Sistema di cuntrollu per robot hostess è robot bartenders
- Sistema di gestione di magazzinu è consegna à u puntu di vendita
- Sistema di Gestione di Relazioni cù i Fornitori (SURP)
Proċessu:
U sistema d'alerta precoce ricunnosce e persone chì lascianu a nave. Se una persona hè rasata, l'identifica cum'è un marinaru; se una persona si trova chì hà una barba, allora hè identificatu cum'è un pirata.
Ingressu in a taverna, l'invitatu sente un salutu da u robot hostess in cunfurmità cù a so categuria, per esempiu: "Ho-ho-ho, caru pirate, vai à a tavola No..."
L'invitatu va à a tavula specifica, induve u robot bartender hà digià preparatu merchenzie per ellu in cunfurmità cù a categuria. U robot bartender trasmette infurmazioni à u sistema di magazzinu chì a prossima parte di consegna deve esse aumentata; u magazzinu IS, basatu annantu à i saldi rimanenti in almacenamentu, genera una dumanda di compra in u sistema di gestione.
Mentre chì u sistema d'alerta anticipata pò esse sviluppatu da a vostra IT interna, u prugramma di gestione di robot di bar pò esse statu creatu da un cuntrattu esternu specificamente per a vostra attività. È i sistemi per a gestione di i magazzini è e relazioni cù i fornituri sò solu suluzione persunalizata da u mercatu.
5. Esempii di denormalizazione è u so impattu nantu à u sviluppu di software
Quandu cuncepimentu di un prucessu cummerciale, l'esperti di u sughjettu intervistati anu unanimu chì i pirati di u mondu beie rum è pettinanu a barba cù pettini d'ossu, è i marinari beie tè cù timu è sò sempre rasati.
Un repertoriu di tipi di clientella appare cù dui valori: 1 - pirati, 2 - marinari, cumuni per tuttu u circuitu di l'infurmazioni di a cumpagnia.
U sistema di notificazione di u cliente guarda immediatamente u risultatu di u trattamentu di l'imaghjini cum'è l'identificatore (ID) di u cliente ricunnisciutu è u so tipu: marinaru o pirate.
ID di l'ughjettu ricunnisciutu
categuria di u cliente
100500
Pirata
100501
Pirata
100502
Marinu
Lasciamu nutà una volta chì
1. I nostri marinari sò veramente persone rasate
2. I nostri pirati sò veramente barbuti
Chì prublemi in questu casu deve esse eliminati per chì a nostra struttura strive per a terza forma normale:
- violazione di l'atomicità di l'attributu - Category Client
- mischjendu u fattu analizatu è a cunclusione in una tavola
- relazione funziunale fissa trà l'attributi di e diverse entità.
In a forma nurmalizata, averemu duie tavule:
- risultatu di ricunniscenza in forma di un inseme di caratteristiche stabilite,
ID di l'ughjettu ricunnisciutu
Capelli facciali
100500
chì
100501
chì
100502
No
- u risultatu di determinà u tipu di cliente cum'è una applicazione di a logica incrustata in l'IS per interpretà e caratteristiche stabilite
ID di l'ughjettu ricunnisciutu
ID d'identificazione
categuria di u cliente
100500
100001
Pirata
100501
100002
Pirata
100502
100003
Marinu
Cumu pò una urganizazione di almacenamentu di dati normalizata facilità u sviluppu di un cumplessu IP? Diciamu chì di colpu avete novi clienti. Lasciate esse pirati giapponesi chì ùn anu micca a barba, ma caminanu cù un pappagallo nantu à a spalla, è i pirati ambientalisti, pudete facilmente ricunnosce da u prufilu blu di Greta nantu à u pettu manca.
I pirati ambientali, naturalmente, ùn ponu micca aduprà pettini d'ossu è necessitanu un analogu fattu di plastica di mare riciclata.
Avete bisognu di reworking l'algoritmi di u prugramma in cunfurmità cù i novi inputs. Se i reguli di nurmalizazione sò stati seguiti, allora avete solu da supplementà l'inputs per certi rami di prucessu in certi sistemi è creanu novi rami solu per quelli casi è in quelli IS induve importa i capelli faciale. Ma, postu chì e regule ùn sò micca seguite, duverete analizà u codice sanu, in tuttu u circuitu, induve i valori di u repertoriu di u cliente sò usati è stabilisce chjaramente chì in un casu l'algoritmu deve piglià in contu u prufessiunale. l'attività di u cliente, è in l'altri caratteristiche fisiche.
In una forma chì cerca à nurmalizà, averemu duie tavule cù dati operativi è dui cartulari:
- risultatu di ricunniscenza in forma di un inseme di caratteristiche stabilite,
ID di l'ughjettu ricunnisciutu
Greta nantu à u pettu manca
Bird nantu à a spalla
Capelli facciali
100510
1
1
1
100511
0
0
1
100512
1
0
- u risultatu di a determinazione di u tippu di cliente (chì sia una vista persunalizata in quale si mostranu e descrizioni da i cartulari)
A denormalizazione rilevata significa chì i sistemi ùn ponu micca mudificate per scuntrà e novi cundizioni? Di sicuru micca. Se imaginemu chì tutti i sistemi d'infurmazione sò stati creati da una squadra cù u turnover di u persunale zero, i sviluppi sò ben documentati è l'infurmazioni sò trasferiti in a squadra senza perdita, allora i cambiamenti necessarii ponu esse fatti cù pocu sforzu. Ma s'è turnemu à e cundizioni originali di u prublema, i tastieri 1,5 seranu sguassati solu per stampà i protokolli di discussioni cumuni è un altru 0,5 per processà e prucedure di procura.
In l'esempiu di sopra, tutti i trè formi nurmali sò violati, pruvemu di violà separatamente.
Violazione di a prima forma normale:
Diciamu chì e merchenzie sò consegnate à u vostru magazzinu da i magazzini di i fornituri per pick-up usendu una gazelle di 1.5 tonnellate chì appartene à a vostra taverna. A dimensione di i vostri ordini hè cusì chjuca in quantu à u fatturatu di i fornitori chì sò sempre cumpleti unu-à-unu senza aspittà a produzzione. Avete bisognu di tavule separati cù un tali prucessu di cummerciale: veiculi, tippi di veiculi, hè necessariu separà u pianu è u fattu in i vostri ordini à i fornituri partiti?
Immaginate quante cunnessione "extra" chì i vostri programatori anu da scrive si utilizate u mudellu sottu per sviluppà un prugramma.
Diciamu chì avemu decisu chì a struttura pruposta hè inutilmente cumplessa; in u nostru casu, siparandu u pianu è u fattu in u registru di l'ordine hè infurmazione redundante, è a specificazione di l'ordine generata hè riscritta nantu à i risultati di l'accettazione di e merchenzie ghjunte, rara miss. -a classificazione è l'arrivu di merchenzie di qualità inadegwate sò stallati fora di l'IS.
È po un ghjornu vede cumu tutta a sala di taverna hè piena di pirati indignati è disgraziati. Chi hè successu?
Risulta chì cum'è a vostra attività hà crisciutu, cusì hà fattu u vostru cunsumu. Una volta, una decisione di gestione hè stata presa chì, se una gazelle hè stata sovraccaricata in voluminu è / o pesu, chì era estremamente raru, u fornitore priurità a carica in favore di e bevande.
E merchenzie non consegnate sò finite in u prossimu ordine è partenu in un novu volu; a prisenza di un saldo minimu in u magazzinu à a taverna hà permessu di ùn avè micca avvistu i casi mancanti.
L'ultimu cuncurrente chjusu à u portu, è u casu punitu di a sopracarga di gazelle, bypassed by prioritization based on the assumption of the sufficiency of the minimum balance and period underloading of the vehicle, diventenu pratica cumuni. U sistema creatu idealmente travaglià in cunfurmità cù l'algoritmi incrustati in questu è serà privatu di ogni opportunità per seguità u fallimentu sistematicu per cumpiendu ordini pianificati. Solu una reputazione dannata è i clienti insatisfeti puderanu detectà u prublema.
Un lettore attentu pò avè nutatu chì a quantità urdinata in a specificazione di l'ordine (T_ORDER_SPEC) in a rùbbrica 2 è a rùbbrica 5 pò o micca risponde à u requisitu di prima forma normale. Tuttu dipende chì, datu l'assortiment selezziunatu di merchenzie, essenzialmente diverse unità di misura ponu cascà in u stessu campu.
Violazione di a seconda forma normale:
Quandu i vostri bisogni crescenu, cumprate un paru di veiculi più di diverse dimensioni. In u cuntestu sopra, a creazione di un annuariu di veiculi hè stata cunsiderata redundante; per quessa, tutti l'algoritmi di trasfurmazioni di dati chì servenu i bisogni di consegna è magazzinu percepiscenu u muvimentu di a carica da u fornitore à u magazzinu cum'è u volu di un esclusivamente 1,5-ton. gazelle. Allora, inseme cù l'acquistu di novi veiculi, avete ancu creà un annuariu di veiculi, ma quandu u finalizà, vi tuccherà à analizà tuttu u codice chì riferenzia u muvimentu di a carica per sapè s'ellu in ogni locu specificu i riferimenti sò implicati à e caratteristiche. di u veiculu stessu da quale l'affari hà iniziatu.
Violazione di a terza forma normale:
À un certu puntu avete principiatu à creà un prugramma di fidelizazione, un registru di un cliente regulare appare. Perchè, per esempiu, passanu u tempu per creà viste materiali chì guardanu dati aggregati nantu à a vendita à un cliente individuale per l'usu in rapportu è trasferimentu à i sistemi analitici, se à l'iniziu di un prugramma di fideltà tuttu ciò chì interessa u cliente pò esse piazzatu nantu à u registru di u cliente. ? È, veramente, à u primu sguardu, ùn ci hè nunda. Ma ogni volta chì a vostra attività cunnetta, per esempiu, novi canali di vendita, ci deve esse qualchissia trà i vostri analisti chì ricurdarà chì un tali attributu di aggregazione esiste.
Quandu u disignu di ogni novu prucessu, per esempiu, vendite in Internet, vendite attraversu distributori cunnessi à un sistema di fidelizazione cumuni, qualchissia deve tene in mente chì tutti i novi prucessi devenu assicurà a integrità di dati à u livellu di codice. Per una basa di dati industriale cù mille tavule, questu pare un compitu impussibile.
Un sviluppatore espertu, sicuru, sà cumu piantà tutti i prublemi citati sopra, ma, in u mo parè, u compitu di un analista espertu ùn hè micca di mette in luce.
Vogliu sprime a mo gratitùdine à u sviluppatore principali Evgeniy Yarukhin per i so preziosi feedback durante a preparazione di a publicazione.
Letteratura
Connolly Thomas, Begg Caroline. basa di dati. Cuncepimentu, implementazione è supportu. Teoria è pratica
Source: www.habr.com