{"id":55000330,"date":"2017-04-01T00:00:00","date_gmt":"2020-01-24T15:59:40","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=330"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Lokaler_Webshop","status":"publish","type":"post","link":"https:\/\/access-basics.de\/index.php\/Lokaler_Webshop.html","title":{"rendered":"Lokaler Webshop"},"content":{"rendered":"<p class='introduction'>Nur wenige Web-Applikationen kommen ohne eine zugrundeliegende Datenbank aus. Ob CMS-Systeme oder eCommerce-Anwendungen, alle speichern unter der Haube ihre Daten in DBMS-Servern, wie etwa MySQL. Wie stellen in dieser Ausgabe einen unter Access nachgebildeten Shop vor, der &auml;hnliche Features aufweist, wie seine Vorbilder im Internet. Zwar n&uuml;tzt eine solche Anwendung reell wohl f&uuml;r nur wenige Einsatzbereiche, daf&uuml;r aber l&auml;sst sich an ihr eine Menge demonstrieren.<\/p>\n<h2>Beispieldatenbank<\/h2>\n<p>Die Beispiele dieses Artikels finden Sie in der Datenbank <b>1608_Webshop.zip<\/b>.<\/p>\n<h2>Demo-Webshop<\/h2>\n<p>Vorstellbar w&auml;re etwa der Einsatz auf Messe- oder Verkaufsstandrechnern, wo Kunden nicht vorr&auml;tige Artikel &uuml;ber den lokalen Shop beziehen k&ouml;nnten. Weniger auf dem Praxiseinsatz liegt unser Augenmerk hier jedoch, als vielmehr auf der Darstellung des Datenmodells und dem, was sich aus ihm herausholen l&auml;sst.<\/p>\n<p>Unsere einfache alte Kundendatenbank hat zun&auml;chst ausgesorgt. Dennoch bildet sie die Basis f&uuml;r die Kundenverwaltung des Shops. Angedockt ist an sie eine Bestellverwaltung, wie sie ebenfalls schon mehrfach in unseren Beitr&auml;gen verwendet wurde und in der ehrw&uuml;rdigen Nordwind-Datenbank ihr Vorbild hat. Neuer hingegen ist ein Teil zur Verwaltung von Artikeln und Produktkategorien. Wie auch immer: Das Hauptformular der Anwendung zeigt sich, wie in Bild 1, in dem Hardware-Produkte &uuml;ber die virtuelle Firma <b>ABasics Computer GmbH <\/b>bezogen werden k&ouml;nnen. Hier w&auml;hlen Sie Artikel &uuml;ber das Kombinationsfeld mit den Hauptkategorien oben links und weiter mit dem Listenfeld links und dessen Produktunterkategorien aus. Die Spezifikation des Produkts inklusive eines Vorschaubilds wird dann rechts im Formular eingeblendet. Der Artikel kann schlie&szlig;lich &uuml;ber den gr&uuml;nen Button rechts unten in den Warenkorb gelegt werden. Auf den weiteren Bestellvorgang kommen wir sp&auml;ter noch zu sprechen.<\/p>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/frmShop.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/frmShop.png\" alt=\"So pr&auml;sentiert sich der Webshop nach dem Start des Formulars frmShop mit eingestellten Kategorien und einem Produkt\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 1: So pr&auml;sentiert sich der Webshop nach dem Start des Formulars frmShop mit eingestellten Kategorien und einem Produkt<\/p>\n<p>Selbstverst&auml;ndlich ist dies nur ein stark vereinfachtes Muster, denn echte Webshop-Systeme weisen meist &uuml;ber hundert verkn&uuml;pfte Tabellen auf und stellen in der Regel ausgewachsene Warenwirtschaftsanwendungen dar. Dennoch zeigt sich hier das Prinzip. Die Demodatenbank enth&auml;lt &uuml;brigens &uuml;ber 10.000 existierende Artikel, die zumeist mit Vorschaubildern abgespeichert sind. Auf gr&ouml;&szlig;ere Produktbilder musste verzichtet werden, da dies den Download auf einige Gigabyte vergr&ouml;&szlig;ert h&auml;tte.<\/p>\n<h2>Datenmodell des Shops<\/h2>\n<p>In Bild 2 sind die Beziehungen zwischen s&auml;mtlichen Tabellen der Datenbank dargestellt. Ganz links finden sich die bekannten Kundentabellen im hellblauen Bereich. Die daran angeflanschten Bestelldaten sind gelb hinterlegt. Rechts finden Sie die zu Artikeln geh&ouml;rigen Tabellen.<\/p>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/RelLayout.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/RelLayout.png\" alt=\"Layout des von einer Bestelldatenverwaltung abgeleiteten neuen Datenmodells des Webshops im Beziehungsfenster\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 2: Layout des von einer Bestelldatenverwaltung abgeleiteten neuen Datenmodells des Webshops im Beziehungsfenster<\/p>\n<p>Die Kundentabelle <b>tblKunden<\/b> hat nun ein zus&auml;tzliches Feld <b>Login<\/b> bekommen. In diesem Textfeld wird f&uuml;r einen im Shop registrierten Kunden dessen Passwort gespeichert. Die Verbindung von Kunden zu Bestellungen passiert &uuml;ber das Schl&uuml;sselfeld <b>KundeID<\/b> der Tabelle <b>tblBestellungen <\/b>&uuml;ber eine 1:n-Beziehung mit Referenzieller Integrit&auml;t. Das L&ouml;schen von Kunden zieht damit automatisch das Entfernen der zugeh&ouml;rigen Bestelldatens&auml;tze nach sich.<\/p>\n<h2>Bestellungen<\/h2>\n<p>Eine Bestellung wird &uuml;ber die vier Felder der Tabelle <b>tblBestellungen<\/b> identifiziert. Ihr Prim&auml;rschl&uuml;ssel <b>ID<\/b> (<b>Autowert<\/b>) dient gleichzeitig als <b>Bestellnummer<\/b>. Das <b>Bestelldatum<\/b> gibt den Zeitpunkt der Bestellaufgabe wieder. <b>IDStatus<\/b> bezieht sich auf ihren Bearbeitungsstatus, dessen Text aus der Nachschlagetabelle <b>tblBearbeitungsstati<\/b> kommt.<\/p>\n<p>Die m&ouml;glichen Werte sind hier:<\/p>\n<pre>0 - Bestellung noch nicht abgeschickt\r\n1 - Bestellung aufgegeben\r\n2 - Bestellung versandt\r\n3 - Bestellung abgeschlossen<\/pre>\n<p>Der Vorgabewert <b>0<\/b> bedeutet dabei, dass eine Bestellung angelegt wurde, indem Artikel tempor&auml;r in den Warenkorb gelegt wurden, dieser jedoch noch nicht zur Kasse gelangte.<\/p>\n<p>Nicht ganz einleuchtend mag das Feld <b>Gesamtsumme<\/b> sein, welches den Bruttogesamtbetrag aller Artikel enth&auml;lt. Tats&auml;chlich ergibt sich dieser ja aus den Artikelpreisen, deren Anzahl und Steuers&auml;tzen. Das wiederspricht scheinbar den Regeln der <b>Normalisierung<\/b> von Datenbankmodellen. Tut es auch, doch ganz so akribisch muss man nicht vorgehen. Denn bei der Berechnung etwa von Umsatzstatistiken fallen die ben&ouml;tigten Abfragen einfacher aus, weil daf&uuml;r nun die eine Tabelle <b>tblBestellungen<\/b> ausreicht. Im Interesse erh&ouml;hter Performance ist so eine Denormalisierung deshalb durchaus statthaft.<\/p>\n<p>Die einzelnen Artikel einer Bestellung listet die <b>1:n-Tabelle<\/b> <b>tblBestelldetails<\/b> auf. Die <b>BestellID<\/b> jedes Datensatzes bezieht sich auf die Bestellnummer <b>ID<\/b> in <b>tblBestellungen<\/b>. Auch hier ist Referenzielle Integrit&auml;t mit L&ouml;sch- und Aktualisierungsweitergabe eingestellt. Das L&ouml;schen einer Bestellung l&ouml;scht damit auch alle bestellten Positionen. Und damit f&uuml;hrt das L&ouml;schen eines Kunden automatisch sowohl zum Entfernen all seiner Bestellungen und zus&auml;tzlich aller zugeh&ouml;rigen Bestellpositionen. Um verwaiste Datens&auml;tze m&uuml;ssen Sie sich deshalb nicht sorgen.<\/p>\n<p>Die <b>ArtikelID<\/b> verweist auf einen der Shop-Artikel in der Tabelle <b>tblArtikel<\/b>. Die Beziehung zwischen beiden ist ebenfalls referenziell, jedoch ist hier keine L&ouml;schweitergabe festgelegt. Schlie&szlig;lich soll das Entfernen eines Artikels aus dem Produktsortiment ja nicht die auf diesen bezogenen Bestellungen durcheinanderbringen. Die Referenzielle Integrit&auml;t sorgt hier im Gegenteil daf&uuml;r, dass ein Artikel gar nicht gel&ouml;scht werden kann, wenn mit ihm Bestellungen verbunden sind. Die Datenbank-Engine verhindert dies nun automatisch und gibt gegebenenfalls einen entsprechenden Hinweis aus.<\/p>\n<p>Zu einer Bestellposition geh&ouml;rt weiterhin die gew&uuml;nschte <b>Anzahl<\/b> des Artikels. Sein Preis wird im W&auml;hrungsfeld <b>Netto<\/b> verewigt, die angesetzte Umsatzsteuer im <b>Double<\/b>-Feld <b>Ust<\/b>, das als Prozentzahl formatiert wird. Auch hier scheint mangelhafte Normalisierung vorzuliegen, denn die gleichen Felder finden sich auch beim Produkt in der Tabelle <b>tblArtikel<\/b> wieder. Dem ist jedoch nicht so! Denn die Produktpreise werden ja fortw&auml;hrend dem Markt angepasst. Entn&auml;hme man die Preise lediglich der Tabelle <b>tblArtikel<\/b>, so wiese die Rechnung nach Warenversand eventuell falsche Preisangaben aus. Die Preise m&uuml;ssen daher an dieser Stelle fest abgespeichert werden, damit sie die gleichen Werte haben, wie zum Bestelldatum, was dann sowohl in der Rechnung zum Ausdruck kommt, wie auch in der Bestell&uuml;bersicht eines Kunden.<\/p>\n<p>Das Feld <b>Brutto<\/b> ist eigentlich &uuml;berfl&uuml;ssig, vereinfacht jedoch Abfragen auf die Tabelle. Es handelt sich bei ihm nicht um ein Eingabefeld, sondern um das in <b>Access 2010<\/b> eingef&uuml;hrte <b>Berechnete Feld<\/b>. Hier ist eine Formel hinterlegt, die sich in Bild 3 aus der Feldeigenschaft <b>Ausdruck<\/b> ergibt. Als Ergebnistyp ist <b>Double<\/b> eingetragen. F&uuml;r absolut korrekte Summenbildung in Abfragen w&auml;re dieser Typ allerdings auf W&auml;hrung zu &auml;ndern.<\/p>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/tblBestelldetails_DS.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/tblBestelldetails_DS.png\" alt=\"Die Formel f&uuml;r das Berechnete Feld Brutto in der Tabelle tblBestellDetails\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 3: Die Formel f&uuml;r das Berechnete Feld Brutto in der Tabelle tblBestellDetails<\/p>\n<p>Bliebe noch das Ja\/Nein-Feld Bearbeitet. Dieses bekommt der Kunde im Shop nicht zu Gesicht, denn hier handelt es sich um ein Hilfsfeld f&uuml;r den Vertrieb. Beim Packen einer Bestellung setzt der Bearbeiter f&uuml;r die jeweilige Bestellposition den Wert in einem noch zu besprechenden Bearbeitungsformular auf Ja, um die &uuml;bersicht zu behalten.<\/p>\n<h2>Produktkategorien<\/h2>\n<p>Bevor wir zu Artikeln und deren Detailtabellen kommen, seien noch die Kategorien des Shops erl&auml;utert. Sie teilen sich in die zwei Tabellen <b>tblKategorien<\/b> und <b>tblHauptkategorien<\/b> auf. Eine Hauptkategorie w&auml;ren zum Beispiel <b>Drucker<\/b>. Deren Unterkategorien w&auml;re <b>Laserdrucker<\/b>, <b>Multifunktionsdrucker<\/b>, <b>Tintenstrahldrucker<\/b>. Letztere verzeichnet die <b>tblKategorien<\/b>, wobei hier zu jedem Datensatz die <b>ID<\/b> der Hauptkategorie im Feld <b>IDHauptkategorie<\/b> abgespeichert ist. In der Artikeltabelle wiederum verweist der Long-Wert <b>IDKategorie<\/b> auf einen Datensatz in <b>tblKategorien<\/b>.<\/p>\n<p>Im wahren Leben k&auml;me diese Kombination eher nicht zum Einsatz. Stattdessen verwendete man eine <b>Rekursive Tabelle<\/b>, die sowohl &uuml;ber- wie untergeordnete Kategorien enthielte. Eine <b>Eltern-ID<\/b> eines Datensatzes bez&ouml;ge sich dann auf einen weiteren Datensatz der Tabelle. Derlei wurde in Ausgabe <b>09\/2105<\/b> ausf&uuml;hrlicher dargestellt. Der Vorteil w&auml;re eine beliebige Schachtelungstiefe von Kategorien, wie diese auch tats&auml;chlich in vielen Webshops anzutreffen ist. Der Nachteil ist die wesentlich komplexere Auswertung solcher Tabellen und deren Darstellung in der Benutzeroberfl&auml;che. Deshalb wurde f&uuml;r unsere Demo davon Abstand genommen.<\/p>\n<h2>Artikel<\/h2>\n<p>Der Prim&auml;rschl&uuml;ssel <b>ID<\/b> der Tabelle <b>tblArtikel<\/b> ist ein <b>Autowert<\/b>, auf den sich eine Bestellposition in <b>tblBestelldetails<\/b> bezieht. Zu den weiteren Features eines Artikels in <b>tblArtikel<\/b> z&auml;hlen seine Bezeichnung im Feld <b>Produkt<\/b>, die Artikelnummer in Textfeld <b>ArtNr<\/b>, sein Nettopreis im W&auml;hrungsfeld <b>Netto<\/b> und die vorgeschriebene Mehrwertsteuer im Prozentfeld <b>Ust<\/b>. Daneben kann f&uuml;r ein Produkt auch ein <b>Rabatt<\/b> im gleichnamigen Prozentfeld angesetzt werden. Der Standardwert betr&auml;gt hier <b>0<\/b>. Welche Menge des Artikel sich im Lager befindet, verzeichnet das <b>Long<\/b>-Feld <b>Lagerbestand<\/b>. <b>Anzeigen<\/b> ist ein <b>Ja\/Nein-Feld<\/b>, welches nur zu Verwaltung des Shops gedacht ist. Der Standardwert <b>True<\/b> f&uuml;hrt dazu, dass der Artikel im Shop aufgelistet und angezeigt wird. Ein Filter in den daf&uuml;r vorgesehenen Datenquellen sorgt hierf&uuml;r.<\/p>\n<p>Einige Nachschlagefelder und deren Tabellen vervollst&auml;ndigen den Entwurf. Die <b>ID<\/b> zu einer Produktkategorie in <b>tblKategorien<\/b> hatten wir ja schon. IDHersteller verweist auf einen Datensatz der Tabelle <b>tblHersteller<\/b>. Und <b>IDVerfuegbarkeit<\/b> steht in Beziehung zur Nachschlagetabelle <b>tblVerfuegbarkeit<\/b>, welche folgende Datens&auml;tze enth&auml;lt:<\/p>\n<pre>-3&nbsp;&nbsp;&nbsp;&nbsp;(leer)\r\n-2&nbsp;&nbsp;&nbsp;&nbsp;Aktuell nicht lieferbar\r\n-1&nbsp;&nbsp;&nbsp;&nbsp;Sofort (Auf Lager)\r\n0&nbsp;&nbsp;&nbsp;&nbsp;In 2-4 Tagen\r\n1&nbsp;&nbsp;&nbsp;&nbsp;In 5-7 Tagen\r\n2&nbsp;&nbsp;&nbsp;&nbsp;In 8-14 Tagen\r\n3&nbsp;&nbsp;&nbsp;&nbsp;Kann bestellt werden<\/pre>\n<p>Der Standardwert steht in tblArtikel zun&auml;chst auf <b>-1<\/b>. Jeder neu eingef&uuml;gte Artikel bekommt damit die Eigenschaft <b>Sofort (Auf Lager)<\/b>.<\/p>\n<p>Nun soll jeder Artikel auch ein Vorschaubild zeigen. Dieses k&ouml;nnte man  als <b>Anlagefeld<\/b> direkt in die Tabelle <b>tblArtikel<\/b> aufnehmen. Tats&auml;chlich verwenden Webshops h&auml;ufig aber ein und dasselbe <b>Thumbnail<\/b> mehrfach f&uuml;r unterschiedliche Produkte. Das machen auch wir. Die Bilder sind in die Tabelle <b>tblBilder<\/b> ausgelagert, die neben dem Autowert-Prim&auml;rschl&uuml;sselfeld <b>ID<\/b> noch das Anlagefeld <b>Bildanlage<\/b> aufweist. Die Verbindung zwischen Artikel und Bild kommt nun jedoch nicht direkt zustande &#8211; man k&ouml;nnte dies durchaus tun! -, sondern &uuml;ber die <b>n:m-Tabelle<\/b> <b>tblArtikelBilder<\/b>. Damit k&ouml;nnen einem Artikel optional auch mehrere Bilder zugeordnet werden. <b>IDProdukt<\/b> verweist dabei auf den Artikel, <b>IDBild<\/b> auf die Anlage.<\/p>\n<p>&auml;hnlich verh&auml;lt es sich mit den Produkteigenschaften. Die Liste der Eigenschaften befindet sich in der Tabelle <b>tblEigenschaften<\/b> (Auszug in Bild 4).  Die Verkn&uuml;pfungstabelle <b>tblArtikelEigenschaften<\/b> verweist mit <b>IDProd<\/b> einerseits auf die <b>ID<\/b> eines Artikels in <b>tblArtikel<\/b>, andererseits mit <b>IDProp<\/b> auf eine Produkteigenschaft. Im Unterschied zum Entwurf mit den Vorschaubildern findet sich hier jedoch noch das Textfeld <b>val<\/b>, welches den eigentlichen Wert der Eigenschaft aufnimmt. Bild 5 demonstriert, wie diese Kombination funktioniert.<\/p>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/tblEigenschaften.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/tblEigenschaften.png\" alt=\"M&ouml;gliche Artikeleigenschaften\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 4: M&ouml;gliche Artikeleigenschaften<\/p>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/tblArtikelEigenschaften.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/tblArtikelEigenschaften.png\" alt=\"Artikeleigenschaften und Werte\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 5: Artikeleigenschaften und Werte<\/p>\n<p>Obwohl das Feld <b>IDProp<\/b> vom Typ Zahl ist, wird hier der Textwert angezeigt, weil f&uuml;r das Feld als Datenblattanzeigetyp ein Kombinationsfeld vorgesehen ist, das die Nachschlagetabelle <b>tblEigenschaften<\/b> verwendet.<\/p>\n<p>Ein Artikel kann somit eine beliebige Anzahl von Eigenschaften und Werten f&uuml;r sie aufweisen. Aus deren Gesamtheit soll sich sp&auml;ter dann das Produktdatenblatt ergeben. F&uuml;r den Artikel mit der <b>ID<\/b> <b>25<\/b>, ein RAM-Speichermodul, gibt es etwa die drei Eigenschaften, welche in der Abbildung ganz oben stehen. Soweit das Wesentliche zum Datenmodell des Webshops.<\/p>\n<h2>Shop-Funktionen<\/h2>\n<div class=\"rcp_restricted\"><p><span style=\"color: #ff0000;\">M&ouml;chten Sie weiterlesen? Dann l&ouml;sen Sie Ihr Ticket!<\/span><br \/>\n<span style=\"color: #ff0000;\">Hier geht es zur Bestellung des Jahresabonnements des Magazins <strong>Access &#091;basics&#093;<\/strong>:<\/span><br \/>\n<span style=\"color: #ff0000;\"><a style=\"color: #ff0000;\" href=\"https:\/\/shop.minhorst.com\/magazine\/282\/access-basics?c=77\">Zur Bestellung ...<\/a><\/span><br \/>\n<span style=\"color: #ff0000;\">Danach greifen Sie sofort auf <strong>alle rund 400 Artikel<\/strong> unseres Angebots zu - auch auf diesen hier!<\/span><br \/>\n<span style=\"color: #000000;\">Oder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein:<\/span><\/p>\n<\/div>\n\n\t\n\t<form id=\"rcp_login_form\"  class=\"rcp_form\" method=\"POST\" action=\"https:\/\/access-basics.de\/data\/wp\/v2\/posts\/55000330\/\">\n\n\t\t\n\t\t<fieldset class=\"rcp_login_data\">\n\t\t\t<p>\n\t\t\t\t<label for=\"rcp_user_login\">Username or Email<\/label>\n\t\t\t\t<input name=\"rcp_user_login\" id=\"rcp_user_login\" class=\"required\" type=\"text\"\/>\n\t\t\t<\/p>\n\t\t\t<p>\n\t\t\t\t<label for=\"rcp_user_pass\">Password<\/label>\n\t\t\t\t<input name=\"rcp_user_pass\" id=\"rcp_user_pass\" class=\"required\" type=\"password\"\/>\n\t\t\t<\/p>\n\t\t\t\t\t\t<p>\n\t\t\t\t<input type=\"checkbox\" name=\"rcp_user_remember\" id=\"rcp_user_remember\" value=\"1\"\/>\n\t\t\t\t<label for=\"rcp_user_remember\">Remember me<\/label>\n\t\t\t<\/p>\n\t\t\t<p class=\"rcp_lost_password\"><a href=\"\/index.php\/data\/wp\/v2\/posts\/55000330?rcp_action=lostpassword\"><\/a><\/p>\n\t\t\t<p>\n\t\t\t\t<input type=\"hidden\" name=\"rcp_action\" value=\"login\"\/>\n\t\t\t\t\t\t\t\t\t<input type=\"hidden\" name=\"rcp_redirect\" value=\"https:\/\/access-basics.de\/data\/wp\/v2\/posts\/55000330\/\"\/>\n\t\t\t\t\t\t\t\t<input type=\"hidden\" name=\"rcp_login_nonce\" value=\"8d63f6cbe9\"\/>\n\t\t\t\t<input id=\"rcp_login_submit\" class=\"rcp-button\" type=\"submit\" value=\"Login\"\/>\n\t\t\t<\/p>\n\t\t\t\t\t<\/fieldset>\n\n\t\t\n\t<\/form>\n<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Nur wenige Web-Applikationen kommen ohne eine zugrundeliegende Datenbank aus. Ob CMS-Systeme oder eCommerce-Anwendungen, alle speichern unter der Haube ihre Daten in DBMS-Servern, wie etwa MySQL. Wie stellen in dieser Ausgabe einen unter Access nachgebildeten Shop vor, der &auml;hnliche Features aufweist, wie seine Vorbilder im Internet. Zwar n&uuml;tzt eine solche Anwendung reell wohl f&uuml;r nur wenige Einsatzbereiche, daf&uuml;r aber l&auml;sst sich an ihr eine Menge demonstrieren.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"categories":[662016,66082016,44000014],"tags":[],"class_list":["post-55000330","post","type-post","status-publish","format-standard","hentry","category-662016","category-66082016","category-Loesungen"],"aioseo_notices":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v15.9.2 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Lokaler Webshop - Access [basics]<\/title>\n<meta name=\"description\" content=\"Nur wenige Web-Applikationen kommen ohne eine zugrundeliegende Datenbank aus. Ob CMS-Systeme oder eCommerce-Anwendungen, alle speichern unter der Haube ihre Daten in DBMS-Servern, wie etwa MySQL. Wie stellen in dieser Ausgabe einen unter Access nachgebildeten Shop vor, der \u00e4hnliche Features aufweist, wie seine Vorbilder im Internet. Zwar n\u00fctzt eine solche Anwendung reell wohl f\u00fcr nur wenige Einsatzbereiche, daf\u00fcr aber l\u00e4sst sich an ihr eine Menge demonstrieren.\" \/>\n<link rel=\"canonical\" href=\"https:\/\/access-basics.de\/index.php\/Lokaler_Webshop.html\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Lokaler Webshop - Access [basics]\" \/>\n<meta property=\"og:description\" content=\"Nur wenige Web-Applikationen kommen ohne eine zugrundeliegende Datenbank aus. Ob CMS-Systeme oder eCommerce-Anwendungen, alle speichern unter der Haube ihre Daten in DBMS-Servern, wie etwa MySQL. Wie stellen in dieser Ausgabe einen unter Access nachgebildeten Shop vor, der \u00e4hnliche Features aufweist, wie seine Vorbilder im Internet. Zwar n\u00fctzt eine solche Anwendung reell wohl f\u00fcr nur wenige Einsatzbereiche, daf\u00fcr aber l\u00e4sst sich an ihr eine Menge demonstrieren.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-basics.de\/index.php\/Lokaler_Webshop.html\" \/>\n<meta property=\"og:site_name\" content=\"Access [basics]\" \/>\n<meta property=\"article:published_time\" content=\"2020-01-24T15:59:40+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"-0001-11-30T00:00:00+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/..\/tl_files\/images\/frmShop.png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Gesch\u00e4tzte Lesezeit\">\n\t<meta name=\"twitter:data1\" content=\"26\u00a0Minuten\">\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebSite\",\"@id\":\"https:\/\/access-basics.de\/#website\",\"url\":\"https:\/\/access-basics.de\/\",\"name\":\"Access [basics]\",\"description\":\"DAS ACCESS-MAGAZIN F\\u00dcR ALLE, DIE VON 0 AUF 100 WOLLEN\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":\"https:\/\/access-basics.de\/?s={search_term_string}\",\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"de\"},{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/access-basics.de\/index.php\/Lokaler_Webshop.html#primaryimage\",\"inLanguage\":\"de\",\"url\":\"..\/tl_files\/images\/frmShop.png\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/access-basics.de\/index.php\/Lokaler_Webshop.html#webpage\",\"url\":\"https:\/\/access-basics.de\/index.php\/Lokaler_Webshop.html\",\"name\":\"Lokaler Webshop - Access [basics]\",\"isPartOf\":{\"@id\":\"https:\/\/access-basics.de\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/access-basics.de\/index.php\/Lokaler_Webshop.html#primaryimage\"},\"datePublished\":\"2020-01-24T15:59:40+00:00\",\"dateModified\":\"-0001-11-30T00:00:00+00:00\",\"author\":{\"@id\":\"https:\/\/access-basics.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f\"},\"description\":\"Nur wenige Web-Applikationen kommen ohne eine zugrundeliegende Datenbank aus. Ob CMS-Systeme oder eCommerce-Anwendungen, alle speichern unter der Haube ihre Daten in DBMS-Servern, wie etwa MySQL. Wie stellen in dieser Ausgabe einen unter Access nachgebildeten Shop vor, der \\u00e4hnliche Features aufweist, wie seine Vorbilder im Internet. Zwar n\\u00fctzt eine solche Anwendung reell wohl f\\u00fcr nur wenige Einsatzbereiche, daf\\u00fcr aber l\\u00e4sst sich an ihr eine Menge demonstrieren.\",\"breadcrumb\":{\"@id\":\"https:\/\/access-basics.de\/index.php\/Lokaler_Webshop.html#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/access-basics.de\/index.php\/Lokaler_Webshop.html\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/access-basics.de\/index.php\/Lokaler_Webshop.html#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"item\":{\"@type\":\"WebPage\",\"@id\":\"https:\/\/access-basics.de\/\",\"url\":\"https:\/\/access-basics.de\/\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"position\":2,\"item\":{\"@type\":\"WebPage\",\"@id\":\"https:\/\/access-basics.de\/index.php\/Lokaler_Webshop.html\",\"url\":\"https:\/\/access-basics.de\/index.php\/Lokaler_Webshop.html\",\"name\":\"Lokaler Webshop\"}}]},{\"@type\":\"Person\",\"@id\":\"https:\/\/access-basics.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f\",\"name\":\"Andr\\u00e9 Minhorst\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/access-basics.de\/#personlogo\",\"inLanguage\":\"de\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"caption\":\"Andr\\u00e9 Minhorst\"}}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","_links":{"self":[{"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/posts\/55000330","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/comments?post=55000330"}],"version-history":[{"count":0,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/posts\/55000330\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/media?parent=55000330"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/categories?post=55000330"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/tags?post=55000330"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}