{"id":616,"date":"2017-08-22T03:51:07","date_gmt":"2017-08-22T01:51:07","guid":{"rendered":"http:\/\/evileu.de\/zum-schwarzen-pinguin\/?p=616"},"modified":"2017-08-22T03:51:07","modified_gmt":"2017-08-22T01:51:07","slug":"nochn-deja-vu-was-ist-das-fuehrende-system","status":"publish","type":"post","link":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/2017\/08\/22\/nochn-deja-vu-was-ist-das-fuehrende-system\/","title":{"rendered":"Noch&#8217;n D\u00e9ja vu: was ist das f\u00fchrende System?"},"content":{"rendered":"<p>Das, liebes Publikum, hatten wir\u00a0 schon mal, als es um die Mitgliederdaten des Turnvereins Wei\u00df-Blau ging &#8211; erinnert sich noch jemand? Man kann Massendaten per CSV-Upload in WordPress reinjagen, aber man mu\u00df vorher ganz klar entscheiden, was das f\u00fchrende System ist. Das ist jetzt noch nicht mal WordPress-spezifisch, diese \u00dcberlegung mu\u00df man immer wieder anstellen, wenn es um die elektronische Verarbeitung von Betriebsdaten geht. Dabei stellen sich immer wieder die folgenden Fragen:<\/p>\n<ol>\n<li>Was passiert, wenn nach dem ersten Load noch Datens\u00e4tze dazukommen?<\/li>\n<li>Was passiert, wenn sich an den Stammdaten mal etwas \u00e4ndert?<\/li>\n<li>Aus welchem System f\u00e4hrt man betriebliche Auswertungen und Statistiken?<\/li>\n<\/ol>\n<p>Wir gehen es mal der Reihe nach durch und klopfen ab, ob sich wooCommerce als f\u00fchrendes System f\u00fcr unsere Artikelstammdaten eignet.<\/p>\n<h2>Hinzuf\u00fcgen von Datens\u00e4tzen:<\/h2>\n<p>Wenn es wirklich nur einzelne Datens\u00e4tze sind, kann man die tats\u00e4chlich per Hand einpflegen, das hei\u00dft in unserem Fall: vereinzelt dazukommende neue Artikel werden manuell in wooCommerce angelegt. Stammdaten einpflegen, Bild hochladen, fertig.<br \/>\nSobald es aber mehr als sagen wir mal ein halbes Dutzend neue Datens\u00e4tze pro Monat sind, ist das zu viel Aufwand und eben auch fehlertr\u00e4chtig. Dann braucht man einen selektiven CSV-Upload, der die bereits existierenden Bestandsdaten unber\u00fchrt l\u00e4\u00dft und nur die neu hinzugekommenen Artikel neu anlegt. Ob das funktioniert, mu\u00df man vorher abkl\u00e4ren, ehe man sich f\u00fcr ein CSV-Upload-Plugin entscheidet.<\/p>\n<h2>Stammdaten Pflege:<\/h2>\n<p>Hier sieht es \u00e4hnlich aus wie oben, das kommt darauf an wieviele \u00c4nderungen man zu machen hat. Vereinzelte Datens\u00e4tze kann man per Hand editieren, bei Massen\u00e4nderungen an den Bestandsdaten geht man doch lieber an die Datenbank.<\/p>\n<p>Ich nenne mal ein einfaches Beispiel f\u00fcr eine typische Massen\u00e4nderung: nehmen wir mal an, die nickelfreien Ohrringhaken sind im Einkauf 20 % teurer geworden, und ich m\u00f6chte in der Folge die Preise f\u00fcr alle Ohrringe in meinem Sortiment etwas anheben, sagen wir mal um pauschal 5 %. Das geht bei drei, vier Ohrringen in meinem Onlineshop noch per Hand, sobald das allerdings mehr werden ist eine manuelle \u00c4nderung nicht mehr zumutbar.<\/p>\n<p>Was tut der EDV-Fuzzy in so einem Fall? Ja klar, wir fahren einen Update auf der Datenbank! Der SQL auf einer Produkt-Stammdaten-Tabelle sieht so oder \u00e4hnlich aus:<\/p>\n<p><em><span class=\"k\">update<\/span> <span class=\"n\">products<\/span> <span class=\"k\">set<\/span> <span class=\"n\">products_price<\/span><span class=\"o\">=<\/span><span class=\"n\">products_price<\/span><span class=\"o\">*<\/span><span class=\"mi\">1<\/span><span class=\"p\">.<\/span><span class=\"mi\">05 where products_category like &#8222;Ohrringe&#8220;<\/span><span class=\"p\">;<\/span><\/em><\/p>\n<p>Wenn&#8217;s denn so einfach w\u00e4re! Ich erinnere mal kurz an den letzten Artikel: um allein an die Produktkategorie eines Artikels heranzukommen, brauche ich einen Join \u00fcber mindestens 4 Tabellen, der sah so aus:<\/p>\n<p><em>(\u201eSELECT Wp_term_relationships.*,Wp_terms.* FROM Wp_term_relationship<br \/>\nLEFT JOIN Wp_posts\u00a0 ON Wp_term_relationships.object_id = Wp_posts.ID<br \/>\nLEFT JOIN Wp_term_taxonomy ON Wp_term_taxonomy.term_taxonomy_id = Wp_term_relationships.term_taxonomy_id<br \/>\nLEFT JOIN Wp_terms ON Wp_terms.term_id = Wp_term_relationships.term_taxonomy_id<br \/>\nWHERE post_type = \u201aproduct\u2018 AND taxonomy = \u201aproduct_cat\u2018<br \/>\nAND\u00a0 object_id = \u201e.$aktuelleID.\u201c\u201c)<\/em><\/p>\n<p>Und das ist erst der Select f\u00fcr die Kategorie zu einem einzelnen Artikel. Einen Update auf den _regular_price aus der wp_postmeta (noch ein Join mehr) mit einer Where-Klausel wie &#8222;where wp_terms.name like &#8222;Ohrringe&#8220;&#8220; kann sich jeder selber daraus basteln.<\/p>\n<p>Das, liebe alte Datenbankf\u00fcchse, ist zwar interessantes SQL, aber in der realen Anwendung eine Zumutung!<\/p>\n<h2>Betriebliche Auswertungen und Statistiken oder: was zum Donner ist denn nun unser f\u00fchrendes System?<\/h2>\n<p>Die Artikelliste ist mein f\u00fchrendes System. Ich meine diese hier:<\/p>\n<div id=\"attachment_598\" style=\"width: 811px\" class=\"wp-caption alignnone\"><img aria-describedby=\"caption-attachment-598\" decoding=\"async\" loading=\"lazy\" class=\"size-full wp-image-598\" src=\"http:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-content\/uploads\/2017\/08\/artikelliste_excel.jpg\" alt=\"artikelliste_excel\" width=\"801\" height=\"297\" srcset=\"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-content\/uploads\/2017\/08\/artikelliste_excel.jpg 801w, https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-content\/uploads\/2017\/08\/artikelliste_excel-300x111.jpg 300w, https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-content\/uploads\/2017\/08\/artikelliste_excel-768x285.jpg 768w, https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-content\/uploads\/2017\/08\/artikelliste_excel-624x231.jpg 624w\" sizes=\"(max-width: 801px) 100vw, 801px\" \/><p id=\"caption-attachment-598\" class=\"wp-caption-text\">artikelliste_excel<\/p><\/div>\n<p>Mir ist es n\u00e4mlich echt zu m\u00fchselig, statistische Auswertungen meiner Stammdaten \u00fcber die WordPress\/wooCommerce-Tabellen zu fahren. Mein Kunde m\u00f6chte zum Beispiel wissen, wieviele Ketten und Colliers \u00fcber 15 \u20ac er im Sortiment hat. Oder auch nur die Anzahlen der Artikel zu den einzelnen Kategorien, oder so etwas in der Richtung. Das macht man im Zweifelsfall im Excel mit den entsprechenden Filtern, das ist ratzfatz erledigt. \u00dcber die WordPress-Datenbank geht es nur mit solchen akrobatischen Verrenkungen und Joins \u00fcber mehrere Tabellen wie gerade eben gezeigt, das ist mir einfach zu umst\u00e4ndlich.<\/p>\n<h2>Wie sieht das in der Praxis aus?<\/h2>\n<p>Stammdaten\u00e4nderungen m\u00fc\u00dften dann ausschlie\u00dflich in der Excel-Tabelle passieren, aber vielleicht laden wir sie ja in Access, dann gehen solche Sonderw\u00fcnsche wie ein seleketiver Update auf den Preis in ein paar Minuten. Export nach CSV, selektiver Upload &#8211; da m\u00fc\u00dfte man dann die Option haben, bestehende Datens\u00e4tze zu aktualisieren, aber das bieten die meisten Import-Plugins schon an. WooCommerce w\u00e4re dann ganz klar das sekund\u00e4re System, und da geh\u00f6rt es auch hin, wenn sie mich fragen. F\u00fcr eine Bestandsf\u00fchrung mit allem was dazugeh\u00f6rt ist es n\u00e4mlich schlicht nicht geeignet. Meine Meinung, und nat\u00fcrlich subjektiv aus der Sicht einer alten Datenbankerin.<\/p>\n<p>Aber ich will wooCommerce nicht in Bausch und Bogen verdammen, es ist n\u00e4mlich schon ein intelligenter Online-Shop und hat noch etliche interessante Features zu bieten. Dazu mehr im n\u00e4chsten Artikel.<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Das, liebes Publikum, hatten wir\u00a0 schon mal, als es um die Mitgliederdaten des Turnvereins Wei\u00df-Blau ging &#8211; erinnert sich noch jemand? Man kann Massendaten per CSV-Upload in WordPress reinjagen, aber man mu\u00df vorher ganz klar entscheiden, was das f\u00fchrende System ist. Das ist jetzt noch nicht mal WordPress-spezifisch, diese \u00dcberlegung mu\u00df man immer wieder anstellen, [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[25,7,24,2],"tags":[],"_links":{"self":[{"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/posts\/616"}],"collection":[{"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/comments?post=616"}],"version-history":[{"count":3,"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/posts\/616\/revisions"}],"predecessor-version":[{"id":619,"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/posts\/616\/revisions\/619"}],"wp:attachment":[{"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/media?parent=616"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/categories?post=616"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/tags?post=616"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}