{"id":78198,"date":"2020-04-17T13:42:37","date_gmt":"2020-04-17T11:42:37","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/denormalizacziya-baz-dannyh-erp-sistem-i-ee-vliyanie-na-razvitie-po-otkryvaem-tavernu-na-tortuge"},"modified":"2020-04-17T13:42:37","modified_gmt":"2020-04-17T11:42:37","slug":"denormalizacziya-baz-dannyh-erp-sistem-i-ee-vliyanie-na-razvitie-po-otkryvaem-tavernu-na-tortuge","status":"publish","type":"post","link":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/denormalizacziya-baz-dannyh-erp-sistem-i-ee-vliyanie-na-razvitie-po-otkryvaem-tavernu-na-tortuge","title":{"rendered":"Denormalizzazione dei database dei sistemi ERP e il suo impatto sullo sviluppo del software: apriamo una taverna a Tortuga","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Ciao! Mi chiamo Andrei Semenov, sono analista senior in Sportmaster. In questo post voglio sollevare la questione della denormalizzazione dei database dei sistemi ERP. Esamineremo le condizioni generali, oltre a un esempio concreto: diciamo che sar\u00e0 una fantastica taverna monopolista per pirati e marinai. In cui i pirati e i marinai devono essere serviti in modo differente, poich\u00e9 le loro idee sul bello e i pattern di consumo differiscono notevolmente. <\/p>\n<p>Come fare affinch\u00e9 tutti siano soddisfatti? Come non impazzire progettando e mantenendo un sistema del genere? Cosa fare se in taverna iniziano a arrivare non solo i pirati e i marinai abituali?<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/sportmaster_lab\/blog\/497550\/\"><img decoding=\"async\" alt=\"Denormalizzazione dei database dei sistemi ERP e il suo impatto sullo sviluppo del software: apriamo una taverna a Tortuga\" src=\"\/wp-content\/uploads\/2020\/04\/bd0ccbfa3e3649aac20631e09fcb5b16.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p>Tutto \u00e8 sotto il tag. Ma procediamo con ordine.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>1. Limitazioni e assunzioni<\/h2>\n<p>\nTutto quanto esposto si riferisce solo ai database relazionali. Non si considerano le conseguenze della denormalizzazione, ben documentate anche su Internet, sotto forma di anomalie di modifica, eliminazione e inserimento. Rimangono esclusi i casi in cui la denormalizzazione \u00e8 una prassi comune, con esempi classici: numero e serie del passaporto, data e ora, ecc.<\/p>\n<p>Nel post vengono utilizzate definizioni di forme normali intuitive e di facile applicazione, senza riferimenti a termini matematici. Nella forma in cui possono essere applicate all'analisi dei processi aziendali reali e alla progettazione di software industriale.<\/p>\n<p>Esiste l'opinione che la progettazione di data warehouse, strumenti per la creazione di report e accordi di integrazione (in cui si utilizza la rappresentazione tabellare delle informazioni) differisca dalla progettazione dei database dei sistemi ERP in quanto la comodit\u00e0 d'uso e l'applicazione della denormalizzazione consapevole possono avere la priorit\u00e0 sulla protezione dell'integrit\u00e0 dei dati. Condivido questa opinione, e quanto descritto di seguito si applica esclusivamente ai modelli di master data e dati transazionali dei sistemi ERP.<\/p>\n<p>La spiegazione delle forme normali \u00e8 presentata attraverso un esempio comprensibile a livello pratico per la maggior parte dei lettori. Tuttavia, come illustrazione visiva, nei punti 4-5 \u00e8 stata consapevolmente utilizzata un'attivit\u00e0 fortemente \"inventata\". Se non si fa questo e si prende un esempio classico, come il modello di gestione degli ordini del punto 2, si pu\u00f2 rischiare che l'attenzione del lettore venga distolta dalla proposta di decomposizione del processo in un modello, alla propria esperienza personale e alla percezione di come debbano essere costruiti i processi e i modelli di gestione dei dati nei sistemi informativi. In altre parole, prendete due analisti IT qualificati, uno che fornisce servizi a logistici che trasportano passeggeri e l'altro a logistici che trasportano macchinari per la produzione di microchip. Chiedete loro, senza discutere in anticipo i processi aziendali automatizzabili, di creare un modello di dati per memorizzare le informazioni su una corsa ferroviaria. <\/p>\n<p>Esiste una probabilit\u00e0 non trascurabile che nei modelli proposti troviate non solo un insieme di attributi visibilmente diverso, ma anche insiemi di entit\u00e0 non corrispondenti, perch\u00e9 ogni analista si baser\u00e0 sui processi e le attivit\u00e0 a lui familiari. E dire in una tale situazione quale modello sia \"corretto\" \u00e8 impossibile, perch\u00e9 non esiste un criterio di valutazione.<\/p>\n<h2>2. Forme Normali<\/h2>\n<p>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/mz\/vc\/ex\/mzvcexxqfzhzyybzk8zvbndmtcc.png\"><img decoding=\"async\" alt=\"Denormalizzazione dei database dei sistemi ERP e il suo impatto sullo sviluppo del software: apriamo una taverna a Tortuga\" src=\"\/wp-content\/uploads\/2020\/04\/e2d3fc5656b59671648511b0a0e5f7b9.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p><b>La prima forma normale del database<\/b> richiede l'atomicit\u00e0 di tutti gli attributi. <br \/>\nIn particolare, se l'oggetto A ha attributi non chiave a e b, tali che c=f(a,b) e nella tabella che descrive l'oggetto A si memorizza il valore dell'attributo c, allora nel database \u00e8 violata la prima forma normale. Ad esempio, se nelle specifiche dell'ordine viene indicata una quantit\u00e0 le cui unit\u00e0 di misura dipendono dal tipo di prodotto: in un caso possono essere pezzi, in un altro litri, in un terzo imballaggi composti da pezzi (nel modello sopra Good_count_WR), allora nel database \u00e8 violata l'atomicit\u00e0 degli attributi. In questo caso, per dire come dovrebbe essere la struttura delle tabelle nelle specifiche dell'ordine, \u00e8 necessaria una descrizione chiara del processo di lavoro nei sistemi informativi, e poich\u00e9 i processi possono variare, ci possono essere molte \"versioni corrette\".<\/p>\n<p><b>La seconda forma normale del database<\/b> richiede il rispetto della prima forma e una propria tabella per ogni entit\u00e0 relativa al processo di lavoro nel sistema informativo. Se in una tabella ci sono dipendenze con=f1(a) e d=f2(b) e non c'\u00e8 una dipendenza con=f3(b), allora la tabella viola la seconda forma normale. Nell'esempio sopra nella tabella \"Ordine\" non c'\u00e8 una dipendenza tra l'ordine e l'indirizzo. Cambia il nome della strada o della citt\u00e0, e non avrai alcun impatto sugli attributi significativi dell'ordine. <\/p>\n<p><b>Terza forma normale del DB<\/b> richiede il rispetto della seconda forma normale e l'assenza di dipendenze funzionali tra gli attributi di entit\u00e0 diverse. Questa regola pu\u00f2 essere formulata cos\u00ec: \u00abtutto ci\u00f2 che pu\u00f2 essere calcolato, deve essere calcolato\u00bb. In altre parole, se esistono due oggetti A e B. Nella tabella che memorizza gli attributi dell'oggetto A, \u00e8 presente l'attributo C, e nell'oggetto B esiste un attributo b, tale che c=f4(b), allora la terza forma normale \u00e8 violata. Nell'esempio di seguito, l'attributo \u00abNumero di pezzi\u00bb (Total_count_WR) nel record dell'ordine pretende chiaramente di violare la terza forma normale.<\/p>\n<h2>3. Il mio approccio all'applicazione della normalizzazione<\/h2>\n<p>\n1. Solo un processo aziendale automatizzabile pu\u00f2 fornire all'analista i criteri per identificare entit\u00e0 e attributi nella creazione di un modello di archiviazione dei dati. La creazione del modello di processo \u00e8 un prerequisito fondamentale per creare un modello di dati normale.<\/p>\n<p>2. Raggiungere la terza forma normale in senso stretto pu\u00f2 non essere conveniente nella pratica reale della creazione di sistemi ERP, se si verificano alcune o tutte le seguenti condizioni:<\/p>\n<ul>\n<li>i processi automatizzabili sono raramente soggetti a cambiamenti, <\/li>\n<li>i tempi per la ricerca e lo sviluppo sono ristretti, <\/li>\n<li>i requisiti di integrit\u00e0 dei dati sono relativamente bassi (potenziali errori nel software commerciale non portano a perdite di denaro o clienti per il cliente del software)<\/li>\n<li>e cos\u00ec via.<\/li>\n<\/ul>\n<p>\nNegli scenari descritti, i costi per identificare e descrivere il ciclo di vita di alcuni oggetti e dei loro attributi potrebbero non essere giustificati in termini di efficienza economica.<\/p>\n<p>3. Qualsiasi conseguenza della denormalizzazione del modello di dati in un sistema informativo gi\u00e0 creato pu\u00f2 essere attenuata attraverso una scrupolosa analisi preventiva del codice e test.<\/p>\n<p>4. La denormalizzazione \u00e8 un modo per trasferire gli sforzi di lavoro dalla fase di ricerca delle fonti di dati e progettazione del processo aziendale alla fase di sviluppo, dal periodo di implementazione a quello di evoluzione del sistema.<\/p>\n<p>5. \u00c8 opportuno aspirare alla terza forma normale del database se:<\/p>\n<ul>\n<li>La direzione dei processi aziendali automatizzati \u00e8 difficile da prevedere<\/li>\n<li>All'interno del team di implementazione e\/o sviluppo c'\u00e8 una divisione del lavoro poco permeabile<\/li>\n<li>I sistemi che fanno parte del contesto di integrazione si sviluppano secondo piani propri<\/li>\n<li>La disomogeneit\u00e0 dei dati pu\u00f2 portare alla perdita di clienti o di denaro per l'azienda<\/li>\n<\/ul>\n<p>\n6. La progettazione del modello dati dovrebbe essere effettuata dall'analista solo in relazione ai modelli del processo aziendale target e del processo nel sistema informatico. Se il progettista del modello dati \u00e8 uno sviluppatore, dovr\u00e0 immergersi nel dominio tematico a tal punto da comprendere, in particolare, la differenza tra i valori degli attributi \u2014 condizione necessaria per l'estrazione degli attributi atomici. Cos\u00ec assumendo su di s\u00e9 funzioni non proprie.<\/p>\n<h2>4 Compito per illustrazione<\/h2>\n<p>\nSupponiamo che tu abbia una piccola taverna robotizzata nel porto. Il tuo segmento di mercato: marinai e pirati che entrano in porto e hanno bisogno di riposo. Ai marinai vendi t\u00e8 con timo, mentre ai pirati rom e pettini di ossa per pettinare la barba. Il servizio nella taverna \u00e8 offerto da un robot hostess e un robot barista. Grazie all'alta qualit\u00e0 e ai prezzi bassi, hai soppiantato tutti i concorrenti, cos\u00ec ogni persona che scende dalla nave viene nella tua taverna, che \u00e8 l'unica nel porto.<\/p>\n<p>Il complesso dei sistemi informativi della taverna \u00e8 composto dai seguenti software: <\/p>\n<ul>\n<li>Sistema di allerta precoce per il cliente, che riconosce la sua categoria in base a segni caratteristici<\/li>\n<li>Sistema di gestione per i robot hostess e i robot baristi<\/li>\n<li>Sistema di gestione del magazzino e di consegna al punto vendita<\/li>\n<li>Sistema di gestione delle relazioni con i fornitori (CRM)<\/li>\n<\/ul>\n<p>\nProcesso:<\/p>\n<p>Il sistema di allerta precoce riconosce le persone che scendono dalla nave. Se la persona \u00e8 rasa, la identifica come marinaio, se ha la barba, la identifica come pirata.<\/p>\n<p>Entrando nella taverna, l'ospite sente dal robot hostess un saluto in base alla sua categoria, ad esempio: \u00abHo-ho-ho, stimato pirata, si sieda al tavolo n.&#8230;\u00bb<\/p>\n<p>L'ospite si avvicina al tavolo indicato, dove il robot-barista ha gi\u00e0 preparato per lui i prodotti in base alla categoria. Il robot-barista invia informazioni al sistema di magazzino riguardo al fatto che la prossima consegna deve essere aumentata, e il sistema informativo del magazzino, basandosi sulle scorte a disposizione, genera una richiesta di acquisto nel SUOP.<\/p>\n<p>Lascia che il sistema di allerta precoce sia stato sviluppato dal tuo IT interno, mentre il programma di gestione dei robot da bar \u00e8 stato creato da un appaltatore esterno specificamente per il tuo business. I sistemi per la gestione del magazzino e le relazioni con i fornitori sono soluzioni boxe personalizzate provenienti dal mercato.<\/p>\n<h2>5. Esempi di denormalizzazione e il suo impatto sull'evoluzione del software<\/h2>\n<p>\nDurante la progettazione del processo aziendale, gli esperti del settore intervistati hanno affermato all'unisono che in tutto il mondo i pirati bevono rum e si pettinano la barba con pettini di osso, mentre i marinai bevono t\u00e8 con timo e sono sempre ben rasati. <\/p>\n<p>Appare un elenco dei tipi di clienti con due valori: 1- pirati, 2 - marinai, comune a tutto il contesto informativo dell'azienda. <\/p>\n<p>Il sistema di allerta sul cliente salva immediatamente il risultato dell'elaborazione dell'immagine come identificatore (ID) del cliente riconosciuto e il suo tipo: marinaio o pirata. <\/p>\n<p>ID dell'oggetto riconosciuto<br \/>\nCategoria del cliente<\/p>\n<p>100500<br \/>\nPirata<\/p>\n<p>100501<br \/>\nPirata<\/p>\n<p>100502<br \/>\nMarinaio<\/p>\n<p>Ripetiamo ancora che<\/p>\n<p>1. I nostri marinai sono in realt\u00e0 uomini rasati<br \/>\n2. I nostri pirati sono in realt\u00e0 uomini barbuti<\/p>\n<p>Quali problemi devono essere risolti in questo caso affinch\u00e9 la nostra struttura ambisca alla terza forma normale:<\/p>\n<ul>\n<li>violazione dell'atomicit\u00e0 dell'attributo - Categoria del cliente<\/li>\n<li>mescolanza del fatto analizzato e della conclusione nella stessa tabella <\/li>\n<li>dipendenza funzionale registrata tra gli attributi di entit\u00e0 diverse. <\/li>\n<\/ul>\n<p>\nIn forma normalizzata avremmo ottenuto due tabelle: <\/p>\n<ul>\n<li>risultato del riconoscimento sotto forma di un insieme di caratteristiche stabilite,<\/li>\n<\/ul>\n<p><\/p>\n<p>ID dell'oggetto riconosciuto<br \/>\nPeluria sul viso<\/p>\n<p>100500<br \/>\nS\u00ec<\/p>\n<p>100501<br \/>\nS\u00ec<\/p>\n<p>100502<br \/>\nNo<\/p>\n<p><\/p>\n<ul>\n<li>risultato della determinazione del tipo di cliente come applicazione della logica incorporata nel sistema informativo per l'interpretazione delle caratteristiche stabilite<\/li>\n<\/ul>\n<p>ID dell'oggetto riconosciuto<br \/>\nID di identificazione<br \/>\nCategoria del cliente<\/p>\n<p>100500<br \/>\n100001<br \/>\nPirata<\/p>\n<p>100501<br \/>\n100002<br \/>\nPirata<\/p>\n<p>100502<br \/>\n100003<br \/>\nMarinaio<\/p>\n<p>In che modo un'organizzazione di archiviazione dati normalizzata pu\u00f2 facilitare lo sviluppo di un complesso sistema informatico? Supponiamo che, all'improvviso, vi siano nuovi clienti. Che siano pirati giapponesi senza barba, ma con un pappagallo sulla spalla, o pirati ecologici, li riconoscerete facilmente per il profilo blu di Greta sul petto sinistro. <\/p>\n<p>I pirati ecologici, naturalmente, non possono usare pettini di ossa e richiedono un'alternativa realizzata con plastica marittima riciclata.<\/p>\n<p>\u00c8 necessario riprogettare gli algoritmi delle applicazioni in base ai nuovi input. Se le regole di normalizzazione fossero state seguite, sarebbe bastato integrare solo alcune ingressi per alcuni rami dei processi e creare nuovi rami solo per quei casi e per quei sistemi informatici dove le caratteristiche dei capelli sul viso hanno rilevanza. Ma poich\u00e9 le regole non sono state seguite, sar\u00e0 necessario analizzare tutto il codice, in tutto il contorno, dove vengono utilizzati i valori del repertorio dei tipi di clienti e stabilire chiaramente che in un caso l'algoritmo deve tenere conto dell'attivit\u00e0 professionale del cliente, mentre nell'altro delle caratteristiche fisiche. <\/p>\n<p>Nella forma in cui <b><i>tende <\/i><\/b>alla normalizzazione, avremmo due tabelle con dati operativi e due repertori:<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/qn\/pq\/g4\/qnpqg4idbhbsqejhnryzfuilhhy.png\"><img decoding=\"async\" alt=\"Denormalizzazione dei database dei sistemi ERP e il suo impatto sullo sviluppo del software: apriamo una taverna a Tortuga\" src=\"\/wp-content\/uploads\/2020\/04\/eea87da839171e8a3a42db0618972124.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<ul>\n<li>risultato del riconoscimento sotto forma di un insieme di caratteristiche stabilite,<\/li>\n<\/ul>\n<p><\/p>\n<p>ID dell'oggetto riconosciuto<br \/>\nGreta sul petto sinistro<br \/>\nUccello sulla spalla<br \/>\nPeluria sul viso<\/p>\n<p>100510<br \/>\n1<br \/>\n1<br \/>\n1<\/p>\n<p>100511<br \/>\n0<br \/>\n0<br \/>\n1<\/p>\n<p>100512<\/p>\n<p>1<br \/>\n0<\/p>\n<ul>\n<li>risultato della determinazione del tipo di cliente (che sia una vista utente, in cui sono presentate descrizioni dai repertori)<\/li>\n<\/ul>\n<p>\nLa denormalizzazione rilevata implica che i sistemi non potranno essere adattati alle nuove condizioni? Certo che no. Se immaginiamo che tutti i sistemi informatici siano stati creati da un unico team con un turnover nullo, i progetti siano ben documentati e le informazioni all'interno del team vengano trasferite senza perdite, le modifiche necessarie possono essere eseguite con sforzi trascurabili. Ma se torniamo alle condizioni iniziali del compito, solo per stampare i verbali delle discussioni comuni si consumeranno 1,5 tastiere e altre 0,5 per l'organizzazione delle procedure di acquisto.<\/p>\n<p>Nell'esempio sopra citato, tutte e tre le forme normali sono violate, proviamo a violarle singolarmente.<\/p>\n<p><b>Violazione della prima forma normale:<\/b><\/p>\n<p>Supponiamo che le merci nel tuo magazzino vengano consegnate dai magazzini dei fornitori tramite il ritiro utilizzando un furgone da 1,5 tonnellate che appartiene alla tua taverna. Le dimensioni dei tuoi ordini sono cos\u00ec piccole rispetto ai volumi dei fornitori, che vengono sempre eseguiti uno a uno senza aspettare la produzione. Sono necessarie tabelle separate per veicoli, tipi di veicoli? \u00c8 necessario separare il piano e il fatto nei tuoi ordini inviati ai fornitori?<\/p>\n<p>Immagina solo quanti \"collegamenti superflui\" i tuoi programmatori dovranno scrivere se si utilizza il modello qui sotto per sviluppare il programma.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/bz\/js\/gf\/bzjsgfs0fephwjwqx8xdvunrgva.png\"><img decoding=\"async\" alt=\"Denormalizzazione dei database dei sistemi ERP e il suo impatto sullo sviluppo del software: apriamo una taverna a Tortuga\" src=\"\/wp-content\/uploads\/2020\/04\/7309871d1ecc5c1ceb4f077ea4afebff.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p>Supponiamo di aver deciso che la struttura proposta \u00e8 eccessivamente complessa; nel nostro caso, separare il piano e il fatto nella registrazione dell'ordine \u00e8 un'informazione superflua e la specifica dell'ordine redatta viene sovrascritta in base ai risultati dell'accettazione della merce in arrivo, casi rari di errore e arrivo di merce di qualit\u00e0 inadeguata vengono risolti al di fuori del sistema informativo.<br \/>\nE un giorno vedi che l'intera sala della taverna \u00e8 piena di pirati arrabbiati e incolti. Cosa \u00e8 successo? <\/p>\n<p>Si \u00e8 scoperto che insieme alla crescita della tua attivit\u00e0 cresceva anche il consumo. In passato era stata presa una decisione manageriale che, se il furgone si trovava sovraccarico in base al volume e\/o al peso - cosa che accadeva molto raramente - il fornitore dava priorit\u00e0 al carico di bevande. <\/p>\n<p>I beni non consegnati venivano inclusi nel successivo ordine e partivano in un nuovo viaggio; la presenza di una scorta minima nel magazzino della taverna permetteva di non notare i casi di mancanza.<\/p>\n<p>Nel porto ha chiuso l'ultimo concorrente e il caso di sovraccarico del furgone, trascurato per via della priorit\u00e0 basata sull'assunzione di una scorta minima e sul carico parziale periodico del veicolo, \u00e8 diventato una pratica comune. Il sistema creato funzioner\u00e0 perfettamente secondo gli algoritmi incorporati e sar\u00e0 privo di ogni possibilit\u00e0 di monitorare il mancato rispetto sistematico degli ordini pianificati. Solo una reputazione danneggiata e clienti insoddisfatti potranno scoprire il problema.<\/p>\n<p>Il lettore attento avr\u00e0 sicuramente notato che la quantit\u00e0 ordinata nella specifica d'ordine (T_ORDER_SPEC) nella sezione 2 e nella sezione 5 potrebbe corrispondere o meno ai requisiti della prima forma normale. Tutto dipende dal fatto che, con l'assortimento di beni scelto, diverse unit\u00e0 di misura sostanziali possano rientrare nello stesso campo. <\/p>\n<p><b>Violazione della seconda forma normale:<\/b><\/p>\n<p>Con l'aumento delle vostre esigenze, acquistate altri veicoli di diverse dimensioni. Nel contesto esposto sopra, la creazione di un database dei veicoli \u00e8 stata considerata ridondante, di conseguenza tutti gli algoritmi di gestione dei dati, a supporto delle esigenze di consegna e magazzino, interpretano il movimento del carico dal fornitore al magazzino come un viaggio esclusivamente di un gazelle da 1,5 tonnellate. Quindi, insieme all'acquisto di nuovi veicoli, create comunque un database dei veicoli, ma durante la modifica dovrete analizzare tutto il codice che fa riferimento al movimento del carico per determinare se in ogni specifico punto ci si riferisca alle caratteristiche del particolare veicolo da cui ha avuto inizio l'attivit\u00e0.<\/p>\n<p><b>Violazione della terza forma normale:<\/b><\/p>\n<p>A un certo punto iniziate a creare un programma di fidelizzazione, compare la registrazione di un cliente abituale. Perch\u00e9, ad esempio, perdere tempo a creare rappresentazioni materiali che memorizzano dati aggregati delle vendite per un singolo cliente da utilizzare nei report e da trasferire nei sistemi analitici, se all'inizio del programma di fidelizzazione tutto ci\u00f2 che interessa il cliente pu\u00f2 essere inserito direttamente nella registrazione del cliente stesso? E, effettivamente, a prima vista non ha senso. Ma ogni volta che la vostra attivit\u00e0 collegher\u00e0, ad esempio, nuovi canali di vendita, tra i vostri analisti ci deve essere qualcuno che ricordi che esiste un attributo aggregato. <\/p>\n<p>Progettando ogni nuovo processo, supponiamo le vendite su Internet, vendite attraverso distributori collegati al sistema di fidelizzazione, qualcuno deve tenere a mente che tutti i nuovi processi devono garantire, a livello di codice, l'integrit\u00e0 dei dati. Per un database industriale con mille tabelle, questo sembra un compito poco praticabile.<\/p>\n<p>Un sviluppatore esperto sa naturalmente come mitigare tutti i problemi sopra menzionati, ma, secondo me, il compito di un analista esperto \u00e8 evitare di arrivarci.<\/p>\n<p>Desidero esprimere gratitudine per il feedback prezioso nella preparazione della pubblicazione al lead developer Evgeny Yarukhin.<\/p>\n<h2>Letteratura<\/h2>\n<p>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/en\/post\/254773\/\">https:\/\/habr.com\/en\/post\/254773\/<\/a><\/noindex><br \/>\nConnolly Thomas, Begg Caroline. Database. Progettazione, implementazione e supporto. Teoria e pratica.<br \/>\n<br \/>Fonte: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/sportmaster_lab\/blog\/497550\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0440\u0438\u0432\u0435\u0442! \u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u0410\u043d\u0434\u0440\u0435\u0439 \u0421\u0435\u043c\u0435\u043d\u043e\u0432, \u044f \u0441\u0442\u0430\u0440\u0448\u0438\u0439 \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u043a \u0432 \u0421\u043f\u043e\u0440\u0442\u043c\u0430\u0441\u0442\u0435\u0440. \u0412 \u044d\u0442\u043e\u043c \u043f\u043e\u0441\u0442\u0435 \u044f \u0445\u043e\u0447\u0443 \u043f\u043e\u0434\u043d\u044f\u0442\u044c \u0432\u043e\u043f\u0440\u043e\u0441 \u0434\u0435\u043d\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0431\u0430\u0437 \u0434\u0430\u043d\u043d\u044b\u0445 ERP-\u0441\u0438\u0441\u0442\u0435\u043c. \u041c\u044b \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043e\u0431\u0449\u0438\u0435 \u0443\u0441\u043b\u043e\u0432\u0438\u044f, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 \u2014 \u0441\u043a\u0430\u0436\u0435\u043c, \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u0430\u044f \u0442\u0430\u0432\u0435\u0440\u043d\u0430-\u043c\u043e\u043d\u043e\u043f\u043e\u043b\u0438\u0441\u0442 \u0434\u043b\u044f \u043f\u0438\u0440\u0430\u0442\u043e\u0432 \u0438 \u043c\u043e\u0440\u044f\u043a\u043e\u0432. \u0412 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043f\u0438\u0440\u0430\u0442\u043e\u0432 \u0438 \u043c\u043e\u0440\u044f\u043a\u043e\u0432 \u043d\u0430\u0434\u043e \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u0442\u044c \u043f\u043e-\u0440\u0430\u0437\u043d\u043e\u043c\u0443, \u0438\u0431\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043e \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u043e\u043c \u0438 \u043f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0435 \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u044b \u0443 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":78199,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-78198","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041f\u0440\u0438\u0432\u0435\u0442! \u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u0410\u043d\u0434\u0440\u0435\u0439 \u0421\u0435\u043c\u0435\u043d\u043e\u0432, \u044f \u0441\u0442\u0430\u0440\u0448\u0438\u0439 \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u043a \u0432 \u0421\u043f\u043e\u0440\u0442\u043c\u0430\u0441\u0442\u0435\u0440. \u0412 \u044d\u0442\u043e\u043c \u043f\u043e\u0441\u0442\u0435 \u044f \u0445\u043e\u0447\u0443 \u043f\u043e\u0434\u043d\u044f\u0442\u044c \u0432\u043e\u043f\u0440\u043e\u0441 \u0434\u0435\u043d\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0431\u0430\u0437 \u0434\u0430\u043d\u043d\u044b\u0445 ERP-\u0441\u0438\u0441\u0442\u0435\u043c.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/denormalizacziya-baz-dannyh-erp-sistem-i-ee-vliyanie-na-razvitie-po-otkryvaem-tavernu-na-tortuge\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"it_IT\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0414\u0435\u043d\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0431\u0430\u0437 \u0434\u0430\u043d\u043d\u044b\u0445 ERP-\u0441\u0438\u0441\u0442\u0435\u043c \u0438 \u0435\u0435 \u0432\u043b\u0438\u044f\u043d\u0438\u0435 \u043d\u0430 \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u0435 \u041f\u041e: \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u0442\u0430\u0432\u0435\u0440\u043d\u0443 \u043d\u0430 \u0422\u043e\u0440\u0442\u0443\u0433\u0435 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0440\u0438\u0432\u0435\u0442! \u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u0410\u043d\u0434\u0440\u0435\u0439 \u0421\u0435\u043c\u0435\u043d\u043e\u0432, \u044f \u0441\u0442\u0430\u0440\u0448\u0438\u0439 \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u043a \u0432 \u0421\u043f\u043e\u0440\u0442\u043c\u0430\u0441\u0442\u0435\u0440. \u0412 \u044d\u0442\u043e\u043c \u043f\u043e\u0441\u0442\u0435 \u044f \u0445\u043e\u0447\u0443 \u043f\u043e\u0434\u043d\u044f\u0442\u044c \u0432\u043e\u043f\u0440\u043e\u0441 \u0434\u0435\u043d\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0431\u0430\u0437 \u0434\u0430\u043d\u043d\u044b\u0445 ERP-\u0441\u0438\u0441\u0442\u0435\u043c.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/denormalizacziya-baz-dannyh-erp-sistem-i-ee-vliyanie-na-razvitie-po-otkryvaem-tavernu-na-tortuge\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-04-17T11:42:37+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-04-17T11:42:37+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Denormalizzazione dei database nei sistemi ERP e il suo impatto sullo sviluppo del software: apriamo una taverna a Tortuga | ProHoster","description":"Ciao! Mi chiamo Andrey Semyonov, sono analista senior in Sportmaster. In questo post voglio sollevare la questione della denormalizzazione dei database nei sistemi ERP.","canonical_url":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/denormalizacziya-baz-dannyh-erp-sistem-i-ee-vliyanie-na-razvitie-po-otkryvaem-tavernu-na-tortuge","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"it_IT","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0414\u0435\u043d\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0431\u0430\u0437 \u0434\u0430\u043d\u043d\u044b\u0445 ERP-\u0441\u0438\u0441\u0442\u0435\u043c \u0438 \u0435\u0435 \u0432\u043b\u0438\u044f\u043d\u0438\u0435 \u043d\u0430 \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u0435 \u041f\u041e: \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u0442\u0430\u0432\u0435\u0440\u043d\u0443 \u043d\u0430 \u0422\u043e\u0440\u0442\u0443\u0433\u0435 | ProHoster","og:description":"\u041f\u0440\u0438\u0432\u0435\u0442! \u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u0410\u043d\u0434\u0440\u0435\u0439 \u0421\u0435\u043c\u0435\u043d\u043e\u0432, \u044f \u0441\u0442\u0430\u0440\u0448\u0438\u0439 \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u043a \u0432 \u0421\u043f\u043e\u0440\u0442\u043c\u0430\u0441\u0442\u0435\u0440. \u0412 \u044d\u0442\u043e\u043c \u043f\u043e\u0441\u0442\u0435 \u044f \u0445\u043e\u0447\u0443 \u043f\u043e\u0434\u043d\u044f\u0442\u044c \u0432\u043e\u043f\u0440\u043e\u0441 \u0434\u0435\u043d\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0431\u0430\u0437 \u0434\u0430\u043d\u043d\u044b\u0445 ERP-\u0441\u0438\u0441\u0442\u0435\u043c.","og:url":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/denormalizacziya-baz-dannyh-erp-sistem-i-ee-vliyanie-na-razvitie-po-otkryvaem-tavernu-na-tortuge","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-04-17T11:42:37+00:00","article:modified_time":"2020-04-17T11:42:37+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"78198","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 17:03:32","updated":"2022-09-30 18:32:54","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/78198","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/comments?post=78198"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/78198\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media\/78199"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media?parent=78198"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/categories?post=78198"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/tags?post=78198"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}