{"id":55000472,"date":"2020-02-01T00:00:00","date_gmt":"2020-07-03T10:46:02","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=472"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Reflexive_Daten_in_Tabellen_verwalten","status":"publish","type":"post","link":"https:\/\/access-basics.de\/index.php\/Reflexive_Daten_in_Tabellen_verwalten.html","title":{"rendered":"Reflexive Daten in Tabellen verwalten"},"content":{"rendered":"<p class='introduction'>Unter einer reflexiven Beziehung versteht man eine solche Beziehung, bei der man die Datens&auml;tze einer Tabelle den Datens&auml;tzen der gleichen Tabelle unterordnen kann. Damit kann man dann beispielsweise Kategorien mit beliebig vielen Unterkategorien abbilden. Um solche Daten zu verwalten, gibt es im Wesentlichen zwei verschiedene Arten: Entweder man f&uuml;gt der Tabelle selbst ein Feld hinzu, mit dem man festlegen kann, welchem anderen Datensatz der aktuelle Datensatz untergeordnet ist. Oder man realisiert die reflexive Beziehung &uuml;ber eine externe Tabelle. Wir schauen uns an, wie Sie diese beiden Varianten realisieren k&ouml;nnen.<\/p>\n<h2>Beispieldatenbank<\/h2>\n<p>Die Beispiele dieses Artikels finden Sie in der Datenbank <b>2001_ReflexiveDatenInTabellen.accdb<\/b>.<\/p>\n<h2>Reflexive Daten am Beispiel von Kategorien<\/h2>\n<p>Unsere erste Beispieltabelle zeigt die einfachste Variante der reflexiven Beziehung (siehe Bild 1). Sie enth&auml;lt ein Prim&auml;rschl&uuml;sselfeld und ein Feld zum Eintragen der Bezeichnung der Kategorie. Au&szlig;erdem enth&auml;lt sie ein Feld namens <b>ParentKategorieID <\/b>mit dem Datentyp <b>Zahl<\/b>.<\/p>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/pic_472_001.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/pic_472_001.png\" alt=\"Entwurf der Tabelle mit Verkn&uuml;pfung auf sich selbst\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 1: Entwurf der Tabelle mit Verkn&uuml;pfung auf sich selbst<\/p>\n<p>Dieses Feld soll mit dem Wert des Feldes <b>KategorieID <\/b>eines &uuml;bergeordneten Datensatzes gef&uuml;llt werden. Um sicherzustellen, dass dieses Feld keine Werte annimmt, die nicht im Feld <b>KategorieID <\/b>der Tabelle enthalten sind, legen wir eine entsprechende Beziehung an.<\/p>\n<p>Dazu &ouml;ffnen Sie &uuml;ber den Ribbon-Eintrag <b>Datenbanktools|Be-zie-hun-gen|Be-zie-hun-gen <\/b>das Beziehungen-Fenster und f&uuml;gen die Tabelle <b>tblKategorien <\/b>zwei Mal hinzu. Die zweite Instanz dieser Tabelle im Beziehungen-Fenster wird dann <b>tblKategorien_1 <\/b>genannt (siehe Bild 2).<\/p>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/pic_472_002.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/pic_472_002.png\" alt=\"Verkn&uuml;pfung der Tabelle mit sich selbst\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 2: Verkn&uuml;pfung der Tabelle mit sich selbst<\/p>\n<p>Nun ziehen Sie das Feld <b>ParentKategorieID <\/b>aus der Tabelle <b>tblKategorien_1 <\/b>auf das Feld <b>KategorieID <\/b>der Tabelle <b>tblKategorien<\/b>. Es erscheint direkt der Dialog <b>Beziehung bearbeiten<\/b>. Hier klicken Sie die Option <b>Mit referentieller Integrit&auml;t <\/b>an und schlie&szlig;en den Dialog wieder. Danach erscheint die Beziehung zwischen den beiden Instanzen der gleichen Tabelle wie in Bild 3. Damit k&ouml;nnen Sie den Dialog nun schlie&szlig;en.<\/p>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/pic_472_003.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/pic_472_003.png\" alt=\"Darstellung der Verkn&uuml;pfung\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 3: Darstellung der Verkn&uuml;pfung<\/p>\n<h2>Beispieldaten eingeben<\/h2>\n<p>Nun geben wir einige Beispieldatens&auml;tze in die Tabelle <b>tblKategorien <\/b>ein. Hier k&ouml;nnen Sie f&uuml;r das Feld <b>ParentKategorieID <\/b>nun nur noch solche Werte eingeben, die bereits im Feld <b>KategorieID <\/b>vorhanden sind. Um dies zu testen, geben wir wie in Bild 4 einmal einen Wert f&uuml;r das Feld <b>ParentKategorieID <\/b>ein, der gar nicht in der Tabelle enthalten ist.<\/p>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/pic_472_004.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/pic_472_004.png\" alt=\"Tabelle mit einigen Beispieldatens&auml;tzen\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 4: Tabelle mit einigen Beispieldatens&auml;tzen<\/p>\n<p>Beim Speichern dieses Datensatzes erscheint die Meldung aus Bild 5. Diese liefert die erwartete Erkl&auml;rung f&uuml;r den Fehler.<\/p>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/pic_472_005.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/pic_472_005.png\" alt=\"Fehler beim Verweis auf einen nicht vorhandenen Prim&auml;rschl&uuml;sselwert\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 5: Fehler beim Verweis auf einen nicht vorhandenen Prim&auml;rschl&uuml;sselwert<\/p>\n<h2>Zirkelbez&uuml;ge<\/h2>\n<p>Von Excel kennen Sie die sogenannten Zirkelbez&uuml;ge. Das sind Verweise zwischen Excel-Feldern, bei denen man irgendwann wieder beim Ausgangsfeld landet &#8211; und das kann Excel nicht mehr aufl&ouml;sen, weshalb ein Fehler angezeigt wird. In einer reflexiv verkn&uuml;pften Tabelle wie <b>tblKategorien <\/b>kann Access einen solchen Zirkelbezug nicht erkennen. Wenn Sie also beispielsweise in das Feld <b>ParentKategorieID <\/b>des Datensatzes mit dem Wert <b>1 <\/b>im Feld <b>KategorieID <\/b>wieder den Wert <b>1 <\/b>eintragen, dann ist das zwar ein Verweis auf sich selbst, aber es gibt keinen Mechanismus, der dies erkennen w&uuml;rde. Sie m&uuml;ssen also in den Elementen der Benutzeroberfl&auml;che, die zur Eingabe und Zuordnung von Kategorien dienen, selbst daf&uuml;r sorgen, dass der Benutzer keine Selbstverkn&uuml;pfung herstellen kann &#8211; weder direkt noch &uuml;ber mehrere Elemente.<\/p>\n<h2>Reflexive Beziehung mit Verkn&uuml;pfungstabelle<\/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\/55000472\/\">\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\/55000472?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\/55000472\/\"\/>\n\t\t\t\t\t\t\t\t<input type=\"hidden\" name=\"rcp_login_nonce\" value=\"34aae43e8a\"\/>\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>Unter einer reflexiven Beziehung versteht man eine solche Beziehung, bei der man die Datens&auml;tze einer Tabelle den Datens&auml;tzen der gleichen Tabelle unterordnen kann. Damit kann man dann beispielsweise Kategorien mit beliebig vielen Unterkategorien abbilden. Um solche Daten zu verwalten, gibt es im Wesentlichen zwei verschiedene Arten: Entweder man f&uuml;gt der Tabelle selbst ein Feld hinzu, mit dem man festlegen kann, welchem anderen Datensatz der aktuelle Datensatz untergeordnet ist. Oder man realisiert die reflexive Beziehung &uuml;ber eine externe Tabelle. Wir schauen uns an, wie Sie diese beiden Varianten realisieren k&ouml;nnen.<\/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":[66012020,662020,44000003,44000020],"tags":[],"class_list":["post-55000472","post","type-post","status-publish","format-standard","hentry","category-66012020","category-662020","category-Tabellen_entwerfen","category-Tools"],"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>Reflexive Daten in Tabellen verwalten - Access [basics]<\/title>\n<meta name=\"description\" content=\"Unter einer reflexiven Beziehung versteht man eine solche Beziehung, bei der man die Datens\u00e4tze einer Tabelle den Datens\u00e4tzen der gleichen Tabelle unterordnen kann. Damit kann man dann beispielsweise Kategorien mit beliebig vielen Unterkategorien abbilden. Um solche Daten zu verwalten, gibt es im Wesentlichen zwei verschiedene Arten: Entweder man f\u00fcgt der Tabelle selbst ein Feld hinzu, mit dem man festlegen kann, welchem anderen Datensatz der aktuelle Datensatz untergeordnet ist. Oder man realisiert die reflexive Beziehung \u00fcber eine externe Tabelle. Wir schauen uns an, wie Sie diese beiden Varianten realisieren k\u00f6nnen.\" \/>\n<link rel=\"canonical\" href=\"https:\/\/access-basics.de\/index.php\/Reflexive_Daten_in_Tabellen_verwalten.html\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Reflexive Daten in Tabellen verwalten - Access [basics]\" \/>\n<meta property=\"og:description\" content=\"Unter einer reflexiven Beziehung versteht man eine solche Beziehung, bei der man die Datens\u00e4tze einer Tabelle den Datens\u00e4tzen der gleichen Tabelle unterordnen kann. Damit kann man dann beispielsweise Kategorien mit beliebig vielen Unterkategorien abbilden. Um solche Daten zu verwalten, gibt es im Wesentlichen zwei verschiedene Arten: Entweder man f\u00fcgt der Tabelle selbst ein Feld hinzu, mit dem man festlegen kann, welchem anderen Datensatz der aktuelle Datensatz untergeordnet ist. Oder man realisiert die reflexive Beziehung \u00fcber eine externe Tabelle. Wir schauen uns an, wie Sie diese beiden Varianten realisieren k\u00f6nnen.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-basics.de\/index.php\/Reflexive_Daten_in_Tabellen_verwalten.html\" \/>\n<meta property=\"og:site_name\" content=\"Access [basics]\" \/>\n<meta property=\"article:published_time\" content=\"2020-07-03T10:46:02+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\/pic_472_001.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=\"7\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\/Reflexive_Daten_in_Tabellen_verwalten.html#primaryimage\",\"inLanguage\":\"de\",\"url\":\"..\/tl_files\/images\/pic_472_001.png\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/access-basics.de\/index.php\/Reflexive_Daten_in_Tabellen_verwalten.html#webpage\",\"url\":\"https:\/\/access-basics.de\/index.php\/Reflexive_Daten_in_Tabellen_verwalten.html\",\"name\":\"Reflexive Daten in Tabellen verwalten - Access [basics]\",\"isPartOf\":{\"@id\":\"https:\/\/access-basics.de\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/access-basics.de\/index.php\/Reflexive_Daten_in_Tabellen_verwalten.html#primaryimage\"},\"datePublished\":\"2020-07-03T10:46:02+00:00\",\"dateModified\":\"-0001-11-30T00:00:00+00:00\",\"author\":{\"@id\":\"https:\/\/access-basics.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f\"},\"description\":\"Unter einer reflexiven Beziehung versteht man eine solche Beziehung, bei der man die Datens\\u00e4tze einer Tabelle den Datens\\u00e4tzen der gleichen Tabelle unterordnen kann. Damit kann man dann beispielsweise Kategorien mit beliebig vielen Unterkategorien abbilden. Um solche Daten zu verwalten, gibt es im Wesentlichen zwei verschiedene Arten: Entweder man f\\u00fcgt der Tabelle selbst ein Feld hinzu, mit dem man festlegen kann, welchem anderen Datensatz der aktuelle Datensatz untergeordnet ist. Oder man realisiert die reflexive Beziehung \\u00fcber eine externe Tabelle. Wir schauen uns an, wie Sie diese beiden Varianten realisieren k\\u00f6nnen.\",\"breadcrumb\":{\"@id\":\"https:\/\/access-basics.de\/index.php\/Reflexive_Daten_in_Tabellen_verwalten.html#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/access-basics.de\/index.php\/Reflexive_Daten_in_Tabellen_verwalten.html\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/access-basics.de\/index.php\/Reflexive_Daten_in_Tabellen_verwalten.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\/Reflexive_Daten_in_Tabellen_verwalten.html\",\"url\":\"https:\/\/access-basics.de\/index.php\/Reflexive_Daten_in_Tabellen_verwalten.html\",\"name\":\"Reflexive Daten in Tabellen verwalten\"}}]},{\"@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\/55000472","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=55000472"}],"version-history":[{"count":0,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/posts\/55000472\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/media?parent=55000472"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/categories?post=55000472"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/tags?post=55000472"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}