{"id":55000503,"date":"2020-12-01T00:00:00","date_gmt":"2020-12-01T00:00:00","guid":{"rendered":"http:\/\/access-basics.de\/503"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Normalisierung_Teil_2_Die_zweite_Normalform","status":"publish","type":"post","link":"https:\/\/access-basics.de\/index.php\/Normalisierung_Teil_2_Die_zweite_Normalform.html","title":{"rendered":"Normalisierung, Teil 2: Die zweite Normalform"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/vg08.met.vgwort.de\/na\/52c505db7d92453398806fc7fae091d0\" width=\"1\" height=\"1\" alt=\"\"><\/p>\n<p class='introduction'>Der Entwurf eines Datenmodells und der darin enthaltenen Tabellen und Beziehungen erfordert vor allem eines: Das Ber&uuml;cksichtigen der Normalformen. Dies sind Regeln, mit denen Sie die ben&ouml;tigten Felder auf verschiedene Tabellen aufteilen. Dabei ist das Ziel, redundante Daten auszuschlie&szlig;en und Inkonsistenzen zu verhindern. Diese Artikelreihe beschreibt die wichtigsten Normalformen und wie Sie diese in der Praxis anwenden. <\/p>\n<h2>Beispieldatenbank<\/h2>\n<p>Die Beispiele dieses Artikels finden Sie in der Datenbank <b>2006_Normalisierung.accdb<\/b>.<\/p>\n<h2>Ausgangssituation<\/h2>\n<p>Im ersten Teil der Artikelreihe haben wir die erste Normalform betrachtet, die besagt, dass jedes Feld atomare Informationen enthalten soll. Dabei haben wir Daten zweier Felder, die Stra&szlig;e und Hausnummer sowie PLZ und Ort enthielten, auf jeweils zwei neue Felder aufgeteilt.<\/p>\n<p>Die neue Tabelle enth&auml;lt Projekt- und Kundendaten und sieht wie in Bild 1 aus. An dieser Stelle setzen wir die Normalisierung fort und schauen uns die zweite Normalform an.<\/p>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/pic_503_001.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/pic_503_001.png\" alt=\"Zu normalisierende Daten\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 1: Zu normalisierende Daten<\/p>\n<h2>Die zweite Normalform<\/h2>\n<p>Die Definition auf Wikipedia f&uuml;r die zweite Normalform lautet:<\/p>\n<p>&#8222;Eine Relation ist genau dann in der zweiten Normalform, wenn die erste Normalform vorliegt und kein Nichtprim&auml;rattribut (Attribut, das nicht Teil eines Schl&uuml;sselkandidaten ist) funktional von einer echten Teilmenge eines Schl&uuml;sselkandidaten abh&auml;ngt.&#8220;<\/p>\n<p>Bezogen auf die Tabelle <b>tblProjekteKunden <\/b>bedeutet dies Folgendes: Die Tabelle besitzt prinzipiell einen aus den beiden Feldern <b>Projektnummer <\/b>und <b>Kundennummer<\/b> zusammengesetzten Prim&auml;rschl&uuml;ssel. Eine Teilmenge w&auml;re also eines der beiden Felder <b>Projektnummer <\/b>und <b>Kundennummer<\/b>. Und es gibt Felder, die von <b>Projektnummer <\/b>abh&auml;ngig sind (<b>Projektbezeichnung<\/b>, <b>Projektstart<\/b>) und Felder, die von <b>Kundennummer <\/b>abh&auml;ngig sind (die &uuml;brigen Felder).<\/p>\n<p>Unsere Tabelle ist also nicht in der zweiten Normalform. Das w&auml;re nur der Fall, wenn alle Nicht-Prim&auml;rschl&uuml;sselfelder von den zum Prim&auml;rschl&uuml;ssel zusammengesetzten Feldern abh&auml;ngig w&auml;ren. Das ist etwa in einer Bestellpositionen-Tabelle der Fall, die einen aus den beiden Feldern <b>BestellungID <\/b>und <b>ArtikelID <\/b>zusammengesetzten Prim&auml;rschl&uuml;ssel enth&auml;lt &#8211; dort sind alle weiteren Felder von diesem Prim&auml;rschl&uuml;ssel abh&auml;ngig.<\/p>\n<h2>Praktische Aspekte der zweiten Normalform<\/h2>\n<p>Schauen wir uns die Tabelle <b>tblProjekteUndKunden <\/b>nochmal genauer an. Der erste, vierte und siebte Datensatz enthalten Projekte mit dem gleichen Kunden. Legen Sie hier nun f&uuml;r ein neues Projekt mit diesem Kunden die Firma <b>Test-Firma <\/b>statt <b>Testfirma <\/b>an, finden Sie bei einer Suche nach <b>Testfirma <\/b>nicht mehr alle Projekte zu diesem Kunden.<\/p>\n<p>Die redundanten Daten f&uuml;hren leicht zu Inkonsistenzen, und das wollen wir vermeiden.<\/p>\n<p>Diese wollen wir nun so aufteilen, dass die Projekte und die Kunden in je einer eigenen Tabelle namens <b>tblProjekte <\/b>und <b>tblKunden <\/b>landen. Beide Tabellen ben&ouml;tigen ein eigenes Prim&auml;rschl&uuml;sselfeld. Die Daten daf&uuml;r liegen uns bereits vor: Die Tabelle <b>tblProjekte <\/b>verwendet das Feld <b>Projektnummer <\/b>als Prim&auml;rschl&uuml;sselfeld, die Tabelle <b>tblKunden <\/b>das Feld <b>Kundennummer<\/b>.<\/p>\n<p>Danach m&uuml;ssen wir allerdings noch die Zuordnung zwischen den Kunden und Projekten sicherstellen. Weisen wir ein Projekt einem Kunden zu oder einen Kunden einem Projekt Letzteres ist der Fall, und damit wissen wir, dass wir der Tabelle <b>tblProjekte <\/b>ein Fremdschl&uuml;sselfeld hinzuf&uuml;gen m&uuml;ssen, mit dem wir den Eintrag der Tabelle <b>tblKunden <\/b>festlegen, f&uuml;r den das Projekt durchgef&uuml;hrt werden soll.<\/p>\n<h2>Aufteilung der Tabelle tblProjekteUndKunden<\/h2>\n<p>Die Tabelle <b>tblProjekteUndKunden <\/b>wollen wir nun wie in Bild 2 auf die beiden Tabellen <b>tblProjekte <\/b>und <b>tblKunden <\/b>aufteilen. Dazu erstellen wir die beiden Zieltabellen, wobei wir die Felder <b>Projektnummer <\/b>und <b>Kundennummer <\/b>gleich durch die in diesem Magazin &uuml;blichen Bezeichnungen <b>ProjektID <\/b>und <b>KundeID <\/b>&auml;ndern. Die beiden Prim&auml;rschl&uuml;sselfelder m&uuml;ssen Sie direkt als Autowert festlegen, da sich dies nicht mehr einstellen l&auml;sst, wenn Sie einmal Daten in die Tabelle geschrieben haben.<\/p>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/pic_503_002.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/pic_503_002.png\" alt=\"Aufteilung der Tabelle tblProjekteUndKunden\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 2: Aufteilung der Tabelle tblProjekteUndKunden<\/p>\n<p>Der Tabelle <b>tblProjekte <\/b>f&uuml;gen wir au&szlig;erdem gleich das Fremdschl&uuml;sselfeld <b>KundeID <\/b>mit dem Datentyp <b>Zahl <\/b>hinzu.<\/p>\n<p>Nun ben&ouml;tigen wir noch halbwegs automatische M&ouml;glichkeiten, um die Daten der Tabellen aufzuteilen. Dies erledigen wir in zwei Schritten:<\/p>\n<ul>\n<li>Hinzuf&uuml;gen der Kundendaten zur Tabelle <b>tblKunden<\/b><\/li>\n<li>Hinzuf&uuml;gen der Projektdaten zur Tabelle <b>tblProjekte<\/b><\/li>\n<\/ul>\n<h2>Kundentabelle f&uuml;llen<\/h2>\n<p>Den ersten Schritt erledigen wir mit einer Anf&uuml;geabfrage. Dazu erstellen Sie eine neue Abfrage und &auml;ndern den Abfragetyp &uuml;ber den Ribbon-Eintrag <b>Entwurf|Abfragetyp|Anf&uuml;gen<\/b>. Nun erscheint der Dialog <b>Anf&uuml;gen<\/b>, mit dem Sie die Zieltabelle ausw&auml;hlen, hier <b>tblKunden <\/b>(siehe Bild 3).<\/p>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/pic_503_004.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/pic_503_004.png\" alt=\"Ausw&auml;hlen der Zieltabelle f&uuml;r die Anf&uuml;geabfrage\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 3: Ausw&auml;hlen der Zieltabelle f&uuml;r die Anf&uuml;geabfrage<\/p>\n<p>Danach bearbeiten Sie den Entwurf der neuen Anf&uuml;geabfrage. F&uuml;gen Sie die Tabelle <b>tblProjekteUndKunden <\/b>zum Entwurf hinzu und ziehen Sie die Felder f&uuml;r die Kunden in das Entwurfsraster. Access ordnet Felder gleichen Namens automatisch zu, sodass wir nur noch das Feld <b>KundeID <\/b>als Ziel f&uuml;r das Feld <b>Kundennummer<\/b> ausw&auml;hlen m&uuml;ssen (siehe Bild 4).<\/p>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/pic_503_005.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/pic_503_005.png\" alt=\"Anf&uuml;geabfrage zum F&uuml;llen der Tabelle tblKunden\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 4: Anf&uuml;geabfrage zum F&uuml;llen der Tabelle tblKunden<\/p>\n<p>Danach bet&auml;tigen Sie den Ribbon-Eintrag <b>Ent-wurf|Er-geb-nis-se|Aus-f&uuml;h-ren<\/b>, um die Anf&uuml;geabfrage zu starten. Die nun erscheinende Meldung besagt, dass nicht alle Eintr&auml;ge zur Zieltabelle hinzugef&uuml;gt werden konnten. Das ist logisch, denn die Tabelle <b>tblProjekteUndKunden <\/b>enth&auml;lt den Datensatz mit der Kundennummer <b>123 <\/b>mehrfach.<\/p>\n<p>In diesem Fall ist es also in Ordnung, dass nicht alle Eintr&auml;ge kopiert werden. Das Ergebnis sehen Sie in Bild 5.<\/p>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/pic_503_006.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/pic_503_006.png\" alt=\"Die gef&uuml;llte neue Tabelle tblKunden\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 5: Die gef&uuml;llte neue Tabelle tblKunden<\/p>\n<h2>Projekttabelle f&uuml;llen<\/h2>\n<p>Zum &Uuml;bertragen der Projektdaten aus der Tabelle <b>tblProjekteUndKunden <\/b>in die Tabelle <b>tblProjekte <\/b>legen wir wiederum eine Anf&uuml;geabfrage an. Diesmal verwenden wir die Tabelle <b>tblProjekte <\/b>als Zieltabelle.<\/p>\n<p>Danach f&uuml;gen wir die Tabelle <b>tblProjekteUndKunden <\/b>zum Entwurf hinzu und ziehen diesmal die Felder <b>Projektnummer<\/b>, <b>Projektbezeichnung<\/b>, <b>Projektstart <\/b>und <b>Kundennummer <\/b>in das Entwurfsraster. Auch hier erkennt Access wieder zwei Zuordnungen, aber f&uuml;r Projektnummer und Kundennummer m&uuml;ssen wir selbst Hand anlegen. Das Feld <b>Projektnummer <\/b>soll auf dem Prim&auml;rschl&uuml;sselfeld <b>ProjektID <\/b>der Zieltabelle abgebildet werden. Und mit <b>Kundennummer <\/b>erhalten wir praktischerweise bereits die Werte f&uuml;r das Fremdschl&uuml;sselfeld <b>KundeID<\/b> (siehe Bild 6).<\/p>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/pic_503_007.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/pic_503_007.png\" alt=\"Anf&uuml;geabfrage zum F&uuml;llen der Tabelle tblProjekte\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 6: Anf&uuml;geabfrage zum F&uuml;llen der Tabelle tblProjekte<\/p>\n<p>Da es f&uuml;r die Projekte nur eindeutige Daten gibt, sollte das Anf&uuml;gen diesmal ohne Probleme erfolgen. Wir f&uuml;hren die Anf&uuml;geabfrage aus und erhalten das Ergebnis aus Bild 7.<\/p>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/pic_503_008.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/pic_503_008.png\" alt=\"Die gef&uuml;llte Tabelle tblProjekte\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 7: Die gef&uuml;llte Tabelle tblProjekte<\/p>\n<p>Nun fehlt nur noch eine Beziehung zwischen den beiden Tabellen <b>tblProjekte <\/b>und <b>tblKunden<\/b>. Diese f&uuml;gen wir &uuml;ber das <b>Beziehungen<\/b>-Fenster hinzu, das wir mit dem Ribbon-Eintrag <b>Datenbanktools|Beziehungen <\/b>&ouml;ffnen.<\/p>\n<p>F&uuml;gen Sie die beiden Tabellen <b>tblProjekte <\/b>und <b>tblKunden <\/b>zum Beziehungen-Fenster hinzu und ziehen Sie dann das Fremdschl&uuml;sselfeld <b>KundeID<\/b> der Tabelle <b>tblProjekte <\/b>auf das Prim&auml;rschl&uuml;sselfeld <b>KundeID <\/b>der Tabelle <b>tblKunden<\/b>.<\/p>\n<p>Klicken Sie doppelt auf den Beziehungspfeil und markieren Sie im nun erscheinenden Dialog <b>Beziehungen bearbeiten <\/b>die Option <b>Mit referentieller Integrit&auml;t<\/b> (siehe Bild 8). Die L&ouml;schweitergabe aktivieren wir f&uuml;r diese Beziehung nicht, weil Kunden, denen bereits ein Projekt zugewiesen wurde, nicht mehr gel&ouml;scht werden sollen.<\/p>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/pic_503_009.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/pic_503_009.png\" alt=\"Herstellen einer Beziehung zwischen den Tabellen tblProjekte und tblKunden\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 8: Herstellen einer Beziehung zwischen den Tabellen tblProjekte und tblKunden<\/p>\n<h2>Normalisierung f&uuml;r Lookupdaten<\/h2>\n<p>Die Tabelle <b>tblProjekteUndKunden<\/b> beherbergt noch ein nicht normalisiertes Feld, das wir in die Tabelle <b>tblKunden <\/b>&uuml;bertragen haben. Es enth&auml;lt die Anrede des Kunden. In diesem Feld landen Daten wie <b>Herr<\/b>, <b>Frau <\/b>oder <b>Firma<\/b>. Wenn nur diese drei Eintr&auml;ge vorgesehen sind, befinden sich eine Menge redundanter Daten in diesem Feld. Das ist wieder kein Problem, wenn niemand auf die Idee kommt, statt Herr einmal Herrn in das Feld einzutragen. Suchen Sie dann &uuml;ber die Anrede nach m&auml;nnlichen oder weiblichen Kunden oder nach Firmenkunden und geben beispielsweise den Suchbegriff <b>Herr <\/b>ein, finden Sie wieder nicht alle gew&uuml;nschten Datens&auml;tze.<\/p>\n<p>Wir verwenden f&uuml;r diesen Schritt eine Kopie der Tabelle <b>tblKunden <\/b>mit dem Namen <b>tblKundenMitAnredeID<\/b>.<\/p>\n<p>Auch hier bietet sich eine Normalisierung an, indem wir f&uuml;r die Anrede eine neue Tabelle erstellen. Diese soll nur drei Datens&auml;tze mit den Werten <b>Herr<\/b>, <b>Frau <\/b>und <b>Firma <\/b>aufnehmen. Au&szlig;erdem erh&auml;lt diese Tabelle ein Prim&auml;rschl&uuml;sselfeld namens <b>AnredeID <\/b>und wird unter dem Namen <b>tblAnreden <\/b>gespeichert (siehe Bild 9).<\/p>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/pic_503_010.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/pic_503_010.png\" alt=\"Tabelle mit Anreden\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 9: Tabelle mit Anreden<\/p>\n<p>Aus der Tabelle <b>tblKundenMitAnredeID <\/b>entfernen wir das Feld <b>Anrede <\/b>und f&uuml;gen ein neues Fremdschl&uuml;sselfeld namens <b>AnredeID <\/b>hinzu.<\/p>\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\/55000503\/\">\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\/55000503?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\/55000503\/\"\/>\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>Der Entwurf eines Datenmodells und der darin enthaltenen Tabellen und Beziehungen erfordert vor allem eines: Das Ber&uuml;cksichtigen der Normalformen. Dies sind Regeln, mit denen Sie die ben&ouml;tigten Felder auf verschiedene Tabellen aufteilen. Dabei ist das Ziel, redundante Daten auszuschlie&szlig;en und Inkonsistenzen zu verhindern. Diese Artikelreihe beschreibt die wichtigsten Normalformen und wie Sie diese in der Praxis anwenden. <\/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":[662020,66062020,44000003],"tags":[],"class_list":["post-55000503","post","type-post","status-publish","format-standard","hentry","category-662020","category-66062020","category-Tabellen_entwerfen"],"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>Normalisierung, Teil 2: Die zweite Normalform - Access [basics]<\/title>\n<meta name=\"description\" content=\"Der Entwurf eines Datenmodells und der darin enthaltenen Tabellen und Beziehungen erfordert vor allem eines: Das Ber\u00fccksichtigen der Normalformen. Dies sind Regeln, mit denen Sie die ben\u00f6tigten Felder auf verschiedene Tabellen aufteilen. Dabei ist das Ziel, redundante Daten auszuschlie\u00dfen und Inkonsistenzen zu verhindern. Diese Artikelreihe beschreibt die wichtigsten Normalformen und wie Sie diese in der Praxis anwenden.\" \/>\n<link rel=\"canonical\" href=\"https:\/\/access-basics.de\/index.php\/Normalisierung_Teil_2_Die_zweite_Normalform.html\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Normalisierung, Teil 2: Die zweite Normalform - Access [basics]\" \/>\n<meta property=\"og:description\" content=\"Der Entwurf eines Datenmodells und der darin enthaltenen Tabellen und Beziehungen erfordert vor allem eines: Das Ber\u00fccksichtigen der Normalformen. Dies sind Regeln, mit denen Sie die ben\u00f6tigten Felder auf verschiedene Tabellen aufteilen. Dabei ist das Ziel, redundante Daten auszuschlie\u00dfen und Inkonsistenzen zu verhindern. Diese Artikelreihe beschreibt die wichtigsten Normalformen und wie Sie diese in der Praxis anwenden.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-basics.de\/index.php\/Normalisierung_Teil_2_Die_zweite_Normalform.html\" \/>\n<meta property=\"og:site_name\" content=\"Access [basics]\" \/>\n<meta property=\"article:published_time\" content=\"2020-12-01T00:00:00+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_503_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=\"20\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\/Normalisierung_Teil_2_Die_zweite_Normalform.html#primaryimage\",\"inLanguage\":\"de\",\"url\":\"http:\/\/vg08.met.vgwort.de\/na\/52c505db7d92453398806fc7fae091d0\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/access-basics.de\/index.php\/Normalisierung_Teil_2_Die_zweite_Normalform.html#webpage\",\"url\":\"https:\/\/access-basics.de\/index.php\/Normalisierung_Teil_2_Die_zweite_Normalform.html\",\"name\":\"Normalisierung, Teil 2: Die zweite Normalform - Access [basics]\",\"isPartOf\":{\"@id\":\"https:\/\/access-basics.de\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/access-basics.de\/index.php\/Normalisierung_Teil_2_Die_zweite_Normalform.html#primaryimage\"},\"datePublished\":\"2020-12-01T00:00:00+00:00\",\"dateModified\":\"-0001-11-30T00:00:00+00:00\",\"author\":{\"@id\":\"https:\/\/access-basics.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f\"},\"description\":\"Der Entwurf eines Datenmodells und der darin enthaltenen Tabellen und Beziehungen erfordert vor allem eines: Das Ber\\u00fccksichtigen der Normalformen. Dies sind Regeln, mit denen Sie die ben\\u00f6tigten Felder auf verschiedene Tabellen aufteilen. Dabei ist das Ziel, redundante Daten auszuschlie\\u00dfen und Inkonsistenzen zu verhindern. Diese Artikelreihe beschreibt die wichtigsten Normalformen und wie Sie diese in der Praxis anwenden.\",\"breadcrumb\":{\"@id\":\"https:\/\/access-basics.de\/index.php\/Normalisierung_Teil_2_Die_zweite_Normalform.html#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/access-basics.de\/index.php\/Normalisierung_Teil_2_Die_zweite_Normalform.html\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/access-basics.de\/index.php\/Normalisierung_Teil_2_Die_zweite_Normalform.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\/Normalisierung_Teil_2_Die_zweite_Normalform.html\",\"url\":\"https:\/\/access-basics.de\/index.php\/Normalisierung_Teil_2_Die_zweite_Normalform.html\",\"name\":\"Normalisierung, Teil 2: Die zweite Normalform\"}}]},{\"@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\/55000503","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=55000503"}],"version-history":[{"count":0,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/posts\/55000503\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/media?parent=55000503"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/categories?post=55000503"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/tags?post=55000503"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}