{"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\/et\/blog\/administrirovanie\/denormalizacziya-baz-dannyh-erp-sistem-i-ee-vliyanie-na-razvitie-po-otkryvaem-tavernu-na-tortuge","title":{"rendered":"ERP-s\u00fcsteemide andmebaaside denormaliseerimine ja selle m\u00f5ju tarkvara arengule: avame Turtugas taverni","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Tere! Minu nimi on Andrei Semjonov, olen Sportmasteris vanemanal\u00fc\u00fctik. Selles postituses soovin t\u00f5statada ERP-s\u00fcsteemide andmebaaside denormeerimise k\u00fcsimuse. Vaatame \u00fcldisi tingimusi ja toome v\u00e4lja konkreetse n\u00e4ite \u2014 oletame, et see on suurep\u00e4rane monopolistlik tavern piraatidele ja meremeestele. Seal tuleb piraate ja meremehi teenindada erinevalt, kuna nende arusaamad ilust ja tarbimismustrid on oluliselt erinevad. <\/p>\n<p>Kuidas teha nii, et k\u00f5ik oleksid rahul? Kuidas mitte hulluks minna, projekteerides ja toetades sellist s\u00fcsteemi? Mida teha, kui tavernisse hakkavad tulema mitte ainult harjunud piraadid ja meremehed?<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/sportmaster_lab\/blog\/497550\/\"><img decoding=\"async\" alt=\"ERP-s\u00fcsteemide andmebaaside denormaliseerimine ja selle m\u00f5ju tarkvara arengule: avame Turtugas taverni\" src=\"\/wp-content\/uploads\/2020\/04\/bd0ccbfa3e3649aac20631e09fcb5b16.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p>K\u00f5ik on allpool. Kuid alustame j\u00e4rjekorras.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>1. Piirangud ja eeldused<\/h2>\n<p>\nK\u00f5ik esitatud on seotud ainult relaatsioonsete andmebaasidega. H\u00e4sti v\u00e4lja toodud, sealhulgas internetis, denormeerimise tagaj\u00e4rgi muutmise, kustutamise ja lisamise anomaaliate n\u00e4ol ei k\u00e4sitleta. V\u00e4lja j\u00e4\u00e4vad juhtumid, kui denormeerimine on tavaline, klassikaliste n\u00e4idete abil: passi seeria ja number, kuup\u00e4ev ja kellaaeg jne.<\/p>\n<p>Postituses kasutatakse intuitiivseid ja praktiliselt rakendatavaid m\u00e4\u00e4ratlusi normaalses vormis, ilma matemaatiliste terminite viidete kasutamiseta. Sellisel kujul, nagu neid saab rakendada reaalsete \u00e4ri protsesside (AP) \u00fclevaatamisel ja t\u00f6\u00f6stusliku tarkvara projekteerimisel.<\/p>\n<p>On arvamus, et andmehoidlate, aruandluse loomise t\u00f6\u00f6riistade ja integreerimislepingute projekteerimine (milles kasutatakse tabelilist teabeesitust) erineb ERP-s\u00fcsteemide andmebaaside projekteerimisest sellega, et tarbimise mugavus ja selle saavutamiseks teadlik denormeerimine v\u00f5ivad olla prioriteediks andmete terviklikkuse kaitse \u00fcle. Jagasin seda arvamust ja allpool kirjeldatud puudutab ainult meistridataanud ja tehingute andmeid ERP-s\u00fcsteemide raames.<\/p>\n<p>Normaalvormide selgitus on esitatud n\u00e4ite kaudu, mis on enamikule lugejatest arusaadav igap\u00e4evaelus. Kuid selge illustreerimise jaoks on punktides 4-5 teadlikult kasutatud silmapaistvalt 'v\u00e4ljam\u00f5eldud' \u00fclesannet. Kui seda ei tehta ja v\u00f5etakse mingisugune klassikaline n\u00e4ide, n\u00e4iteks sama tellimuse s\u00e4ilitamise mudel punktis 2, v\u00f5ite sattuda olukorda, kus lugeja t\u00e4helepanu fookus nihkub pakutud protsessi mudelilt isiklikule kogemusele ja arusaamale, kuidas peaksid andmete s\u00e4ilitamise protsessid ja mudelid infotehnoloogias olema \u00fcles ehitatud. Teisis\u00f5nu, v\u00f5tke kaks kvalifitseeritud IT-anal\u00fc\u00fctikut, laske \u00fchel teenindada reisijate transportimise logistikut, teisel aga masinaid mikrokiipide valmistamiseks transportivate logistikutega. Paluge neil, ilma eelnevalt automaatiseeritavaid \u00e4ri-protsesse arutamata, koostada andmemudel, et s\u00e4ilitada teavet raudtee reiside kohta. <\/p>\n<p>On olemas mitte-null t\u00f5en\u00e4osus, et pakutud mudelites leiate mitte ainult m\u00e4rgatavalt erineva atribuute komplekti, vaid ka mittesobivaid \u00fcksuste komplekte, sest iga anal\u00fc\u00fctik tugineb talle tuttavatele protsessidele ja \u00fclesannetele. Ja sellises olukorras on v\u00f5imatu \u00f6elda, milline mudel on '\u00f5ige', kuna puudub hindamise kriteerium.<\/p>\n<h2>2. Normaalvormid<\/h2>\n<p>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/mz\/vc\/ex\/mzvcexxqfzhzyybzk8zvbndmtcc.png\"><img decoding=\"async\" alt=\"ERP-s\u00fcsteemide andmebaaside denormaliseerimine ja selle m\u00f5ju tarkvara arengule: avame Turtugas taverni\" src=\"\/wp-content\/uploads\/2020\/04\/e2d3fc5656b59671648511b0a0e5f7b9.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p><b>Esimene normaalvorm andmebaasis<\/b> n\u00f5uab k\u00f5igi atribuutide aatomilisust. <br \/>\nEelk\u00f5ige, kui objekt A-l on mittev\u00f5tme atribuudid a ja b, nii et c = f(a,b) ja te tabelis, mis kirjeldab objekti A, salvestate atribuudiv\u00e4\u00e4rtuse c, siis andmebaasis on esimene normaalvorm rikutud. N\u00e4iteks, kui tellimuse spetsifikatsioonis on n\u00e4idatud kogus, mille m\u00f5\u00f5t\u00fchikud s\u00f5ltuvad kauba t\u00fc\u00fcbist: \u00fches olukorras v\u00f5ivad need olla t\u00fckid, teises liitrid, kolmandas t\u00fckist koosnevad pakendid (\u00fclemises mudelis Good_count_WR), siis andmebaasis on atribuutide aatomilisus rikutud. Sellisel juhul, et \u00f6elda, milline peaks olema tellimuse spetsifikatsiooni tabelite r\u00fchm, on vaja sihtprotsessi kirjeldust infotehnoloogias, ja kuna protsessid v\u00f5ivad olla erinevad, v\u00f5ib olla ka palju '\u00f5igeid' versioone.<\/p>\n<p><b>Teine normaalvorm andmebaasis<\/b> eeldab esimesse vormi ja iga protsessiga seotud entiteedi jaoks oma tabeli j\u00e4rgimist. Kui \u00fches tabelis on s\u00f5ltuvused c=f1(a) ja d=f2(b), kuid puudub s\u00f5ltuvus c=f3(b), siis on tabelis rikutud teist normaalvormi. \u00dclaltoodud n\u00e4ites ei ole tabelis \"Tellimus\" s\u00f5ltuvust tellimuse ja aadressi vahel. Muutke t\u00e4nava v\u00f5i linna nime ja see ei m\u00f5juta tellimuse olulisemaid atribuute. <\/p>\n<p><b>Andmebaasi kolmas normaalvorm<\/b> eeldab teise normaalvormi j\u00e4rgimist ning funktsionaalsete s\u00f5ltuvuste puudumist erinevate entiteetide atribuutide vahel. Seda reeglit saab formuleerida j\u00e4rgmiselt: \"k\u00f5ik, mis saab olla arvutatud, peaks olema arvutatud\". Teisis\u00f5nu, kui on olemas kaks objekti A ja B. A atribuutide tabelis on n\u00e4htav atribuut C, ja B-l on atribuut b, nii et c=f4(b), siis on rikutud kolmandat normaalvormi. Allpooltoodud n\u00e4ites p\u00fc\u00fcab atribuut \"Kogus\" (Total_count_WR) tellimuse salvestuses selgelt rikkuda kolmandat normaalvormi.<\/p>\n<h2>3. Minu l\u00e4henemine normaliseerimise rakendamisele<\/h2>\n<p>\n1. Ainult sihitud automatiseeritav \u00e4ri protsess saab pakkuda anal\u00fc\u00fctikule kriteeriume entiteetide ja atribuutide tuvastamiseks andmete salvestusmudeli loomisel. Protsessi mudeli loomine on andmemudeli normaalse mudeli loomise kohustuslik tingimus.<\/p>\n<p>2. Kolmanda normaalvormi saavutamine rangemas m\u00f5ttes ei pruugi olla m\u00f5istlik ERP-s\u00fcsteemide loomise praktikas, kui t\u00e4idetakse osa v\u00f5i k\u00f5ik j\u00e4rgmistest tingimustest:<\/p>\n<ul>\n<li>automatiseeritavad protsessid on harva muutustega seotud, <\/li>\n<li>uurimise ja arenduse ajad on l\u00fchikesed, <\/li>\n<li>andmete terviklikkuse n\u00f5uded on tinglikult madalad (potentsiaalsed vead t\u00f6\u00f6stustarkvaras ei too kaasa rahakaotust ega klientide kaotust tarkvara tellijale)<\/li>\n<li>jne.<\/li>\n<\/ul>\n<p>\nKirjeldatud tingimustes v\u00f5ivad kulud objektide ja nende atribuutide eluts\u00fckli identifitseerimiseks ja kirjeldamiseks osutuda majanduslikult mitteotstarbekaks.<\/p>\n<p>3. Andmemudeli denormaliseerimise mis tahes tagaj\u00e4rjed juba loodud infos\u00fcsteemis saab pehmendada koodi p\u00f5hjaliku eeluurimise ja testimisega.<\/p>\n<p>4. Denormalisatsioon on meetod, millega tugevdada t\u00f6\u00f6mahtu andmeallikate uurimise ja \u00e4riprotsessi projekteerimise etappidelt arenduse etapile, \u00fcleminekul rakendamise perioodilt s\u00fcsteemi arendamise perioodile.<\/p>\n<p>5. Kolmanda normaalvormi poole p\u00fc\u00fcdlemine on m\u00f5istlik, kui:<\/p>\n<ul>\n<li>Automatiseeritavate \u00e4rioprotsesside suundumus on keeruliselt prognoositav.<\/li>\n<li>Sissetuleva ja\/v\u00f5i arendustegevuse meeskonnas on n\u00f5rk t\u00f6\u00f6j\u00f5u jagunemine.<\/li>\n<li>Integraatsiooniringi s\u00fcsteemid arenevad vastavalt oma plaanidele.<\/li>\n<li>Andmete kooskamatuse t\u00f5ttu v\u00f5ib ettev\u00f5te kaotada kliente v\u00f5i raha.<\/li>\n<\/ul>\n<p>\n6. Andmemudeli projekteerimist peaks l\u00e4bi viima anal\u00fc\u00fctik ainult sihitud \u00e4riprotsesside ja infos\u00fcsteemi protsesside seosest. Kui andmemudeli projekteerimisega tegeleb arendaja, peab ta sukelduma teema valdkonda piisavalt s\u00fcgavale, et m\u00f5ista n\u00e4iteks atribuudi v\u00e4\u00e4rtuste erinevusi - see on vajalik eeldus aatomaarsete atribuutide eristamiseks. Seega v\u00f5tab ta endale mitteomaseid funktsioone.<\/p>\n<h2>4 \u00dclesanne illustratsiooniks<\/h2>\n<p>\nKujutage ette, et teil on v\u00e4ike robotiseeritud tavern sadamas. Teie turusegment: meremehed ja piraadid, kes tulevad sadamasse ja vajavad puhkust. Meremeestele m\u00fc\u00fcte apteegitilli teed, piraatidele aga rummu ja luust kamme habeme harjamiseks. Teenindus ise taverna sees on robothostess ja robotbaarmen. T\u00e4nu v\u00e4ga k\u00f5rgele kvaliteedile ja madalatele hindadele olete k\u00f5rvaldama k\u00f5ik konkurendid, nii et iga\u00fcks, kes laevast maha astub, tuleb teie taverna, mis on sadamas ainus.<\/p>\n<p>Taverna infotehnoloogia kompleks koosneb j\u00e4rgmisest tarkvarast: <\/p>\n<ul>\n<li>Varajase klienditeavituss\u00fcsteem, mis tuvastab kliendi kategooria iseloomulike tunnuste j\u00e4rgi.<\/li>\n<li>Robotite hostesside ja baarmenide juhtimiss\u00fcsteem.<\/li>\n<li>Laotegevuse ja m\u00fc\u00fcgikohta tarnimise juhtimiss\u00fcsteem.<\/li>\n<li>Tarnijate suhtehalduse s\u00fcsteem (SRH).<\/li>\n<\/ul>\n<p>\nProtsess:<\/p>\n<p>Varajane teavituss\u00fcsteem tuvastab laevast v\u00e4ljuvaid inimesi. Kui inimene on hoolikalt habetunud, m\u00e4\u00e4ratletakse ta meremehena, kui inimesel on habe, tuvastatakse ta piraadina.<\/p>\n<p>Sisenedes tavernasse kuuleb k\u00fclaline robot-ootevestluselt tervitust vastavalt oma kategooriale, n\u00e4iteks: \u201eHo-ho-ho, austatud piraat, minge laua juurde nr\u2026\"<\/p>\n<p>K\u00fclastaja l\u00e4bib m\u00e4\u00e4ratud laua, kus robot-barmani on juba ette valmistanud tooted vastavalt kategooriale. Robot-barman edastab laos\u00fcsteemile teabe, et j\u00e4rgmise tarneportsjoni suurust tuleb suurendada, ja laohalduse infotehnoloogia loob varude alusel ostutaotluse.<\/p>\n<p>Oletame, et varajase hoiatamise s\u00fcsteemi arendas teie sisemine IT, baarrobotite juhtimise programmi l\u00f5i v\u00e4lisekspert spetsiaalselt teie ettev\u00f5tte vajadustele. Samas on varude ja tarnijate juhtimiss\u00fcsteemid kohandatud lahendused turult.<\/p>\n<h2>5. Denormeerimise n\u00e4idised ja selle m\u00f5ju tarkvaraarendusele<\/h2>\n<p>\n\u00c4riprotsessi kavandamisel kinnitasid k\u00fcsitletud valdkonna eksperdid \u00fchem\u00f5tteliselt, et kogu maailmas joovad piraadid rummi ja kammivad oma habet luukammidega, samas kui meremehed joovad teed pune ja on alati siledalt habetunud. <\/p>\n<p>Kliendit\u00fc\u00fcpide kataloog v\u00e4ljub kahe v\u00e4\u00e4rtusega: 1- piraadid, 2 \u2014 meremehed, mis on ettev\u00f5tte kogu infovahetuse jaoks \u00fchine. <\/p>\n<p>Kliendi teavituss\u00fcsteem salvestab kohe pildit\u00f6\u00f6tluse tulemuse nagu tuvastatud kliendi identifikaatori (ID) ja tema t\u00fc\u00fcbi: meremees v\u00f5i piraat. <\/p>\n<p>Tuvastatud objekti ID<br \/>\nKliendi kategooria<\/p>\n<p>100500<br \/>\nPiraat<\/p>\n<p>100501<br \/>\nPiraat<\/p>\n<p>100502<br \/>\nMeremees<\/p>\n<p>Tuletame meelde, et<\/p>\n<p>1. Meie meremehed on tegelikult habemeajatud inimesed<br \/>\n2. Meie piraadid on tegelikult habe-kandvad inimesed<\/p>\n<p>Milliseid probleeme on antud juhul vaja lahendada, et meie struktuur suunaks kolmandasse normaalkujusse:<\/p>\n<ul>\n<li>atribuutide aatomituks muutmine - kliendi kategooria<\/li>\n<li>anal\u00fc\u00fcsitava fakti ja j\u00e4relduse segamine \u00fches tabelis <\/li>\n<li>fikseeritud funktsionaalne seos erinevate entiteetide atribuutide vahel. <\/li>\n<\/ul>\n<p>\nNormalizeeritud kujul saaksime kaks tabelit: <\/p>\n<ul>\n<li>tuvastamise tulemus kehtestatud tunnuste kogumina,<\/li>\n<\/ul>\n<p><\/p>\n<p>Tuvastatud objekti ID<br \/>\nN\u00e4okarv<\/p>\n<p>100500<br \/>\nJah<\/p>\n<p>100501<br \/>\nJah<\/p>\n<p>100502<br \/>\nEi<\/p>\n<p><\/p>\n<ul>\n<li>kliendi t\u00fc\u00fcbi m\u00e4\u00e4ramise tulemus, mis on rakendatud infotehnoloogia loogika raames kehtestatud tunnuste t\u00f5lgendamiseks<\/li>\n<\/ul>\n<p>Tuvastatud objekti ID<br \/>\nIdentifitseerimis-ID<br \/>\nKliendi kategooria<\/p>\n<p>100500<br \/>\n100001<br \/>\nPiraat<\/p>\n<p>100501<br \/>\n100002<br \/>\nPiraat<\/p>\n<p>100502<br \/>\n100003<br \/>\nMeremees<\/p>\n<p>Kuidas saab andmete normaliseerimise organisatsioon h\u00f5lbustada infos\u00fcsteemide kompleksi arengut? Oletame, et teil tekivad ootamatult uued kliendid. Olgu need Jaapani piraadid, kellel v\u00f5ib puududa habe, kuid kes k\u00e4ivad papagoiga \u00f5lal, ja \u00f6koloogilised piraadid, keda tunnete \u00e4ra Grete sinise profiili j\u00e4rgi vasakul rinnal. <\/p>\n<p>\u00d6koloogilised piraadid ei saa loomulikult kasutada luidest kammi ja n\u00f5uavad taaskasutatud mereplastikust analooge.<\/p>\n<p>Teil on vaja \u00fcmber t\u00f6\u00f6tada programmide t\u00f6\u00f6algoritmid vastavalt uutele sisenditele. Kui normaliseerimise reeglid oleksid j\u00e4rgitud, siis oleksite pidanud vaid m\u00f5nes s\u00fcsteemis t\u00e4iendasid sisenemisi teatud protsesside harude jaoks ja looma uusi harusid ainult nendes olukordades ja nendes infos\u00fcsteemides, kus on oluline n\u00e4o karvakasv. Kuid kuna reegleid ei j\u00e4rgitud, peate anal\u00fc\u00fcsima kogu koodi, kogu ulatuses, kus kasutatakse kliendi t\u00fc\u00fcbi v\u00e4listatud v\u00e4\u00e4rtusi, ja kindlaks m\u00e4\u00e4rama, et \u00fches juhul peab algoritm arvestama kliendi ametialase tegevusega, teises f\u00fc\u00fcsiliste omadustega. <\/p>\n<p>Sellises vormis, <b><i>p\u00fc\u00fcab <\/i><\/b>normaliseerituna, saaksime kaks tabelit operatiivandmete ja kaks registrit:<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/qn\/pq\/g4\/qnpqg4idbhbsqejhnryzfuilhhy.png\"><img decoding=\"async\" alt=\"ERP-s\u00fcsteemide andmebaaside denormaliseerimine ja selle m\u00f5ju tarkvara arengule: avame Turtugas taverni\" src=\"\/wp-content\/uploads\/2020\/04\/eea87da839171e8a3a42db0618972124.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<ul>\n<li>tuvastamise tulemus kehtestatud tunnuste kogumina,<\/li>\n<\/ul>\n<p><\/p>\n<p>Tuvastatud objekti ID<br \/>\nGrete vasakul rinnal<br \/>\nLind \u00f5lal<br \/>\nN\u00e4okarv<\/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>kliendi t\u00fc\u00fcbi m\u00e4\u00e4ramise tulemus (olgu see kasutajate esitus, kus on v\u00e4lja toodud kirjeldused registritest)<\/li>\n<\/ul>\n<p>\nKas avastatud denormaliseerimine t\u00e4hendab, et s\u00fcsteeme ei saa uute olude j\u00e4rgi t\u00e4iendada? Muidugi mitte. Kui kujutada ette, et k\u00f5ik infos\u00fcsteemid loodi \u00fche meeskonna poolt, kellel ei olnud t\u00f6\u00f6j\u00f5u p\u00f6\u00f6rlemist, on arendused h\u00e4sti dokumenteeritud ja teave meeskonnas edastatakse kaotusteta, siis vajalikud muudatused v\u00f5ivad toimuda m\u00f5\u00f5tmatult v\u00e4ikeste pingutuste kuludega. Kuid kui me naaseme algsete \u00fclesannete tingimuste juurde, siis ainult protokollide printimise eest kulub 1,5 klaviatuuri ja veel 0,5 ostuprotseduuride vormistamiseks.<\/p>\n<p>Eespool toodud n\u00e4ites on rikutud k\u00f5iki kolme normaalvormi, proovime neid rikkuda eraldi.<\/p>\n<p><b>Esimese normaalvormi rikkumine:<\/b><\/p>\n<p>Kujutage ette, et teie varud toimetatakse teie laos tarnijate ladudest omal k\u00e4el 1,5-tonnise kaubikuga, mis kuulub teie k\u00f5rtsile. Teie tellimuste suurus on tarnijate k\u00e4ibega v\u00f5rreldes nii v\u00e4ike, et neid t\u00e4idetakse alati t\u00e4ielikult ilma tootmise ooteajata. Kas sellise \u00e4ri koost\u00f6\u00f6s on vajalikud eraldi tabelid: s\u00f5idukid, s\u00f5idukit\u00fc\u00fcbid, kas on vajalik eristada plaani ja fakti teie tarnijatele saadetud tellimustes?<\/p>\n<p>Kujutage ette, kui palju \"\u00fclem\u00e4\u00e4raseid\" sidemeid peavad teie programmeerijad looma, kui arendustegevuses kasutatakse allpool esitatud mudelit.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/bz\/js\/gf\/bzjsgfs0fephwjwqx8xdvunrgva.png\"><img decoding=\"async\" alt=\"ERP-s\u00fcsteemide andmebaaside denormaliseerimine ja selle m\u00f5ju tarkvara arengule: avame Turtugas taverni\" src=\"\/wp-content\/uploads\/2020\/04\/7309871d1ecc5c1ceb4f077ea4afebff.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p>Kujutage ette, et oleme otsustanud, et soovitatud struktuur on liiga keeruline; meie puhul plaani ja fakti eraldamine tellimuse kirjes on liigset teavet, ja koostatud tellimuse spetsifikatsioon kirjutatakse \u00fcle saabunud kaupa vastavalt vastuv\u00f5tmisele, harvad erandid ja kehva kvaliteediga kauba vastuv\u00f5tmine lahendatakse v\u00e4ljaspool infos\u00fcsteemi.<br \/>\nJa \u00fchel p\u00e4eval n\u00e4ete, et kogu k\u00f5rtsi saal on t\u00e4is rahutuid ja hoolimatuid piraate. Mis on juhtunud? <\/p>\n<p>Selgus, et koos teie \u00e4ri kasvuga kasvas ka tarbimine. Kunagi tehti juhtimisotsus, et kui kaubik oli mahtude v\u00f5i kaaluga \u00fcle koormatud, mis juhtus \u00e4\u00e4rmiselt harva, eelistas tarnija koormust joogitega. <\/p>\n<p>Alustamata kaup sattus j\u00e4rgmisse tellimusse ja l\u00e4ks uue reisiga, laos \u00f5iguslikult n\u00f5utava j\u00e4\u00e4gi olemasolu k\u00f5rtsi juures v\u00f5imaldas mitte m\u00e4rgata vahejuhtumeid.<\/p>\n<p>Sadamas sulges oma viimase konkurendi ja kaubiku \u00fclekoormamine, mis j\u00e4i prioriseerimise t\u00f5ttu kahe silma vahele, p\u00f5hinedes arvamisel piisava n\u00f5utava j\u00e4\u00e4gi ja perioodilise alakoormuse korral, sai tavap\u00e4raseks praktikaks. Loobitud s\u00fcsteem toimib ideaalselt vastavalt sisestatud algoritmidele ja ei j\u00e4ta mingit v\u00f5imalust j\u00e4lgida s\u00fcsteemset plaanitud tellimuste t\u00e4itmata j\u00e4tmist. Ainult riknenud maine ja rahulolematud kliendid saavad probleemi avastada.<\/p>\n<p>A careful reader has undoubtedly noticed that the ordered quantity in the order specification (T_ORDER_SPEC) in section 2 and in section 5 may or may not meet the requirements of the first normal form. It all depends on whether different measurement units can fall into the same field with the selected range of goods. <\/p>\n<p><b>Violation of the second normal form:<\/b><\/p>\n<p>As your needs grow, you acquire a couple of transport vehicles of different sizes. In the context described above, creating a vehicle directory was deemed redundant, so all data processing algorithms serving the needs of delivery and warehouse treat the movement of goods from the supplier to the warehouse as a flight of a 1.5-ton Gazelle. Therefore, along with the purchase of new vehicles, you still create a vehicle directory, but during rework, you'll have to analyze all the code that references the movement of goods to determine whether specific references to the characteristics of the very vehicle that started the business are implied in each instance.<\/p>\n<p><b>Violation of the third normal form:<\/b><\/p>\n<p>At some point, you start creating a loyalty program, and a record of a regular customer appears. Why, for example, waste time creating material representations that store aggregated data on sales for individual customers for reporting and transferring to analytical systems, if at the start of the loyalty program all that concerns the customer can be placed in the record of the customer themselves? And indeed, at first glance, there seems to be no point. But every time your business connects new sales channels, there should be someone among your analysts who remembers that there exists an aggregation attribute. <\/p>\n<p>When designing each new process, say, online sales, sales through distributors connected to a common loyalty system, someone must keep in mind that all new processes should ensure data integrity at the code level. For an industrial database with thousands of tables, this seems like an unachievable task.<\/p>\n<p>Kogen arendaja teab, kuidas lahendada k\u00f5ik eespool nimetatud probleemid, kuid minu arvates on kogenud anal\u00fc\u00fctiku \u00fclesanne neid \u00e4ra hoida.<\/p>\n<p>Soovin t\u00e4nada v\u00e4\u00e4rtusliku tagasiside eest, mis anti publikatsiooni ettevalmistamisel peaarendaja Jevgeni Jaruhinile.<\/p>\n<h2>Kirjandus<\/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 Tom, Begg Caroline. Andmebaasid. Projekteerimine, rakendamine ja hooldus. Teooria ja praktika<br \/>\n<br \/>Allikas: <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\/et\/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=\"et_EE\" \/>\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\/et\/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\udd47ERP-s\u00fcsteemide andmebaaside denormaalimine ja selle m\u00f5ju tarkvaraarendusele: avame taverni Tortugas | ProHoster","description":"Tere! Minu nimi on Andrei Semjonov, olen vanem anal\u00fc\u00fctik Spordimeistris. Selles postituses tahan arutada ERP-s\u00fcsteemide andmebaaside denormaalimist.","canonical_url":"https:\/\/prohoster.info\/et\/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":"et_EE","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\/et\/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\/et\/wp-json\/wp\/v2\/posts\/78198","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/comments?post=78198"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/78198\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media\/78199"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media?parent=78198"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/categories?post=78198"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/tags?post=78198"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}