{"id":4045,"date":"2016-06-14T07:45:37","date_gmt":"2016-06-14T05:45:37","guid":{"rendered":"http:\/\/www.ramses.de\/?p=4045"},"modified":"2016-06-16T19:14:02","modified_gmt":"2016-06-16T17:14:02","slug":"faq-access-konventionen-fuer-feldnamen","status":"publish","type":"post","link":"https:\/\/www.ramses.de\/?p=4045","title":{"rendered":"FAQ Access &#8211; Konventionen f\u00fcr Feldnamen"},"content":{"rendered":"<div>\n<h1>Access Grundlagen &#8211; Welche Feldnamen sind &#8222;gut&#8220;<\/h1>\n<\/div>\n<div>\n<h2><strong>Problem <\/strong><\/h2>\n<p>In einer Access Datenbank mit Ihren hunderten von Tabellen muss es Regeln f\u00fcr die Bezeichnung von Feldnamen geben. Andernfalls droht das Chaos.<\/p>\n<h2><strong>L\u00f6sung <\/strong><\/h2>\n<p>Entscheidend ist, das Sie sich eine Regel f\u00fcr die Benennung \u00fcberlegen. Die hier vorgestellte Variante ist aufgrund meiner Erfahrung entstanden.<br \/>\nDiese Regel kann auch f\u00fcr Sie passen, muss aber nicht. Von daher nehmen Sie die hier gezeigten Vorschl\u00e4ge einfach als Vorlage f\u00fcr Ihre eigenen \u00dcberlegungen.<\/p>\n<\/div>\n<h3>Die Grundidee<\/h3>\n<p>Bei der Vergabe von Feldnamen mu\u00df darauf geachtet werden, da\u00df die Feldnamen<\/p>\n<ul>\n<li>kurz und pr\u00e4gnant sind<\/li>\n<li>einen Hinweis auf die Tabellenherkunft geben<\/li>\n<li>die Rolle im Beziehungsgeflecht zeigen<\/li>\n<li>SQL Server konform sind<\/li>\n<li>einzigartig sind, also nicht doppelt vorkommen<\/li>\n<\/ul>\n<h3>SQL Server Konformit\u00e4t<\/h3>\n<p>Access ist bei den M\u00f6glichkeiten de Feldnamen relativ freiz\u00fcgig. Sie k\u00f6nnen bis zu 64 Zeichen verwenden, Leerzeichen, Gro\u00df- und Kleinschreibung, Sonderzeichen oder deutsche Granaten wie \u00f6, \u00e4, \u00fc oder \u00df sind kein Problem.<\/p>\n<p>Die diversen SQL Server sind hier in der Regel weniger tolerant, Die L\u00e4nge ist meist begrenzt, Gro\u00df- und Kleinschreibung wird unterschieden etc.<\/p>\n<p>Wird nun unser Datenbank Projekt in Access gestartet und soll sp\u00e4ter auf den SQL Server migriert werden, so w\u00fcrde das bedeutet, das wir unter Umst\u00e4nden viele Feldnamen anpassen m\u00fcssten. Was f\u00fcr eine Katastrophe. Daher vergeben wir von Anfang an im Access Feldnamen, die auch auf dem SQL Server funktionieren. Das bedeutet, das wir sp\u00e4ter nichts \u00e4ndern m\u00fcssen. Daraus folgt<\/p>\n<ul>\n<li>Keine Sonderzeichen<\/li>\n<li>Keine Umlaute<\/li>\n<li>Keine Leerzeichen<\/li>\n<li>Konsequente Gro\u00dfschreibung<\/li>\n<\/ul>\n<p>Im Falle einer zu speichernden Stra\u00dfe w\u00fcrde aus<\/p>\n<ul>\n<li>\n<pre>Stra\u00dfe<\/pre>\n<\/li>\n<\/ul>\n<p>nun ein<\/p>\n<ul>\n<li>\n<pre>STR<\/pre>\n<\/li>\n<\/ul>\n<h3><\/h3>\n<h3>Tabellenherkunft<\/h3>\n<p>Ich liebe es, wenn ich Fehlermeldung bekomme wie &#8222;Das Feld Stra\u00dfe ist zu klein f\u00fcr den Inhalt&#8230;&#8220; und ich wei\u00df im Leben nicht, ob nun die Stra\u00dfe des Kunden, des Lieferanten, des Mitarbeiters oder des n\u00e4chsten Mc&#8216; Donalds gemeint ist. Der Feldname Stra\u00dfe gibt also keine Aussage \u00fcber die Tabellenherkunft des Feldes an.<\/p>\n<p>Findet Access in einer Abfrage zwei gleichnamige Felder wie Stra\u00dfe vor, so unterscheidet er die beiden Felder dadurch, dass er die Tabellenherkunft als Prefix benutzt.<\/p>\n<ul>\n<li>\n<pre>Kunden.Stra\u00dfe\r\n<\/pre>\n<\/li>\n<li>\n<pre>Lieferanten.Stra\u00dfe<\/pre>\n<\/li>\n<\/ul>\n<p>Dieses Voranstellen der Tabellenherkunft greifen wir auf und denken uns f\u00fcr jede Tabelle ein K\u00fcrzel aus. So w\u00e4re folgende Vorgehensweise denkbar<\/p>\n<ul>\n<li>\n<pre>Kunden - <strong><span style=\"color: #0000ff;\">KD<\/span><\/strong><\/pre>\n<\/li>\n<li>\n<pre>Lieferanten - <strong><span style=\"color: #0000ff;\">LF<\/span><\/strong><\/pre>\n<\/li>\n<li>\n<pre>Bestellungen\u00a0- <strong><span style=\"color: #0000ff;\">BS<\/span><\/strong><\/pre>\n<\/li>\n<\/ul>\n<p>Daraus folgt dann, das dieses K\u00fcrzel den Feldnamen vorangestellt wird.<\/p>\n<ul>\n<li>\n<pre><strong><span style=\"color: #0000ff;\">KD<\/span><\/strong>STR<\/pre>\n<\/li>\n<li>\n<pre><strong><span style=\"color: #0000ff;\">LF<\/span><\/strong>STR<\/pre>\n<\/li>\n<li>\n<pre><strong><span style=\"color: #0000ff;\">BS<\/span><\/strong>STR<\/pre>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p>Durch diesen kleinen Kunstgriff erreichen wir, das jedes Feld seine Tabellenherkunft verr\u00e4t und gleichzeitig sorgen wir daf\u00fcr, dass jeder Feldname einzigartig ist, wir also keine doppelten Feldnamen bekommen k\u00f6nnen.<\/p>\n<h3>Die Rolle im Beziehungsgeflecht<\/h3>\n<p>Ein Feld kann in den Beziehungen einer Datenbank die Rolle des Prim\u00e4rschl\u00fcssel \u00fcbernehmen, es kann als Fremdschl\u00fcssel fungieren oder aber \u00fcberhaupt keine Rolle in den Beziehungen spielen.<\/p>\n<p>Prim\u00e4rschl\u00fcssel werden von Access gerne mit dem Feldnamen ID versehen, diese Idee greifen wie auf, allerdings erg\u00e4nzen wir diese Info durch die oben genannte Tabellenherkunft. Daraus folgt<\/p>\n<ul>\n<li>\n<pre><strong><span style=\"color: #0000ff;\"><span style=\"color: #ff0000;\">ID<\/span>KD<\/span><\/strong>NR<\/pre>\n<\/li>\n<li>\n<pre><strong><span style=\"color: #0000ff;\"><span style=\"color: #ff0000;\">ID<\/span>LF<\/span><\/strong>NR<\/pre>\n<\/li>\n<li>\n<pre><strong><span style=\"color: #0000ff;\"><span style=\"color: #ff0000;\">ID<\/span>BS<\/span><\/strong>NR<\/pre>\n<\/li>\n<\/ul>\n<p>Damit ist sowohl die Eigenschaft als Prim\u00e4rschl\u00fcssel als auch die Tabellenherkunft klar.<\/p>\n<p>Fremdschl\u00fcssel werden im englischen auch als Foreignkey bezeichnet. Das ist nun namensgebend f\u00fcr unsere Felder. Als K\u00fcrzel verwenden wir das FK f\u00fcr die Fremdschl\u00fcssel. Nehmen wir also an, wir haben die Kundennummer auch in der Bestellung. Der Feldname w\u00e4re hier<\/p>\n<pre><strong><span style=\"color: #0000ff;\"><span style=\"color: #339966;\">FK<\/span>BS<\/span><\/strong>KDNR<\/pre>\n<ul>\n<li><strong><span style=\"color: #0000ff;\"><span style=\"color: #339966;\">FK <\/span><\/span><\/strong><span style=\"color: #808080;\">Ich bin ein Fremdschl\u00fcssel, also die n Seite einer Beziehung<\/span><strong><span style=\"color: #0000ff;\"><span style=\"color: #339966;\"><br \/>\n<\/span><\/span><\/strong><\/li>\n<li><strong><span style=\"color: #0000ff;\">BS <\/span><\/strong><span style=\"color: #808080;\">Ich stehe in der Tabelle BS also Bestellungen<\/span><strong><span style=\"color: #0000ff;\"><br \/>\n<\/span><\/strong><\/li>\n<li>KDNR Mein Weg f\u00fchrt mich in die Tabelle KD<\/li>\n<\/ul>\n<p>Und hier mal ein kleines Abbild eines entsprechenden Beziehungsfenstes<\/p>\n<p>&nbsp;<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-4055 size-full\" src=\"https:\/\/www.ramses.de\/wp-content\/uploads\/Beziehungen.jpg\" alt=\"Beziehungen\" width=\"797\" height=\"500\" srcset=\"https:\/\/www.ramses.de\/wp-content\/uploads\/Beziehungen.jpg 797w, https:\/\/www.ramses.de\/wp-content\/uploads\/Beziehungen-300x188.jpg 300w, https:\/\/www.ramses.de\/wp-content\/uploads\/Beziehungen-768x482.jpg 768w\" sizes=\"auto, (max-width: 797px) 100vw, 797px\" \/><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Access Grundlagen &#8211; Welche Feldnamen sind &#8222;gut&#8220; Problem In einer Access Datenbank mit Ihren hunderten von Tabellen muss es Regeln f\u00fcr die Bezeichnung von Feldnamen &#8230; <a title=\"FAQ Access &#8211; Konventionen f\u00fcr Feldnamen\" class=\"read-more\" href=\"https:\/\/www.ramses.de\/?p=4045\" aria-label=\"Mehr Informationen \u00fcber FAQ Access &#8211; Konventionen f\u00fcr Feldnamen\">Weiterlesen &#8230;<\/a><\/p>\n","protected":false},"author":1,"featured_media":4055,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[47,43],"tags":[58],"class_list":["post-4045","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-access","category-faq","tag-access-2010","resize-featured-image"],"_links":{"self":[{"href":"https:\/\/www.ramses.de\/index.php?rest_route=\/wp\/v2\/posts\/4045","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.ramses.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.ramses.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.ramses.de\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.ramses.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=4045"}],"version-history":[{"count":9,"href":"https:\/\/www.ramses.de\/index.php?rest_route=\/wp\/v2\/posts\/4045\/revisions"}],"predecessor-version":[{"id":4056,"href":"https:\/\/www.ramses.de\/index.php?rest_route=\/wp\/v2\/posts\/4045\/revisions\/4056"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.ramses.de\/index.php?rest_route=\/wp\/v2\/media\/4055"}],"wp:attachment":[{"href":"https:\/\/www.ramses.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=4045"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.ramses.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=4045"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.ramses.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=4045"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}