{"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\/de\/blog\/administrirovanie\/denormalizacziya-baz-dannyh-erp-sistem-i-ee-vliyanie-na-razvitie-po-otkryvaem-tavernu-na-tortuge","title":{"rendered":"Denormalisierung von Datenbanken in ERP-Systemen und ihre Auswirkungen auf die Softwareentwicklung: Wir \u00f6ffnen eine Taverne in Tortuga","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Hallo! Mein Name ist Andrei Semenov, ich bin Senior Analyst bei Sportmaster. In diesem Beitrag m\u00f6chte ich das Thema der Denormalisierung von Datenbanken in ERP-Systemen ansprechen. Wir werden die allgemeinen Bedingungen sowie ein konkretes Beispiel betrachten \u2014 nehmen wir eine gro\u00dfartige Monopol-Taverne f\u00fcr Piraten und Seeleute. In dieser Taverne m\u00fcssen Piraten und Seeleute unterschiedlich bedient werden, da sich ihre Vorstellungen von Sch\u00f6nheit und ihr Konsumverhalten erheblich unterscheiden. <\/p>\n<p>Wie kann man alle zufriedenstellen? Wie bleibt man bei der Gestaltung und Wartung eines solchen Systems psychisch stabil? Was ist zu tun, wenn in die Taverne nicht nur die gewohnten Piraten und Seeleute kommen?<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/sportmaster_lab\/blog\/497550\/\"><img decoding=\"async\" alt=\"Denormalisierung von Datenbanken in ERP-Systemen und ihre Auswirkungen auf die Softwareentwicklung: Wir \u00f6ffnen eine Taverne in Tortuga\" src=\"\/wp-content\/uploads\/2020\/04\/bd0ccbfa3e3649aac20631e09fcb5b16.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p>Alles weiter unten. Aber lassen Sie uns der Reihe nach vorgehen.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>1. Einschr\u00e4nkungen und Annahmen<\/h2>\n<p>\nAlles hier Gesagte bezieht sich nur auf relationale Datenbanken. Die im Internet gut dokumentierten Folgen der Denormalisierung in Form von Anomalien bei Modifikationen, L\u00f6schungen und Einf\u00fcgungen werden nicht behandelt. Aus diesem Beitrag ausgeschlossen sind F\u00e4lle, in denen Denormalisierung eine g\u00e4ngige Praxis ist, mit klassischen Beispielen wie Serien- und Ausweisnummern, Datum und Uhrzeit usw.<\/p>\n<p>Im Beitrag werden intuitive und praktisch anwendbare Definitionen der Normalformen verwendet, ohne auf mathematische Begriffe zu verweisen. In der Form, wie sie auf die Untersuchung realer Gesch\u00e4ftsprozesse (BP) und die Entwicklung industrieller Software angewendet werden k\u00f6nnen.<\/p>\n<p>Es gibt die Meinung, dass das Design von Data Warehouses, Tools f\u00fcr die Berichtserstellung und Integrationsvereinbarungen (in denen eine tabellarische Darstellung von Informationen verwendet wird) sich von der Gestaltung von ERP-Datenbanken dadurch unterscheidet, dass der Nutzungskomfort und die Anwendung bewusster Denormalisierung Priorit\u00e4t vor dem Schutz der Datenintegrit\u00e4t haben k\u00f6nnen. Ich teile diese Ansicht und das Folgende bezieht sich ausschlie\u00dflich auf Modelle f\u00fcr Master-Daten und Transaktionsdaten in ERP-Systemen.<\/p>\n<p>Die Erkl\u00e4rung der Normalformen wird anhand eines Beispiels gegeben, das f\u00fcr die meisten Leser auf allt\u00e4glichem Niveau verst\u00e4ndlich ist. Als anschauliche Illustration wurde jedoch in den Punkten 4-5 bewusst eine betont \u201eerfundene\u201c Aufgabe verwendet. Andernfalls, wenn man ein g\u00e4ngiges Beispiel wie das im Punkt 2 genannte Bestellmodell heranzieht, kann man in eine Situation geraten, in der der Fokus der Aufmerksamkeit des Lesers von der vorgeschlagenen Zerlegung des Prozesses in ein Modell auf pers\u00f6nliche Erfahrungen und Wahrnehmungen verschoben wird, wie Prozesse und Datenmodelle in Informationssystemen aufgebaut sein sollten. Mit anderen Worten, nehmen Sie zwei qualifizierte IT-Analysten: Der eine bietet Dienstleistungen f\u00fcr Logistiker, die Passagiere transportieren, der andere f\u00fcr Logistiker, die Maschinen f\u00fcr die Mikrochipherstellung transportieren. Bitten Sie sie, ohne vorherige Absprache automatisierbare Gesch\u00e4ftsprozesse, ein Datenmodell zur Speicherung von Informationen \u00fcber einen Zugfahrt zu erstellen. <\/p>\n<p>Es besteht eine nicht unerhebliche Wahrscheinlichkeit, dass Sie in den vorgeschlagenen Modellen nicht nur deutlich unterschiedliche Attributsammlungen finden, sondern auch nicht \u00fcbereinstimmende Entit\u00e4tssammlungen, weil jeder Analyst sich auf die f\u00fcr ihn gewohnten Prozesse und Aufgaben st\u00fctzt. Und in einer solchen Situation zu sagen, welches Modell \u201erichtig\u201c ist, ist unm\u00f6glich, da es kein Bewertungskriterium gibt.<\/p>\n<h2>2. Normalformen<\/h2>\n<p>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/mz\/vc\/ex\/mzvcexxqfzhzyybzk8zvbndmtcc.png\"><img decoding=\"async\" alt=\"Denormalisierung von Datenbanken in ERP-Systemen und ihre Auswirkungen auf die Softwareentwicklung: Wir \u00f6ffnen eine Taverne in Tortuga\" src=\"\/wp-content\/uploads\/2020\/04\/e2d3fc5656b59671648511b0a0e5f7b9.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p><b>Die erste Normalform einer Datenbank<\/b> verlangt die Atomarit\u00e4t aller Attribute. <br \/>\nInsbesondere, wenn ein Objekt A nicht-Schl\u00fcsselattribute a und b hat, sodass c=f(a,b) und in der Tabelle, die Objekt A beschreibt, der Wert des Attributs c gespeichert wird, dann ist die erste Normalform in der Datenbank verletzt. Zum Beispiel, wenn in der Auftragspezifikation die Menge angegeben wird, deren Ma\u00dfeinheit vom Warentyp abh\u00e4ngt: In einem Fall kann es sich um St\u00fccke handeln, im anderen um Liter, im dritten um Verpackungen, die aus St\u00fcckzahlen bestehen (in dem obigen Modell Good_count_WR), dann ist die Atomarit\u00e4t der Attribute in der Datenbank verletzt. Um zu sagen, wie die Tabelle in der Auftragspezifikation aussehen sollte, ben\u00f6tigt man eine zielgerichtete Beschreibung des Arbeitsprozesses im Informationssystem, und da die Prozesse unterschiedlich sein k\u00f6nnen, kann es also viele \u201erichtige\u201c Versionen geben.<\/p>\n<p><b>Die zweite Normalform einer Datenbank<\/b> erfordert die Einhaltung der ersten Normalform und eine eigene Tabelle f\u00fcr jede Entit\u00e4t, die zum Arbeitsprozess im IS geh\u00f6rt. Wenn in einer Tabelle Abh\u00e4ngigkeiten mit f1(a) und d=f2(b) vorhanden sind und es keine Abh\u00e4ngigkeit mit f3(b) gibt, dann ist die zweite Normalform in der Tabelle verletzt. Im obigen Beispiel gibt es in der Tabelle \u201eBestellung\u201c keine Abh\u00e4ngigkeit zwischen der Bestellung und der Adresse. \u00c4ndern Sie den Stra\u00dfennamen oder die Stadt, und es hat keine Auswirkungen auf die wesentlichen Attribute der Bestellung. <\/p>\n<p><b>Dritte Normalform der DB<\/b> erfordert die Einhaltung der zweiten Normalform und das Fehlen funktionaler Abh\u00e4ngigkeiten zwischen Attributen verschiedener Entit\u00e4ten. Diese Regel kann so formuliert werden: \u201eAlles, was berechnet werden kann, sollte berechnet werden\u201c. Mit anderen Worten, wenn zwei Objekte A und B existieren. In der Tabelle, die die Attribute des Objekts A speichert, ist das Attribut C vorhanden, und das Objekt B hat ein Attribut b, sodass c=f4(b) existiert, dann ist die dritte Normalform verletzt. Im folgenden Beispiel strebt das Attribut \u201eAnzahl der St\u00fccke\u201c (Total_count_WR) im Bestellposten offensichtlich an, die dritte Normalform zu verletzen.<\/p>\n<h2>3. Mein Ansatz zur Anwendung der Normalisierung<\/h2>\n<p>\n1. Nur der zielgerichtete automatisierbare Gesch\u00e4ftsprozess kann den Analysten mit Kriterien zur Identifizierung von Entit\u00e4ten und Attributen bei der Erstellung eines Datenmodell-Storage-Systems versorgen. Die Erstellung eines Prozessmodells ist eine notwendige Bedingung f\u00fcr die Schaffung eines Normalen Datenmodells.<\/p>\n<p>2. Das Erreichen der dritten Normalform im strengen Sinne kann in der realen Praxis der Erstellung von ERP-Systemen unpraktisch sein, wenn teilweise oder vollst\u00e4ndig die folgenden Bedingungen erf\u00fcllt sind:<\/p>\n<ul>\n<li>automatisierte Prozesse selten Ver\u00e4nderungen unterliegen, <\/li>\n<li>die Fristen f\u00fcr Forschung und Entwicklung eng sind, <\/li>\n<li>die Anforderungen an die Datenintegrit\u00e4t bedingt niedrig sind (potentielle Fehler in kommerzieller Software f\u00fchren nicht zum Verlust von Geld oder Kunden f\u00fcr den Softwareauftraggeber).<\/li>\n<li>Zertifikate mit kubeadm<\/li>\n<\/ul>\n<p>\nUnter den beschriebenen Bedingungen k\u00f6nnen die Kosten f\u00fcr die Identifizierung und Beschreibung des Lebenszyklus bestimmter Objekte und deren Attribute aus wirtschaftlicher Sicht m\u00f6glicherweise nicht gerechtfertigt sein.<\/p>\n<p>3. Jedes Ergebnis der Denormalisierung eines bereits erstellten Datenmodells im IS kann durch sorgf\u00e4ltige Voruntersuchung des Codes und Tests abgemildert werden.<\/p>\n<p>4. Denormalisierung ist ein Weg, um den Arbeitsaufwand von der Phase der Datenquellenforschung und der Gesch\u00e4ftsprozessgestaltung in die Entwicklungsphase zu verlagern, vom Implementierungszeitraum in die Entwicklungsphase des Systems.<\/p>\n<p>5. Es ist sinnvoll, auf die dritte normale Form der Datenbank hinzuarbeiten, wenn:<\/p>\n<ul>\n<li>Die Richtung der zu automatisierenden Gesch\u00e4ftsprozesse ist schwer vorhersehbar.<\/li>\n<li>Innerhalb des Implementierungs- und\/oder Entwicklungsteams gibt es eine schwache Arbeitsteilung.<\/li>\n<li>Die Systeme im Integrationskreis entwickeln sich nach eigenen Pl\u00e4nen.<\/li>\n<li>Diskrepanzen in den Daten k\u00f6nnen dazu f\u00fchren, dass das Unternehmen Kunden oder Geld verliert.<\/li>\n<\/ul>\n<p>\n6. Die Datenmodellierung sollte nur im Zusammenhang mit den Modellen des Zielgesch\u00e4ftsprozesses und des Prozesses in der IS durch einen Analysten durchgef\u00fchrt werden. Wenn die Datenmodellierung von einem Entwickler vorgenommen wird, muss dieser sich so intensiv mit dem Fachbereich auseinandersetzen, dass er unter anderem die Unterschiede zwischen den Werten der Attribute versteht \u2013 eine notwendige Bedingung f\u00fcr die Identifizierung atomarer Attribute. Damit \u00fcbernimmt er Funktionen, die ihm nicht zukommen.<\/p>\n<h2>4 Aufgabe zur Veranschaulichung<\/h2>\n<p>\nAngenommen, Sie haben eine kleine robotergest\u00fctzte Taverne im Hafen. Ihr Marktsegment: Seeleute und Piraten, die in den Hafen kommen und eine Auszeit ben\u00f6tigen. Den Seeleuten verkaufen Sie Thymiantee, den Piraten Rum und Knochenschn\u00e4bel zum K\u00e4mmen ihres Bartes. Der Service in der Taverne wird von einem Roboter-Hostess und einem Roboter-Barkeeper \u00fcbernommen. Durch die hohe Qualit\u00e4t und die niedrigen Preise haben Sie alle Konkurrenten verdr\u00e4ngt, sodass jeder, der von Bord kommt, in Ihre Taverne kommt, die die einzige im Hafen ist.<\/p>\n<p>Das Informationssystem der Taverne besteht aus folgender Software: <\/p>\n<ul>\n<li>Ein System zur Fr\u00fcherkennung von Kunden, das deren Kategorie anhand charakteristischer Merkmale erkennt.<\/li>\n<li>Ein System zur Steuerung der Roboter-Hostess und Roboter-Barkeeper.<\/li>\n<li>Ein System zur Verwaltung von Lager und Lieferung an den Verkaufsort.<\/li>\n<li>Ein System zur Verwaltung der Beziehungen zu Lieferanten (SRM).<\/li>\n<\/ul>\n<p>\nProzess:<\/p>\n<p>Das Fr\u00fcherkennungssystem erkennt Personen, die von Bord gehen. Wenn eine Person glatt rasiert ist, wird sie als Seemann identifiziert; wenn eine Person einen Bart hat, wird sie als Pirat erkannt.<\/p>\n<p>Betritt der Gast die Taverne, h\u00f6rt er vom Roboter-Hostess eine Begr\u00fc\u00dfung, die seiner Kategorie entspricht, zum Beispiel: \u201eHo-ho-ho, gesch\u00e4tzter Pirat, bitte nehmen Sie Platz am Tisch Nr.&#8230;\u201c<\/p>\n<p>Der Gast geht zu dem angegebenen Tisch, an dem der Roboter-Barkeeper bereits die Waren entsprechend der Kategorie vorbereitet hat. Der Roboter-Barkeeper \u00fcbertr\u00e4gt Informationen an das Lagerverwaltungssystem, dass die n\u00e4chste Lieferung erh\u00f6ht werden soll, und das Lagerverwaltungssystem erstellt basierend auf den Vorr\u00e4ten einen Beschaffungsantrag im ERP-System.<\/p>\n<p>Angenommen, das Fr\u00fchwarnsystem wurde von Ihrer internen IT-Abteilung entwickelt, das Programm zur Verwaltung von Barkeeper-Robotern wurde von einem externen Auftragnehmer speziell f\u00fcr Ihr Unternehmen erstellt. Die Systeme zur Lagerverwaltung und f\u00fcr die Lieferantenbeziehungen sind angepasst, kommerzielle L\u00f6sungen vom Markt.<\/p>\n<h2>5. Beispiele f\u00fcr Denormalisierung und deren Einfluss auf die Softwareentwicklung<\/h2>\n<p>\nBei der Gestaltung des Gesch\u00e4ftsprozesses erkl\u00e4rten die befragten Fachexperten einstimmig, dass Piraten weltweit Rum trinken und sich mit Knochenschn\u00e4uzern die B\u00e4rte k\u00e4mmen, w\u00e4hrend Seefahrer Tee mit Thymian trinken und immer glatt rasiert sind. <\/p>\n<p>Ein Verzeichnis von Kundentypen erscheint mit zwei Werten: 1- Piraten, 2 - Seefahrer, das f\u00fcr den gesamten Informationsbereich des Unternehmens gilt. <\/p>\n<p>Das Benachrichtigungssystem \u00fcber Kunden speichert sofort das Ergebnis der Bildverarbeitung als Identifikator (ID) des erkannten Kunden und seines Typs: Seefahrer oder Pirat. <\/p>\n<p>ID des erkannten Objekts<br \/>\nKundekategorie<\/p>\n<p>100500<br \/>\nPirat<\/p>\n<p>100501<br \/>\nPirat<\/p>\n<p>100502<br \/>\nSeefahrer<\/p>\n<p>Lassen Sie uns noch einmal darauf hinweisen, dass<\/p>\n<p>1. Unsere Seefahrer tats\u00e4chlich rasierte Menschen sind<br \/>\n2. Unsere Piraten tats\u00e4chlich b\u00e4rtige Menschen sind<\/p>\n<p>Welche Probleme in diesem Fall gel\u00f6st werden m\u00fcssen, damit unsere Struktur zur dritten Normalform strebt:<\/p>\n<ul>\n<li>Versto\u00df gegen die Atomarit\u00e4t des Attributes \u2013 Kundekategorie<\/li>\n<li>Vermischung von analysierten Fakten und Ergebnissen in einer Tabelle <\/li>\n<li>Funktionale Abh\u00e4ngigkeiten zwischen Attributen verschiedener Entit\u00e4ten sind festgelegt. <\/li>\n<\/ul>\n<p>\nIn normalisierter Form h\u00e4tten wir zwei Tabellen erhalten: <\/p>\n<ul>\n<li>Ergebnis der Erkennung in Form eines Sets von festgelegten Merkmalen,<\/li>\n<\/ul>\n<p><\/p>\n<p>ID des erkannten Objekts<br \/>\nGesichtsbehaarung<\/p>\n<p>100500<br \/>\nJa<\/p>\n<p>100501<br \/>\nJa<\/p>\n<p>100502<br \/>\nNein<\/p>\n<p><\/p>\n<ul>\n<li>Ergebnis der Bestimmung des Kundentyps als Anwendung der in der Informationssystemlogik eingebetteten Logik zur Interpretation der festgelegten Merkmale<\/li>\n<\/ul>\n<p>ID des erkannten Objekts<br \/>\nID der Identifikation<br \/>\nKundekategorie<\/p>\n<p>100500<br \/>\n100001<br \/>\nPirat<\/p>\n<p>100501<br \/>\n100002<br \/>\nPirat<\/p>\n<p>100502<br \/>\n100003<br \/>\nSeefahrer<\/p>\n<p>Wie kann eine normierte Datenorganisation die Entwicklung eines Informationssystems erleichtern? Angenommen, pl\u00f6tzlich haben Sie neue Kunden. Nehmen wir an, es handelt sich um japanische Piraten, die vielleicht keinen Bart haben, aber mit einem Papagei auf der Schulter herumlaufen, und um umweltbewusste Piraten, die Sie leicht an dem blauen Profil von Greta auf der linken Brust erkennen werden. <\/p>\n<p>Umweltbewusste Piraten d\u00fcrfen nat\u00fcrlich keine K\u00e4mme aus Knochen verwenden und fordern eine Alternative aus recyceltem Meeresplastik.<\/p>\n<p>Sie m\u00fcssen die Arbeitsalgorithmen der Programme gem\u00e4\u00df den neuen Vorgaben \u00fcberarbeiten. Wenn die Normalisierungsregeln umgesetzt worden w\u00e4ren, m\u00fcssten Sie lediglich in einigen Systemen die Eingaben f\u00fcr bestimmte Prozesszweige erg\u00e4nzen und nur dann neue Zweige schaffen, wenn es um Gesichtshaare in bestimmten Informationssystemen geht. Da die Regeln jedoch nicht umgesetzt wurden, m\u00fcssen Sie den gesamten Code analysieren, wo Werte aus dem Verzeichnis der Kundentypen verwendet werden, und eindeutig feststellen, dass in einem Fall der Algorithmus die berufliche T\u00e4tigkeit des Kunden und im anderen Fall die k\u00f6rperlichen Merkmale ber\u00fccksichtigen muss. <\/p>\n<p>In der Form, die <b><i>verstehen wollen <\/i><\/b>normiert ist, h\u00e4tten wir zwei Tabellen mit Betrieb Daten und zwei Verzeichnisse erhalten:<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/qn\/pq\/g4\/qnpqg4idbhbsqejhnryzfuilhhy.png\"><img decoding=\"async\" alt=\"Denormalisierung von Datenbanken in ERP-Systemen und ihre Auswirkungen auf die Softwareentwicklung: Wir \u00f6ffnen eine Taverne in Tortuga\" src=\"\/wp-content\/uploads\/2020\/04\/eea87da839171e8a3a42db0618972124.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<ul>\n<li>Ergebnis der Erkennung in Form eines Sets von festgelegten Merkmalen,<\/li>\n<\/ul>\n<p><\/p>\n<p>ID des erkannten Objekts<br \/>\nGreta auf der linken Brust<br \/>\nVogel auf der Schulter<br \/>\nGesichtsbehaarung<\/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>Ergebnis der Typbestimmung des Kunden (nehmen wir an, es handelt sich um eine Benutzeransicht, in der Beschreibungen aus den Verzeichnissen angezeigt werden)<\/li>\n<\/ul>\n<p>\nBedeutet die festgestellte Denormalisierung, dass die Systeme nicht an neue Bedingungen angepasst werden k\u00f6nnen? Nein, nat\u00fcrlich nicht. Wenn man sich vorstellt, dass alle Informationssysteme von einem Team mit null Mitarbeiterfluktuation erstellt wurden, die Entwicklungen gut dokumentiert sind und die Informationen im Team ohne Verlust weitergegeben werden, k\u00f6nnen die erforderlichen \u00c4nderungen mit vernachl\u00e4ssigbaren Arbeitsaufwendungen durchgef\u00fchrt werden. Aber wenn wir zu den urspr\u00fcnglichen Bedingungen der Aufgabe zur\u00fcckkehren, dann w\u00fcrden allein f\u00fcr den Druck der Protokolle gemeinsamer Diskussionen 1,5 Tastaturen draufgehen und weitere 0,5 f\u00fcr die Erstellung der Beschaffungsverfahren.<\/p>\n<p>Im obigen Beispiel wurden alle drei Normalformen verletzt; lassen Sie uns versuchen, sie einzeln zu verletzen.<\/p>\n<p><b>Versto\u00df gegen die erste Normalform:<\/b><\/p>\n<p>Angenommen, Waren werden mit einem 1,5-Tonnen-Transporter, der Ihrer Taverne geh\u00f6rt, von den Lagern der Lieferanten abholt. Die Gr\u00f6\u00dfe Ihrer Bestellungen ist im Vergleich zu den Lieferantenums\u00e4tzen so gering, dass sie immer eins zu eins ohne Wartezeit auf die Herstellung ausgef\u00fchrt werden. Sind bei einer solchen Gesch\u00e4ftspraxis separate Tabellen erforderlich: Fahrzeuge, Fahrzeugtypen? Ist es notwendig, Plan und Ist in Ihren an die Lieferanten gesendeten Bestellungen zu trennen?<\/p>\n<p>Stellen Sie sich nur vor, wie viele \"\u00fcberfl\u00fcssige\" Verbindungen Ihre Programmierer schreiben m\u00fcssten, wenn sie das Modell unten f\u00fcr die Programmentwicklung verwenden.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/bz\/js\/gf\/bzjsgfs0fephwjwqx8xdvunrgva.png\"><img decoding=\"async\" alt=\"Denormalisierung von Datenbanken in ERP-Systemen und ihre Auswirkungen auf die Softwareentwicklung: Wir \u00f6ffnen eine Taverne in Tortuga\" src=\"\/wp-content\/uploads\/2020\/04\/7309871d1ecc5c1ceb4f077ea4afebff.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p>Angenommen, wir haben beschlossen, dass die vorgeschlagene Struktur \u00fcberm\u00e4\u00dfig kompliziert ist. F\u00fcr unseren Fall ist es \u00fcberfl\u00fcssig, Plan und Ist bei der Bestellung zu trennen, und die erstellte Bestellspezifikation wird nach den Ergebnissen der Warenannahme \u00fcberschrieben. Seltene Nachsortierung und das Eintreffen von mangelhafter Ware werden au\u00dferhalb des Informationssystems geregelt.<br \/>\nUnd eines Tages sehen Sie, dass der gesamte Saal der Taverne mit emp\u00f6rten und ungepflegten Piraten gef\u00fcllt ist. Was ist passiert? <\/p>\n<p>Es stellte sich heraus, dass mit dem Wachstum Ihres Unternehmens auch der Verbrauch gestiegen ist. Fr\u00fcher gab es eine Managemententscheidung, dass wenn der Transporter bei Volumen und\/oder Gewicht \u00fcberlastet war, was sehr selten vorkam, der Lieferant die Beladung zugunsten der Getr\u00e4nke priorisierte. <\/p>\n<p>Unterbeladene Ware gelangte in die n\u00e4chste Bestellung und wurde in einer neuen Fahrt verschickt. Das Vorhandensein eines nicht reduzierbaren Bestandes im Lager bei der Taverne erlaubte es, die ausgebliebenen F\u00e4lle nicht zu bemerken.<\/p>\n<p>Im Hafen hat der letzte Konkurrent geschlossen, und der ausgebliebene Fall der \u00dcberlastung des Transporters, der bei der Priorisierung umgangen wurde, beruhte auf der Annahme ausreichender nicht reduzierbarer Best\u00e4nde und der gelegentlichen Unterladung des Fahrzeugs, wurde zur g\u00e4ngigen Praxis. Das erstellte System wird perfekt entsprechend den darin implementierten Algorithmen arbeiten und wird v\u00f6llig unf\u00e4hig sein, die systematische Nichterf\u00fcllung der Bestellungen nachzuvollziehen. Nur ein besch\u00e4digter Ruf und unzufriedene Kunden k\u00f6nnen das Problem aufdecken.<\/p>\n<p>Aufmerksame Leser haben wahrscheinlich bemerkt, dass die bestellte Menge in der Bestellungsspezifikation (T_ORDER_SPEC) in Abschnitt 2 und Abschnitt 5 m\u00f6glicherweise den Anforderungen der ersten normalen Form entspricht oder auch nicht. Das h\u00e4ngt davon ab, ob bei der gew\u00e4hlten Produktpalette unterschiedliche Ma\u00dfeinheiten im selben Feld eingetragen werden k\u00f6nnen. <\/p>\n<p><b>Versto\u00df gegen die zweite normale Form:<\/b><\/p>\n<p>Mit wachsendem Bedarf erwerben Sie ein paar Transportmittel verschiedener Gr\u00f6\u00dfen. Im oben genannten Kontext wurde festgestellt, dass die Erstellung eines Verzeichnisses der Transportmittel \u00fcberfl\u00fcssig ist. Daher betrachten alle Algorithmen, die den Liefer- und Lagerbed\u00fcrfnissen dienen, den Transport von Waren vom Anbieter zum Lager als einen einzigen 1,5-Tonnen-Lieferfahrzeug-Fahrt. Also erstellen Sie zusammen mit dem Kauf neuer Transportmittel dennoch ein Verzeichnis der Transportmittel, aber bei der Nachbearbeitung m\u00fcssen Sie den gesamten Code, der auf den G\u00fctertransport verweist, analysieren, um herauszufinden, ob an jedem bestimmten Ort auf die Eigenschaften des Fahrzeugs verwiesen wird, von dem das Gesch\u00e4ft urspr\u00fcnglich gestartet wurde.<\/p>\n<p><b>Versto\u00df gegen die dritte normale Form:<\/b><\/p>\n<p>Irgendwann beginnen Sie, ein Loyalit\u00e4tsprogramm zu erstellen, und es gibt einen Eintrag f\u00fcr einen Stammkunden. Warum, zum Beispiel, Zeit darauf verwenden, materielle Darstellungen zu erstellen, die aggregierte Verkaufsdaten f\u00fcr einen einzelnen Kunden aufbewahren, um sie f\u00fcr Berichterstattung und \u00dcbertragung an Analysesysteme zu nutzen, wenn zum Zeitpunkt des Starts des Loyalit\u00e4tsprogramms alles, was den Kunden interessiert, im Eintrag des Kunden selbst untergebracht werden kann? Und in der Tat scheint es auf den ersten Blick keinen Sinn zu machen. Aber jedes Mal, wenn Ihr Unternehmen beispielsweise neue Vertriebskan\u00e4le anschlie\u00dft, sollte einer Ihrer Analysten daran denken, dass es ein solches Aggregationsattribut gibt. <\/p>\n<p>Beim Entwerfen jedes neuen Prozesses, sagen wir im Online-Verkauf, beim Verkauf \u00fcber Distributoren, die mit dem gemeinsamen Loyalit\u00e4tssystem verbunden sind, sollte jemand im Hinterkopf behalten, dass all diese neuen Prozesse auf Code-Ebene die Datenintegrit\u00e4t gew\u00e4hrleisten m\u00fcssen. F\u00fcr eine industrielle Datenbank mit tausend Tabellen erscheint dies wie eine kaum umsetzbare Aufgabe.<\/p>\n<p>Ein erfahrener Entwickler wei\u00df nat\u00fcrlich, wie man all die genannten Probleme umgehen kann, aber meiner Meinung nach ist es die Aufgabe eines erfahrenen Analysts, sie gar nicht erst entstehen zu lassen.<\/p>\n<p>Ich m\u00f6chte mich f\u00fcr das wertvolle Feedback bedanken, das der leitende Entwickler Juri Jaruhin bei der Ver\u00f6ffentlichung gegeben hat.<\/p>\n<h2>Literatur<\/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. Datenbanken. Entwurf, Implementierung und Wartung. Theorie und Praxis.<br \/>\n<br \/>Quelle: <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\/de\/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=\"de_DE\" \/>\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\/de\/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\udd47Die Denormalisierung von Datenbanken in ERP-Systemen und ihre Auswirkungen auf die Softwareentwicklung: Wir er\u00f6ffnen die Taverne auf Tortuga | ProHoster","description":"Hallo! Mein Name ist Andrej Semenow, ich bin Senior Analyst bei Sportmaster. In diesem Beitrag m\u00f6chte ich das Thema der Denormalisierung von Datenbanken in ERP-Systemen ansprechen.","canonical_url":"https:\/\/prohoster.info\/de\/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":"de_DE","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\/de\/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\/de\/wp-json\/wp\/v2\/posts\/78198","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/comments?post=78198"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/78198\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media\/78199"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media?parent=78198"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/categories?post=78198"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/tags?post=78198"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}