{"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\/sv\/blog\/administrirovanie\/denormalizacziya-baz-dannyh-erp-sistem-i-ee-vliyanie-na-razvitie-po-otkryvaem-tavernu-na-tortuge","title":{"rendered":"Denormalisering av ERP-databaser och dess p\u00e5verkan p\u00e5 mjukvaruutveckling: vi \u00f6ppnar en tavern p\u00e5 Tortuga","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Hej! Jag heter Andrey Semyonov, jag \u00e4r senioranalytiker p\u00e5 Sportmaster. I det h\u00e4r inl\u00e4gget vill jag ta upp fr\u00e5gan om denormalisering av databaser i ERP-system. Vi kommer att titta p\u00e5 allm\u00e4nna f\u00f6ruts\u00e4ttningar samt ett specifikt exempel \u2014 l\u00e5t oss s\u00e4ga, det kommer att vara en underbar tavernamonopol f\u00f6r pirater och sj\u00f6m\u00e4n. D\u00e4r pirater och sj\u00f6m\u00e4n m\u00e5ste betj\u00e4nas p\u00e5 olika s\u00e4tt, eftersom deras syn p\u00e5 det vackra och konsumtionsm\u00f6nster skiljer sig avsev\u00e4rt \u00e5t. <\/p>\n<p>Hur g\u00f6r man s\u00e5 att alla \u00e4r n\u00f6jda? Hur undviker man att bli galen n\u00e4r man designar och underh\u00e5ller ett s\u00e5dant system? Vad g\u00f6r man om tavernan b\u00f6rjar ta emot inte bara de vanliga piraterna och sj\u00f6m\u00e4nnen?<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/sportmaster_lab\/blog\/497550\/\"><img decoding=\"async\" alt=\"Denormalisering av ERP-databaser och dess p\u00e5verkan p\u00e5 mjukvaruutveckling: vi \u00f6ppnar en tavern p\u00e5 Tortuga\" src=\"\/wp-content\/uploads\/2020\/04\/bd0ccbfa3e3649aac20631e09fcb5b16.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p>Allt finns nedan. Men l\u00e5t oss g\u00e5 tillv\u00e4ga steg f\u00f6r steg.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>1. Begr\u00e4nsningar och antaganden<\/h2>\n<p>\nAllt som anges g\u00e4ller endast relationella databaser. De v\u00e4lk\u00e4nda konsekvenserna av denormalisering i form av modifierings-, borttagnings- och ins\u00e4ttningsanomalier som beskrivs p\u00e5 internet beaktas inte. Utanf\u00f6r publiceringen l\u00e4mnas fall d\u00e4r denormalisering \u00e4r ett allm\u00e4nt fenomen, med klassiska exempel: serienummer och passnummer, datum och tid med mera.<\/p>\n<p>Inl\u00e4gget anv\u00e4nder intuitivt begripliga och praktiskt till\u00e4mpbara definitioner av normala former, utan h\u00e4nvisningar till matematiska termer. I den form de kan till\u00e4mpas p\u00e5 unders\u00f6kning av verkliga aff\u00e4rsprocesser (BP) och design av industriell programvara.<\/p>\n<p>Det finns en \u00e5sikt om att design av datalager, verktyg f\u00f6r rapportering och integrationsavtal (i vilka tabul\u00e4r informationsrepresentation anv\u00e4nds), skiljer sig fr\u00e5n design av ERP-databaser i det att bekv\u00e4mligheten i konsumtionen och till\u00e4mpligheten f\u00f6r att uppn\u00e5 detta genom medveten denormalisering kan ha prioritet \u00f6ver skyddet av dataintegriteten. Jag delar denna \u00e5sikt, och det som beskrivs nedan g\u00e4ller uteslutande modeller f\u00f6r masterdata och transaktionsdata i ERP-system.<\/p>\n<p>F\u00f6rklaringen av normala former presenteras med ett exempel som m\u00e5nga l\u00e4sare kan f\u00f6rst\u00e5 p\u00e5 en vardaglig niv\u00e5. Men f\u00f6r att ge en tydlig illustration anv\u00e4nds medvetet en \"uppfunnen\" uppgift i punkterna 4-5. Om detta inte g\u00f6rs och ett klassiskt exempel tas, som till exempel samma modell f\u00f6r lagring av best\u00e4llningar fr\u00e5n punkt 2, kan l\u00e4sarens fokus flyttas fr\u00e5n den f\u00f6reslagna nedbrytningen av processen till den personliga erfarenheten och uppfattningen av hur processer och datalagringsmodeller b\u00f6r byggas i informationssystem. Med andra ord, ta tv\u00e5 kvalificerade IT-analytiker, l\u00e5t en betj\u00e4na logistikf\u00f6retag som transporterar passagerare och den andra de som transporterar maskiner f\u00f6r att producera mikrochip. Be dem, utan att i f\u00f6rv\u00e4g diskutera automatiserbara aff\u00e4rsprocesser, skapa en datamodell f\u00f6r att lagra information om en j\u00e4rnv\u00e4gstransport. <\/p>\n<p>Det finns en icke-noll sannolikhet att ni i de f\u00f6reslagna modellerna hittar inte bara m\u00e4rkbart olika upps\u00e4ttningar av attribut, utan \u00e4ven icke \u00f6verensst\u00e4mmande upps\u00e4ttningar av entiteter, eftersom varje analytiker kommer att basera sig p\u00e5 sina egna k\u00e4nda processer och uppgifter. Att s\u00e4ga vilken modell som \u00e4r \"r\u00e4tt\" i en s\u00e5dan situation \u00e4r om\u00f6jligt, eftersom det inte finns n\u00e5got bed\u00f6mningskriterium.<\/p>\n<h2>2. Normala former<\/h2>\n<p>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/mz\/vc\/ex\/mzvcexxqfzhzyybzk8zvbndmtcc.png\"><img decoding=\"async\" alt=\"Denormalisering av ERP-databaser och dess p\u00e5verkan p\u00e5 mjukvaruutveckling: vi \u00f6ppnar en tavern p\u00e5 Tortuga\" src=\"\/wp-content\/uploads\/2020\/04\/e2d3fc5656b59671648511b0a0e5f7b9.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p><b>F\u00f6rsta normala formen av databasen<\/b> kr\u00e4ver atom\u00e4r struktur f\u00f6r alla attribut. <br \/>\nSpecifikt, om objekt A har icke-nyckelattribut a och b, s\u00e5dana att c=f(a,b) och i tabellen som beskriver objekt A lagrar du v\u00e4rdet av attribut c, s\u00e5 bryts den f\u00f6rsta normala formen i databasen. Till exempel, om i best\u00e4llningsspecifikationen anges en m\u00e4ngd vars enheter beror p\u00e5 produkttypen: i vissa fall kan det vara stycken, i andra liter, och i tredje f\u00f6rpackningar best\u00e5ende av stycken (i modellen ovan Good_count_WR), s\u00e5 \u00f6vertr\u00e4der det atom\u00e4riteten f\u00f6r attributen i databasen. I detta fall, f\u00f6r att s\u00e4ga hur tabellstrukturen f\u00f6r best\u00e4llningsspecifikationen b\u00f6r se ut, beh\u00f6vs en m\u00e5lspecifikation av arbetsprocessen i informationssystemet, och eftersom processerna kan vara olika, kan det finnas m\u00e5nga \"r\u00e4tta\" versioner.<\/p>\n<p><b>Andra normala formen av databasen<\/b> kr\u00e4ver att den f\u00f6rsta formen beaktas och att varje entitet som h\u00f6r 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\u00e5got beroende med=f3(b), \u00e4r den andra normala formen bruten i tabellen. I exemplet ovan finns det inget beroende mellan best\u00e4llningen och adressen i tabellen \"Best\u00e4llning\". \u00c4ndra gatunamnet eller staden, och du p\u00e5verkar inte n\u00e5gra v\u00e4sentliga attribut av best\u00e4llningen. <\/p>\n<p><b>Tredje normala formen av databasen<\/b> kr\u00e4ver att den andra normala formen beaktas och att det inte finns n\u00e5gra funktionella beroenden mellan attributen f\u00f6r olika entiteter. Denna regel kan formuleras som: \"allt som kan ber\u00e4knas, ska ber\u00e4knas\". Med andra ord, om det finns tv\u00e5 objekt A och B. I tabellen som lagrar attributen f\u00f6r objekt A visas attributet C, och objekt B har ett attribut b, s\u00e5dant att det finns c=f4(b), d\u00e5 bryts den tredje normala formen. I det nedanst\u00e5ende exemplet p\u00e5st\u00e5r attributet \"Antal bitar\" (Total_count_WR) i best\u00e4llningsposten att det bryter mot den tredje normala formen.<\/p>\n<h2>3. Min metod f\u00f6r till\u00e4mpning av normalisering<\/h2>\n<p>\n1. Endast den m\u00e5lorienterade automatiserbara aff\u00e4rsprocessen kan ge analytikern kriterier f\u00f6r att identifiera entiteter och attribut vid skapandet av datalagringsmodellen. Skapandet av processmodellen \u00e4r en f\u00f6ruts\u00e4ttning f\u00f6r att skapa en normal datamodell.<\/p>\n<p>2. Att uppn\u00e5 den tredje normala formen i strikt mening kan vara orealistiskt i praktiken vid skapandet av ERP-system under den del av eller alla f\u00f6ljande villkor:<\/p>\n<ul>\n<li>automatiserbara processer \u00e4r s\u00e4llan utsatta f\u00f6r f\u00f6r\u00e4ndringar, <\/li>\n<li>tidsramarna f\u00f6r forskning och utveckling \u00e4r sn\u00e4va, <\/li>\n<li>kraven p\u00e5 dataintegritet \u00e4r relativt l\u00e5ga (potentiella fel i industriprogramvara leder inte till f\u00f6rlust av pengar eller kunder f\u00f6r programvarukunden)<\/li>\n<li>och s\u00e5 vidare.<\/li>\n<\/ul>\n<p>\nUnder de angivna f\u00f6rh\u00e5llandena kan kostnaderna f\u00f6r att identifiera, beskriva livscykeln f\u00f6r vissa objekt och deras attribut vara oekonomiska.<\/p>\n<p>3. Eventuella konsekvenser av denormalisering av datamodellen i ett redan skapat informationssystem kan mildras genom noggrann f\u00f6runders\u00f6kning av koden och testning.<\/p>\n<p>4. Denormalisering \u00e4r en metod f\u00f6r att \u00f6verf\u00f6ra arbetsinsatser fr\u00e5n forsknings- och datak\u00e4llstegen, samt aff\u00e4rsprocessdesign, till utvecklingssteget, fr\u00e5n implementeringsperioden till systemutvecklingsperioden.<\/p>\n<p>5. Det \u00e4r rimligt att str\u00e4va efter den tredje normalformen f\u00f6r databaser om:<\/p>\n<ul>\n<li>F\u00f6r\u00e4ndringarna i de automatiserade aff\u00e4rsprocesserna \u00e4r sv\u00e5ra att f\u00f6ruts\u00e4ga.<\/li>\n<li>Det finns en svag djupindelning av arbetsuppgifter inom implementerings- och\/eller utvecklingsteamet.<\/li>\n<li>Systemen som ing\u00e5r i integrationskonturen utvecklas enligt egna planer.<\/li>\n<li>Oenigheter i data kan leda till kund- eller int\u00e4ktsf\u00f6rluster f\u00f6r f\u00f6retaget.<\/li>\n<\/ul>\n<p>\n6. Designen av datamodellen ska utf\u00f6ras av en analytiker endast i samband med modeller av den avsedda aff\u00e4rsprocessen och processen i informationssystemet. Om datamodellen designas av en utvecklare, m\u00e5ste denne f\u00f6rdjupa sig i \u00e4mnesomr\u00e5det i s\u00e5dan grad att denne s\u00e4rskilt kan f\u00f6rst\u00e5 skillnaden mellan v\u00e4rdena f\u00f6r attribut - en n\u00f6dv\u00e4ndig villkor f\u00f6r att identifiera atom\u00e4ra attribut. P\u00e5 s\u00e5 s\u00e4tt tar man p\u00e5 sig funktioner som inte \u00e4r typiska.<\/p>\n<h2>4 Uppgift f\u00f6r illustration.<\/h2>\n<p>\nAnta att du har en liten robotiserad krog i hamnen. Din m\u00e5lmarknad: sj\u00f6m\u00e4n och pirater som g\u00e5r in i hamnen och beh\u00f6ver vila. Till sj\u00f6m\u00e4n s\u00e4ljer du te med timjan, och till piraterna rom och benkam f\u00f6r att kamma sin sk\u00e4gg. Servicen i krogen utf\u00f6rs av en robotv\u00e4rdinna och en robotbartender. Tack vare h\u00f6g kvalitet och l\u00e5ga priser har du tr\u00e4ngt ut alla konkurrenter, s\u00e5 varje person som g\u00e5r iland g\u00e5r till din krog, som \u00e4r den enda i hamnen.<\/p>\n<p>Komplexet av informationssystem f\u00f6r krogen best\u00e5r av f\u00f6ljande programvara: <\/p>\n<ul>\n<li>Ett tidigt varningssystem f\u00f6r kunder som k\u00e4nner igen deras kategori efter karakteristiska drag.<\/li>\n<li>Ett system f\u00f6r att hantera robotv\u00e4rdinnor och robotbartenders.<\/li>\n<li>Ett system f\u00f6r att hantera lager och leveranser till f\u00f6rs\u00e4ljningsst\u00e4llen.<\/li>\n<li>Ett system f\u00f6r att hantera relationer med leverant\u00f6rer (SRM).<\/li>\n<\/ul>\n<p>\nProcess:<\/p>\n<p>Det tidiga varningssystemet k\u00e4nner igen personer som g\u00e5r iland fr\u00e5n b\u00e5ten. Om en person \u00e4r sl\u00e4tbarberad klassas de som sj\u00f6m\u00e4n, medan en person med sk\u00e4gg klassas som pirat.<\/p>\n<p>N\u00e4r g\u00e4sten kliver in i tavernan h\u00f6r de en h\u00e4lsning fr\u00e5n robotv\u00e4rdinnan som \u00e4r anpassad efter deras kategori, till exempel: \"Ho-ho-ho, k\u00e4re pirat, g\u00e5 till bord nr\u2026\"<\/p>\n<p>G\u00e4sten g\u00e5r till den angivna stationen d\u00e4r robotbaren redan har f\u00f6rberett varor f\u00f6r dem enligt kategori. Robotbaren \u00f6verf\u00f6r information till lagersystemet om att n\u00e4sta leverans b\u00f6r \u00f6kas, och lagersystemet utifr\u00e5n lagret formar en ink\u00f6psans\u00f6kan i systemet.<\/p>\n<p>L\u00e5t tidigt varningssystem utvecklas av din interna IT, programmet f\u00f6r att hantera barrobotar skapades av en extern entrepren\u00f6r specifikt f\u00f6r ditt f\u00f6retag. Lagringsystem och leverant\u00f6rers relationshanteringssystem \u00e4r specialanpassade paketl\u00f6sningar fr\u00e5n marknaden.<\/p>\n<h2>5. Exempel p\u00e5 denormalisering och dess p\u00e5verkan p\u00e5 programvaruutveckling<\/h2>\n<p>\nVid utformningen av aff\u00e4rsprocessen sa de tillfr\u00e5gade experterna enigt att pirater \u00f6ver hela v\u00e4rlden dricker rom och kammar sina sk\u00e4gg med benkammar, medan sj\u00f6m\u00e4n dricker te med timjan och alltid \u00e4r v\u00e4lrakade. <\/p>\n<p>En katalog \u00f6ver kundtyper kommer att skapas med tv\u00e5 v\u00e4rden: 1 - pirater, 2 - sj\u00f6m\u00e4n, gemensam f\u00f6r hela f\u00f6retagets informationsram. <\/p>\n<p>Kundens varningssystem sparar omedelbart resultatet av bildbehandlingen som identifierare (ID) av den igenk\u00e4nda kunden och dess typ: sj\u00f6man eller pirat. <\/p>\n<p>ID f\u00f6r den igenk\u00e4nda objekten<br \/>\nKundkategori<\/p>\n<p>100500<br \/>\nPirat<\/p>\n<p>100501<br \/>\nPirat<\/p>\n<p>100502<br \/>\nSj\u00f6man<\/p>\n<p>Vi noterar \u00e5terigen att<\/p>\n<p>1. V\u00e5ra sj\u00f6m\u00e4n \u00e4r faktiskt rakhyvelm\u00e4nniskor<br \/>\n2. V\u00e5ra pirater \u00e4r faktiskt sk\u00e4ggiga personer<\/p>\n<p>Vilka problem m\u00e5ste l\u00f6sas i detta fall f\u00f6r att v\u00e5r struktur ska str\u00e4va efter den tredje normala formen:<\/p>\n<ul>\n<li>brott mot atom\u00e4riteten av attributet - Kundkategori<\/li>\n<li>blandning av den analyserade fakta och slutsatsen i samma tabell <\/li>\n<li>fastst\u00e4lld funktionell beroende mellan attribut av olika entiteter. <\/li>\n<\/ul>\n<p>\nI normaliserad form skulle vi f\u00e5 tv\u00e5 tabeller: <\/p>\n<ul>\n<li>resultatet av igenk\u00e4nning i form av en upps\u00e4ttning fastst\u00e4llda k\u00e4nnetecken,<\/li>\n<\/ul>\n<p><\/p>\n<p>ID f\u00f6r den igenk\u00e4nda objekten<br \/>\nH\u00e5rf\u00e4ste i ansiktet<\/p>\n<p>100500<br \/>\nJa<\/p>\n<p>100501<br \/>\nJa<\/p>\n<p>100502<br \/>\nIngen<\/p>\n<p><\/p>\n<ul>\n<li>resultatet av att best\u00e4mma kundtypen som en till\u00e4mpning av den inbyggda systemlogiken f\u00f6r tolkning av de fastst\u00e4llda k\u00e4nnetecknen<\/li>\n<\/ul>\n<p>ID f\u00f6r den igenk\u00e4nda objekten<br \/>\nID f\u00f6r identifiering<br \/>\nKundkategori<\/p>\n<p>100500<br \/>\n100001<br \/>\nPirat<\/p>\n<p>100501<br \/>\n100002<br \/>\nPirat<\/p>\n<p>100502<br \/>\n100003<br \/>\nSj\u00f6man<\/p>\n<p>Hur kan en normaliserad lagringsorganisation underl\u00e4tta utvecklingen av ett informationssystem? Anta att du pl\u00f6tsligt f\u00e5r nya kunder. L\u00e5t oss s\u00e4ga att det \u00e4r japanska pirater som kanske saknar sk\u00e4gg, men de g\u00e5r runt med en papegoja p\u00e5 axeln, samt milj\u00f6v\u00e4nliga pirater, som l\u00e4tt k\u00e4nns igen p\u00e5 Gretas bl\u00e5 profil p\u00e5 v\u00e4nster br\u00f6st. <\/p>\n<p>Milj\u00f6v\u00e4nliga pirater kan naturligtvis inte anv\u00e4nda benkammar och kr\u00e4ver en motsvarighet av \u00e5tervunnen havsplast.<\/p>\n<p>Du beh\u00f6ver omarbeta programalgoritmerna enligt de nya f\u00f6ruts\u00e4ttningarna. Om normaliseringsreglerna hade f\u00f6ljts, skulle du bara beh\u00f6va komplettera ing\u00e5ngarna f\u00f6r vissa processgrenar i vissa system och skapa nya grenar endast f\u00f6r de fall och i de informationssystem d\u00e4r ansiktsh\u00e5r \u00e4r relevant. Men eftersom reglerna inte f\u00f6ljdes, m\u00e5ste du analysera hela koden inom hela systemet d\u00e4r v\u00e4rden fr\u00e5n kundtypregister anv\u00e4nds och entydigt fastst\u00e4lla att i ett fall b\u00f6r algoritmen ta h\u00e4nsyn till kundens yrkesverksamhet, medan i ett annat fall b\u00f6r den beakta fysiska egenskaper. <\/p>\n<p>I den form som <b><i>str\u00e4var <\/i><\/b>efter normalisering, skulle vi ha f\u00e5tt tv\u00e5 tabeller med operativa data och tv\u00e5 register:<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/qn\/pq\/g4\/qnpqg4idbhbsqejhnryzfuilhhy.png\"><img decoding=\"async\" alt=\"Denormalisering av ERP-databaser och dess p\u00e5verkan p\u00e5 mjukvaruutveckling: vi \u00f6ppnar en tavern p\u00e5 Tortuga\" src=\"\/wp-content\/uploads\/2020\/04\/eea87da839171e8a3a42db0618972124.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<ul>\n<li>resultatet av igenk\u00e4nning i form av en upps\u00e4ttning fastst\u00e4llda k\u00e4nnetecken,<\/li>\n<\/ul>\n<p><\/p>\n<p>ID f\u00f6r den igenk\u00e4nda objekten<br \/>\nGreta p\u00e5 v\u00e4nster br\u00f6st<br \/>\nF\u00e5gel p\u00e5 axeln<br \/>\nH\u00e5rf\u00e4ste i ansiktet<\/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>resultatet av att best\u00e4mma kundtyp (l\u00e5t detta vara anv\u00e4ndarens visning, d\u00e4r beskrivningar fr\u00e5n registren visas)<\/li>\n<\/ul>\n<p>\nBetyder den uppt\u00e4ckta denormaliseringen att systemen inte kan anpassas till de nya villkoren? Sj\u00e4lvklart inte. Om vi antar att alla informationssystem skapades av ett team med noll personaloms\u00e4ttning, att utvecklingen \u00e4r v\u00e4l dokumenterad och att informationen i teamet \u00f6verf\u00f6rs utan f\u00f6rluster, kan de n\u00f6dv\u00e4ndiga f\u00f6r\u00e4ndringarna g\u00f6ras med f\u00f6rsumbara insatser. Men om vi \u00e5terv\u00e4nder till de ursprungliga f\u00f6ruts\u00e4ttningarna f\u00f6r uppgiften, skulle en och en halv tangentbord g\u00e5 \u00e5t f\u00f6r att skriva protokollen f\u00f6r gemensamma diskussioner och ytterligare ett halvt f\u00f6r att utforma upphandlingsprocesserna.<\/p>\n<p>I exemplet ovan har alla tre normala former bryts, l\u00e5t oss f\u00f6rs\u00f6ka bryta dem separat.<\/p>\n<p><b>Brott mot den f\u00f6rsta normala formen:<\/b><\/p>\n<p>Anta att varor levereras till ditt lager fr\u00e5n leverant\u00f6rernas lager via en 1,5 tons sk\u00e5pbil som tillh\u00f6r ditt v\u00e4rdshus. Storleken p\u00e5 dina best\u00e4llningar \u00e4r s\u00e5 liten i f\u00f6rh\u00e5llande till leverant\u00f6rernas oms\u00e4ttning att de alltid utf\u00f6rs exakt utan v\u00e4ntan p\u00e5 tillverkning. Kr\u00e4vs det separata tabeller f\u00f6r detta fl\u00f6de: fordon, typer av fordon, beh\u00f6ver ni separera plan och verklighet i era best\u00e4llningar som skickats till leverant\u00f6rerna?<\/p>\n<p>T\u00e4nk bara p\u00e5 hur m\u00e5nga \"\u00f6verskott\"-anslutningar som dina programmerare m\u00e5ste skriva om ni anv\u00e4nder modellen nedan f\u00f6r att utveckla programmet.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/bz\/js\/gf\/bzjsgfs0fephwjwqx8xdvunrgva.png\"><img decoding=\"async\" alt=\"Denormalisering av ERP-databaser och dess p\u00e5verkan p\u00e5 mjukvaruutveckling: vi \u00f6ppnar en tavern p\u00e5 Tortuga\" src=\"\/wp-content\/uploads\/2020\/04\/7309871d1ecc5c1ceb4f077ea4afebff.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p>Anta att vi har kommit fram till att den f\u00f6reslagna strukturen \u00e4r alltf\u00f6r komplicerad, att separera plan och verklighet vid best\u00e4llningsregistreringen \u00e4r \u00f6verfl\u00f6dig information, och att den framtagna best\u00e4llningsspecifikationen skrivs om baserat p\u00e5 resultatet av mottagningen av den ankommande varan, s\u00e4llsynta felaktigheter och varor av underm\u00e5lig kvalitet hanteras utanf\u00f6r informationssystemet.<br \/>\nOch en dag ser du hur hela salen i v\u00e4rdshuset \u00e4r fylld av uppr\u00f6rda och ov\u00e5rdade pirater. Vad har h\u00e4nt? <\/p>\n<p>Det visade sig att n\u00e4r ditt f\u00f6retag v\u00e4xte, v\u00e4xte ocks\u00e5 konsumtionen. N\u00e5gon g\u00e5ng fattades det ett ledningsbeslut att om sk\u00e5pbilen blev \u00f6verlastad med volym och\/eller vikt, vilket h\u00e4nde ytterst s\u00e4llan, prioriterade leverant\u00f6ren lastningen till f\u00f6rdel f\u00f6r drycker. <\/p>\n<p>Underlevererat gods hamnade i n\u00e4sta best\u00e4llning och skickades iv\u00e4g i en ny tur, medan det tillg\u00e4ngliga underlaget p\u00e5 lagret vid v\u00e4rdshuset m\u00f6jliggjorde att man kunde ignorera de bortfallna fallen.<\/p>\n<p>I hamnen st\u00e4ngde den sista konkurrenten, och det bortfallna fallet av \u00f6verlastning av sk\u00e5pbilen, som undvikits genom prioritering baserad p\u00e5 antagandet om tillr\u00e4ckligt 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\u00f6jligheten att sp\u00e5ra systematisk misslyckande med planerade best\u00e4llningar. Endast en skadad rykte och missn\u00f6jda kunder kan uppt\u00e4cka problemet.<\/p>\n<p>Uppm\u00e4rksam l\u00e4sare har nog m\u00e4rkt att den best\u00e4llda kvantiteten i best\u00e4llningsspecifikationen (T_ORDER_SPEC) i avsnitt 2 och avsnitt 5 kan motsvara eller inte motsvara kraven i den f\u00f6rsta normalformen. Det beror helt p\u00e5 om olika enheter av m\u00e5tt kan falla in i samma f\u00e4lt med det valda sortimentet av varor. <\/p>\n<p><b>\u00d6vertr\u00e4delser av den andra normalformen:<\/b><\/p>\n<p>N\u00e4r dina behov v\u00e4xer skaffar du ytterligare n\u00e5gra transportmedel i olika storlekar. I den beskrivna kontexten har skapandet av en transportmedelsregistrering bed\u00f6mts som \u00f6verfl\u00f6dig, vilket g\u00f6r att alla algoritmer som arbetar med data och st\u00f6der leverans- och lagringsbehov uppfattar lastens flyttning fr\u00e5n leverant\u00f6ren till lagret som en transport av endast en 1,5 tons sk\u00e5pbil. S\u00e5, tillsammans med k\u00f6pet av nya transportmedel skapar du \u00e4nd\u00e5 en transportmedelsregistrering, men vid vidareutvecklingen m\u00e5ste du analysera all kod som refererar till lastens flyttning f\u00f6r att ta reda p\u00e5 om det i varje specifikt fall syftas p\u00e5 egenskaperna hos just det fordonet som verksamheten b\u00f6rjade med.<\/p>\n<p><b>\u00d6vertr\u00e4delser av den tredje normalformen:<\/b><\/p>\n<p>Vid n\u00e5got tillf\u00e4lle b\u00f6rjar du skapa ett lojalitetsprogram, och det skapas en post f\u00f6r en \u00e5terkommande kund. Varf\u00f6r, till exempel, sl\u00f6sa tid p\u00e5 att skapa materiella representationer som lagrar aggregerade uppgifter om f\u00f6rs\u00e4ljning f\u00f6r en enskild kund f\u00f6r att anv\u00e4nda i rapportering och \u00f6verf\u00f6ring till analytiska system, n\u00e4r allt som intresserar kunden i b\u00f6rjan av lojalitetsprogrammet kan l\u00e4ggas p\u00e5 sj\u00e4lva kundposten? Och, verkligen, verkar det till en b\u00f6rjan vara meningsl\u00f6st. Men varje g\u00e5ng ditt f\u00f6retag ansluter till exempel nya f\u00f6rs\u00e4ljningskanaler, b\u00f6r det finnas n\u00e5gon bland era analytiker som p\u00e5minner om att det finns en s\u00e5dan aggregeringsattribut. <\/p>\n<p>N\u00e4r du designar varje ny process, s\u00e4g, f\u00f6rs\u00e4ljning p\u00e5 internet, f\u00f6rs\u00e4ljning genom distribut\u00f6rer kopplade till det gemensamma lojalitetssystemet, m\u00e5ste n\u00e5gon h\u00e5lla i \u00e5tanke att alla nya processer m\u00e5ste s\u00e4kerst\u00e4lla dataintegritet p\u00e5 kodniv\u00e5. F\u00f6r en industriell databas med tusentals tabeller verkar detta vara en sv\u00e5rgenomf\u00f6rbar uppgift.<\/p>\n<p>En erfaren utvecklare vet s\u00e5klart hur man \u00e5tg\u00e4rdar de ovan n\u00e4mnda problemen, men enligt min mening \u00e4r det en erfaren analytikers uppgift att f\u00f6rhindra att de uppst\u00e5r.<\/p>\n<p>Jag vill uttrycka mitt tack f\u00f6r den v\u00e4rdefulla feedbacken vid f\u00f6rberedelsen av publikationen till huvudutvecklaren Evgenij Jaruhin.<\/p>\n<h2>Litteratur<\/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. Databaser. Design, implementation och underh\u00e5ll. Teori och praktik.<br \/>\n<br \/>K\u00e4lla: <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.4 - 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\/sv\/blog\/administrirovanie\/denormalizacziya-baz-dannyh-erp-sistem-i-ee-vliyanie-na-razvitie-po-otkryvaem-tavernu-na-tortuge\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"sv_SE\" \/>\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\/sv\/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\udd47Denormalisering av databaser i ERP-system och dess p\u00e5verkan p\u00e5 programvaruutveckling: \u00f6ppnar en taverna p\u00e5 Tortuga | ProHoster","description":"Hej! Jag heter Andrey Semenov och jag \u00e4r senioranalytiker p\u00e5 Sportmaster. I det h\u00e4r inl\u00e4gget vill jag ta upp fr\u00e5gan om denormalisering av databaser i ERP-system.","canonical_url":"https:\/\/prohoster.info\/sv\/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":"sv_SE","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\/sv\/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\/sv\/wp-json\/wp\/v2\/posts\/78198","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/comments?post=78198"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts\/78198\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/media\/78199"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/media?parent=78198"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/categories?post=78198"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/tags?post=78198"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}