Grundlagen des Datenbankentwurfs

Durch eine ordnungsgemäß entworfene Datenbank wird Ihnen der Zugriff auf aktuelle, präzise Informationen bereitgestellt. Da der richtige Entwurf unerlässlich ist, um Ihre Ziele beim Arbeiten mit einer Datenbank zu erreichen, ist es sinnvoll, die zum Erlernen der Prinzipien eines guten Entwurfs erforderliche Zeit zu investieren. Letztlich ist so die Wahrscheinlichkeit höher, dass die Datenbank den Anforderungen entspricht und auch Änderungen problemlos gewachsen ist.

Dieser Artikel enthält Richtlinien für das Planen einer Desktopdatenbank. Sie erfahren, wie Sie entscheiden, welche Informationen benötigt werden, wie Sie diese Informationen auf die entsprechenden Tabellen und Spalten aufteilen und wie sich diese Tabellen aufeinander beziehen. Lesen Sie diesen Artikel, bevor Sie Ihre erste Desktopdatenbank erstellen.

 Wichtig   Microsoft Access 2010 bietet eine neue Entwurfsumgebung, in der Sie Datenbankanwendungen für das Web erstellen können. Beim Entwerfen für das Web sind zahlreiche Entwurfsaspekte anders. In diesem Artikel wird der Anwendungsentwurf von Datenbanken für das Web nicht behandelt. Weitere Informationen hierzu finden Sie im Artikel Erstellen einer im Web freizugebenden Datenbank.

Inhalt dieses Artikels


Datenbankbegriffe, die Sie kennen sollten

In Access 2010 werden die Informationen in Tabellen organisiert: Listen mit Zeilen und Spalten, die an den Block eines Buchhalters oder an ein Tabellenblatt erinnern. Eine einfache Datenbank enthält möglicherweise nur eine einzige Tabelle. Für die meisten Datenbanken werden jedoch mehrere Tabellen benötigt. So können Sie z. B. eine Tabelle haben, in der Informationen zu Artikeln gespeichert werden, eine weitere, in der Informationen zu Bestellungen gespeichert werden, und eine weitere Tabelle mit Informationen zu Kunden.

Bild mit drei Tabellen in der Datenblattansicht

Die einzelnen Zeilen werden korrekterweise als Datensätze und einzelnen Spalten als Felder bezeichnet. Ein Datensatz ist eine aussagekräftige und konsistente Möglichkeit, Informationen zu einem Thema zu kombinieren. Ein Feld ist ein einzelnes Informationselement, d. h. ein Elementtyp, der in jedem Datensatz angezeigt wird. In der Tabelle Products (Artikel) z. B. enthält jede Zeile bzw. jeder Datensatz Informationen zu einem einzigen Artikel. Jede Spalte bzw. jedes Feld enthält einen Informationstyp zu diesem Artikel, z. B. den Namen oder den Preis.

Seitenanfang Seitenanfang

Was ist ein guter Datenbankentwurf?

Für den Datenbankentwurfsprozess gelten bestimmte Prinzipien. Das erste Prinzip besteht darin, dass doppelte Informationen (werden auch als redundante Daten bezeichnet) schlecht sind, da durch sie Platz verschwendet wird und die Wahrscheinlichkeit von Fehlern und Inkonsistenzen steigt. Gemäß dem zweiten Prinzip ist es wichtig, dass die Informationen richtig und vollständig sind. Wenn die Datenbank falsche Informationen enthält, enthalten alle Berichte, für die Informationen aus der Datenbank abgerufen werden, ebenfalls falsche Informationen. Daher beruhen alle Entscheidungen, die Sie basierend auf diesen Berichten treffen, auf Fehlinformationen.

Ein guter Datenbankentwurf erfüllt daher folgende Bedingungen:

  • Die Informationen werden in themenbasierte Tabellen aufgeteilt, um redundante Daten zu reduzieren.
  • Access werden die Informationen bereitgestellt, die erforderlich sind, damit die Informationen in den Tabellen nach Bedarf miteinander verknüpft werden können.
  • Die Genauigkeit und Integrität der Informationen wird unterstützt und sichergestellt.
  • Die Anforderungen an die Datenverarbeitung und Berichterstellung werden unterstützt.

Seitenanfang Seitenanfang

Der Entwurfsprozess

Der Entwurfsprozess besteht aus den folgenden Schritten:

  • Festlegen des Verwendungszwecks der Datenbank    

Dies erleichtert die Vorbereitung der verbleibenden Schritte.

  • Suchen und Organisieren der erforderlichen Informationen     

Sammeln Sie alle Informationstypen, die in der Datenbank aufgezeichnet werden sollen, z. B. Artikelname und Bestellnummer.

  • Aufteilen der Informationen in Tabellen    

Teilen Sie die Informationselemente in Haupteinheiten oder Themen auf, z. B. Artikel oder Bestellungen. Jedes Thema wird dann zu einer Tabelle.

  • Umwandeln von Informationselementen in Spalten    

Entscheiden Sie, welche Informationen in den einzelnen Tabellen gespeichert werden sollen. Jedes Element wird zu einem Feld, das als Spalte in der Tabelle angezeigt wird. Beispielsweise kann eine Employees-Tabelle (Mitarbeiter) Felder wie Vorname und Einstellungsdatum enthalten.

  • Angeben von Primärschlüsseln    

Wählen Sie die Primärschlüssel der einzelnen Tabellen aus. Der Primärschlüssel ist eine Spalte, die zum eindeutigen Identifizieren der einzelnen Zeilen verwendet wird. Ein Beispiel wäre Product ID (Artikel-Nr) oder Order ID (Bestell-Nr).

  • Einrichten der Tabellenbeziehungen    

Prüfen Sie die einzelnen Tabellen darauf hin, wie die Daten in einer Tabelle sich auf die Daten in anderen Tabellen beziehen. Fügen Sie Tabellen Felder hinzu, oder erstellen Sie nach Bedarf neue Tabellen, um die Beziehungen zu verdeutlichen.

  • Überarbeiten Ihres Entwurfs    

Analysieren Sie den Entwurf auf Fehler. Erstellen Sie die Tabellen, und fügen Sie einige Datensätze mit Beispieldaten hinzu. Überprüfen Sie, ob die Tabellen die gewünschten Ergebnisse erbringen. Nehmen Sie ggf. Anpassungen am Entwurf vor.

  • Anwenden der Normalisierungsregeln    

Wenden Sie die Datennormalisierungsregeln an, um zu überprüfen, ob die Tabellen richtig strukturiert sind. Nehmen Sie ggf. Anpassungen an den Tabellen vor.

Seitenanfang Seitenanfang

Bestimmen des Zwecks der Datenbank

Es empfiehlt sich, den Zweck der Datenbank auf Papier aufzuschreiben: Zweck, erwartete Verwendung und geplante Benutzer. Für eine kleine Datenbank für ein Heimbüro z. B. würden Sie etwas Einfaches schreiben wie "Die Kundendatenbank enthält eine Liste mit Kundeninformationen zum Zweck des Erstellens von Sendungen und Berichten". Wenn die Datenbank komplexer ist oder von vielen Personen verwendet wird, wie dies oft in Unternehmen der Fall ist, kann der Zweck auch durchaus einen Absatz oder mehr umfassen und sollte besagen, wann und auf welche Weise die einzelnen Personen die Datenbank verwenden werden. Es sollte sich um eine gut formulierte Aufgabenbeschreibung handeln, auf die während des gesamten Entwurfsprozesses zurückgegriffen werden kann. Eine solche Beschreibung erleichtert Ihnen das Treffen zielgerichteter Entscheidungen.

Seitenanfang Seitenanfang

Suchen und Organisieren der erforderlichen Informationen

Beginnen Sie beim Suchen und Organisieren der erforderlichen Informationen mit den vorhandenen Informationen. Beispielsweise zeichnen Sie möglicherweise Einkaufsbestellungen in einem Hauptbuch auf oder bewahren Kundeninformationen auf Papierformularen in einem Aktenschrank auf. Sammeln Sie diese Dokumente, und listen Sie die einzelnen Informationstypen auf (z. B. jedes Feld, das Sie in einem Formular ausfüllen). Wenn keine Formulare vorhanden sind, stellen Sie sich stattdessen vor, Sie müssten ein Formular entwerfen, um die Kundeninformationen aufzuzeichnen. Welche Informationen würden Sie in das Formular aufnehmen? Welche Ausfüllfelder würden Sie erstellen? Identifizieren Sie die einzelnen Elemente, und listen Sie sie auf. Nehmen wir z. B. an, Sie führen die Kundenliste zurzeit auf Karteikarten. Die Überprüfung dieser Karten ergibt, dass die Karten jeweils einen Kundennamen, eine Adresse, einen Ort, ein Bundesland/Kanton, eine Postleitzahl und eine Telefonnummer enthalten. Jedes dieser Elemente stellt eine potenzielle Spalte in einer Tabelle dar.

Machen Sie sich beim Vorbereiten dieser Liste keine Sorgen, dass sie auf Anhieb perfekt sein muss. Listen Sie stattdessen jedes Element auf, das Ihnen einfällt. Wenn die Datenbank von anderen Personen verwendet werden soll, fragen Sie auch diese nach Ideen. Sie können die Liste später optimieren.

Ziehen Sie als Nächstes die Berichts- oder Sendungstypen in Betracht, die möglicherweise aus der Datenbank erzeugt werden sollen. Beispielsweise möchten Sie möglicherweise einen Artikelverkaufsbericht erstellen, in dem die Verkäufe nach Region angezeigt werden, oder einen Inventurzusammenfassungsbericht, in dem Artikelbestände angezeigt werden. Möglicherweise möchten Sie auch an Kunden zu sendende Serienbriefe generieren, in denen Verkaufsereignisse angekündigt oder Prämien angeboten werden. Entwerfen Sie den Bericht in Gedanken, und stellen Sie sich vor, wie er aussehen würde. Welche Informationen würden Sie in den Bericht aufnehmen? Listen Sie die einzelnen Elemente auf. Gehen Sie für den Serienbrief und für alle anderen Berichte, die Sie voraussichtlich erstellen werden, genauso vor.

Person, die sich einen Artikelinventurbericht vorstellt

Das Nachdenken über die Berichte und Sendungen, die Sie möglicherweise erstellen werden, hilft beim Identifizieren der Elemente, die Sie in der Datenbank benötigen. Nehmen wir z. B. an, Sie geben Kunden die Möglichkeit, regelmäßige E-Mail-Updates zu abonnieren (oder Abonnements zu kündigen), und möchten eine Liste der Personen drucken, die die Updates abonniert haben. Zum Aufzeichnen dieser Informationen fügen Sie der Customers-Tabelle (Kunden) eine Send E-Mail-Spalte (E-Mail senden) hinzu. Sie können das Feld für jeden Kunden auf Yes (Ja) oder No (Nein) festlegen.

Die Anforderung, E-Mail-Nachrichten an Kunden zu senden, lässt darauf schließen, dass ein weiteres Element aufgezeichnet werden muss. Wenn Sie wissen, dass ein Kunde E-Mail-Nachrichten empfangen möchte, müssen Sie auch die E-Mail-Adresse kennen, an die die Nachrichten gesendet werden sollen. Daher müssen Sie für jeden Kunden eine E-Mail-Adresse aufzeichnen.

Es ist sinnvoll, einen Prototyp für jeden Bericht oder jede Ausgabeauflistung zu erstellen und zu berücksichtigen, welche Elemente Sie zum Erzeugen des Berichts benötigen. Wenn Sie z. B. einen Serienbrief untersuchen, sind einige Punkte zu berücksichtigen. Wenn Sie eine richtige Anrede einschließen möchten, die Zeichenfolge "Herr" oder "Frau", mit der eine Grußformel beginnt, müssen Sie ein Anredeelement erstellten. Außerdem beginnen Sie einen Brief möglicherweise meist mit "Sehr geehrter Herr Haas" anstatt mit "Sehr geehrter Herr Jonathan Haas". Dies lässt darauf schließen, dass Sie normalerweise den Nachnamen getrennt vom Vornamen speichern möchten.

Ein wichtiger Punkt ist, dass die einzelnen Informationselemente in die kleinsten hilfreichen Teile aufgeteilt werden sollten. Sie teilen einen Namen in zwei Teile auf (Vorname und Nachname), damit der Nachname schnell zur Verfügung steht. Beim Sortieren eines Berichts nach Nachnamen z. B. ist es hilfreich, wenn der Nachname des Kunden separat gespeichert ist. Im Allgemeinen sollten Sie Informationselemente, auf deren Grundlage Sie sortieren, suchen, berechnen oder Berichte erstellen möchten, in einem eigenen Feld speichern.

Denken Sie über die Fragen nach, die mithilfe der Datenbank beantwortet werden sollen. Beispiele: Wie viele Verkäufe Ihres ausgewählten Artikels haben Sie im letzten Monat abgeschlossen? Wo wohnen die besten Kunden? Wer ist der Lieferant des meistverkauften Artikels? Durch die Vorwegnahme dieser Fragen können Sie zusätzliche Elemente bestimmen, die aufgezeichnet werden müssen.

Nach dem Sammeln dieser Informationen sind Sie für den nächsten Schritt bereit.

Seitenanfang Seitenanfang

Aufteilen der Informationen in Tabellen

Wählen Sie zum Aufteilen der Informationen in Tabellen die Hauptelemente oder Themen aus. Beispielsweise kann nach dem Suchen und Organisieren der Informationen für eine Artikelverkaufsdatenbank die vorläufige Liste so aussehen:

Handschriftliche Informationselemente nach Themen gruppiert

Die hier gezeigten Hauptelemente sind die Artikel, die Lieferanten, die Kunden und die Bestellungen. Daher ist es sinnvoll, mit diesen vier Tabellen zu beginnen: eine für Fakten zu Artikeln, eine für Fakten zu Lieferanten, eine für Fakten zu Kunden und eine für Fakten zu Bestellungen. Obwohl die Liste damit nicht vollständig ist, stellt sie einen guten Ausgangspunkt dar. Sie können die Liste weiter optimieren, bis Sie einen funktionsfähigen Entwurf haben.

Beim ersten Überprüfen der vorläufigen Liste der Elemente sind Sie möglicherweise versucht, alle in einer einzigen Tabelle zu speichern statt in den in der vorstehenden Abbildung gezeigten vier Tabellen. Hier erfahren Sie, weshalb sich das nicht empfiehlt. Sehen Sie sich die hier gezeigte Tabelle an:

Bild mit Tabelle, die Artikel und Lieferanten enthält

In diesem Fall enthält jede Zeile Informationen sowohl zum Artikel als auch zum jeweiligen Lieferanten. Da Sie viele Artikel vom gleichen Lieferanten haben können, müssen die Informationen für den Lieferantennamen und die Adresse mehrfach wiederholt werden. Dadurch wird Speicherplatz verschwendet. Eine bessere Lösung ist es, die Lieferanteninformationen nur ein Mal in einer separaten Suppliers-Tabelle (Lieferanten) aufzuzeichnen und dann diese Tabelle mit der Products-Tabelle (Artikel) zu verknüpfen.

Ein zweites Problem dieses Entwurfs zeigt sich, wenn Sie Informationen zum Lieferanten ändern müssen. Nehmen wir z. B. an, Sie müssen die Adresse eines Lieferanten ändern. Da sie an vielen Stellen angezeigt wird, ändern Sie möglicherweise versehentlich die Adresse an einer Stelle und vergessen, sie an den anderen Stellen zu ändern. Durch das Aufzeichnen der Adresse des Lieferanten an nur einer Stelle wird das Problem gelöst.

Versuchen Sie beim Entwerfen der Datenbank immer, die einzelnen Fakten nur ein Mal aufzuzeichnen. Wenn Sie feststellen, dass Sie die gleichen Informationen, z. B. die Adresse eines bestimmten Lieferanten, an mehreren Stellen wiederholen, speichern Sie diese Informationen in einer separaten Tabelle.

Nehmen wir schließlich an, es gibt nur einen von der Coho Winery gelieferten Artikel, und Sie möchten den Artikel löschen, aber die Informationen zum Lieferantennamen und der Adresse beibehalten. Wie löschen Sie den Artikeldatensatz, ohne auch die Lieferanteninformationen zu verlieren? Das ist nicht möglich. Da jeder Datensatz Fakten zu einem Artikel sowie Fakten zu einem Lieferanten enthält, können Sie das eine nicht ohne das andere löschen. Sie müssen die Tabelle in zwei Tabellen aufteilen, damit diese Fakten separat bleiben: eine Tabelle für Artikelinformationen und eine weitere Tabelle für Lieferanteninformationen. Beim Löschen eines Artikeldatensatzes werden nur die Fakten zum Artikel gelöscht, nicht die Fakten zum Lieferanten.

Wenn Sie das durch eine Tabelle dargestellte Thema ausgewählt haben, sollten in den Spalten in dieser Tabelle nur Fakten zu diesem Thema gespeichert werden. Beispielsweise sollten in der Products-Tabelle (Artikel) nur Fakten zu Artikeln gespeichert werden. Da die Lieferantenadresse zu den Fakten zum Lieferanten und nicht zu den Fakten zum Artikel gehört, gehört sie in die Suppliers-Tabelle (Lieferanten).

Seitenanfang Seitenanfang

Umwandeln von Informationselementen in Spalten

Zum Bestimmen der Spalten in einer Tabelle entscheiden Sie, welche Informationen Sie zum in der Tabelle aufgezeichneten Thema nachverfolgen müssen. Beispielsweise besteht eine anfängliche Spaltenliste für die Customers-Tabelle (Kunden) aus den Spalten Name (Name), Address (Adresse), City-State-Zip (Ort-Bundesland-PLZ), Send e-mail (E-Mail senden), Salutation (Anrede) und E-mail address (E-Mail-Adresse). Da jeder Datensatz in der Tabelle den gleichen Satz Spalten enthält, können Sie Informationen zu Name, Address, City-State-Zip, Send e-mail, Salutation und E-mail address für jeden Datensatz speichern. Die Adressenspalte z. B. enthält die Adressen von Kunden. Jeder Datensatz enthält Daten zu einem Kunden, und das Adressfeld enthält die Adresse für diesen Kunden.

Wenn Sie den anfänglichen Satz Spalten für jede Tabelle bestimmt haben, können Sie die Spalten weiter optimieren. Beispielsweise ist es sinnvoll, den Kundennamen in zwei separaten Spalten (Vorname und Nachname) zu speichern, damit Sie nach nur diesen Spalten sortieren, suchen und indizieren können. Analog besteht die Adresse tatsächlich aus fünf separaten Komponenten (Adresse, Ort, Bundesland/Kanton, Postleitzahl und Land/Region), und es ist sinnvoll, auch diese in separaten Spalten zu speichern. Wenn Sie z. B. einen Such-, Filter- oder Sortiervorgang nach Bundesländern ausführen möchten, müssen die Informationen zum Bundesland in einer separaten Spalte gespeichert sein.

Sie müssen auch berücksichtigen, ob die Datenbank nur Inlandsinformationen oder auch internationale Informationen enthalten soll. Wenn Sie z. B. planen, internationale Adressen zu speichern, müssen Sie statt der State-Spalte (Bundesland) die Region-Spalte verwenden, da eine solche Spalte sich sowohl für inländische Bundesländer als auch für die Regionen anderer Länder/Regionen eignet. Analog ist Postal Code (Postleitzahl) sinnvoller als Zip Code (PLZ), wenn Sie internationale Adressen speichern werden.

Die folgende Liste enthält einige Tipps zum Bestimmen der Spalten.

  • Schließen Sie keine berechneten Daten ein    

In den meisten Fällen sollten Sie in Tabellen keine Berechnungsergebnisse speichern. Lassen Sie stattdessen die Berechnungen von Access ausführen, wenn Sie das Ergebnis sehen möchten. Nehmen wir z. B. an, es gibt einen Bericht Products On Order (Bestellte Artikel), in dem die Zwischensumme der bestellten Einheiten für jede Artikelkategorie in der Datenbank angezeigt wird. Es gibt jedoch in keiner Tabelle eine Units On Order-Zwischensummenspalte (Bestellte Einheiten). Stattdessen enthält die Products-Tabelle (Artikel) eine Units On Order-Spalte, in der die bestellten Einheiten für jeden Artikel gespeichert werden. Mithilfe dieser Daten wird in Access jedes Mal, wenn Sie den Bericht drucken, die Zwischensumme berechnet. Die Zwischensumme selbst sollte nicht in einer Tabelle gespeichert werden.

  • Speichern Sie Informationen in den kleinsten logischen Teilen    

Sie sind möglicherweise versucht, ein einziges Feld für vollständige Namen oder für Artikelnamen und Artikelbeschreibungen zu verwenden. Wenn Sie mehrere Informationsarten in einem Feld kombinieren, ist es schwierig, später einzelne Fakten abzurufen. Versuchen Sie, die Informationen in logische Teile aufzuteilen. Erstellen Sie z. B. separate Felder für Vor- und Nachnamen oder für Artikelnamen, Kategorien und Beschreibungen.

Liste der Informationselemente während des Entwurfsprozesses

Wenn Sie die Datenspalten in den einzelnen Tabellen optimiert haben, können Sie den Primärschlüssel der einzelnen Tabellen auswählen.

Seitenanfang Seitenanfang

Angeben von Primärschlüsseln

Jede Tabelle sollte eine Spalte oder einen Satz Spalten enthalten, durch die die einzelnen in der Tabelle gespeicherten Zeilen eindeutig identifiziert werden. Dies ist oft eine eindeutige Identifizierungsnummer, z. B. eine Personalnummer oder eine Seriennummer. In der Datenbankterminologie werden diese Informationen als Primärschlüssel der Tabelle bezeichnet. In Access werden Primärschlüsselfelder verwendet, um schnell Daten aus mehreren Tabellen zuzuordnen und zu kombinieren.

Wenn Sie bereits einen eindeutigen Bezeichner für eine Tabelle haben, z. B. eine Artikelnummer, durch die ein Artikel im Katalog eindeutig identifiziert wird, können Sie diesen Bezeichner als Primärschlüssel der Tabelle verwenden. Dies ist jedoch nur möglich, wenn die Werte in dieser Spalte immer für jeden Datensatz unterschiedlich sind. Ein Primärschlüssel kann keine Wertduplikate enthalten. Verwenden Sie z. B. nicht die Namen von Personen als Primärschlüssel, da Namen nicht eindeutig sind. Es ist leicht möglich, dass in der gleichen Tabelle zwei Personen mit dem gleichen Namen vorhanden sind.

Ein Primärschlüssel muss immer einen Wert haben. Wenn zu irgendeinem Zeitpunkt die Zuweisung des Werts einer Spalte aufgehoben werden kann oder der Wert unbekannt sein kann (fehlender Wert), kann er nicht als Komponente eines Primärschlüssels verwendet werden.

Sie sollten immer einen Primärschlüssel auswählen, dessen Wert nicht geändert wird. In einer Datenbank, in der mehrere Tabellen verwendet werden, kann der Primärschlüssel der Tabelle in anderen Tabellen als Verweis verwendet werden. Wenn der Primärschlüssel geändert wird, muss die Änderung auch überall dort angewendet werden, wo auf den Schlüssel verwiesen wird. Die Verwendung eines Primärschlüssels, der nicht geändert wird, verringert die Wahrscheinlichkeit, dass der Primärschlüssel mit anderen Tabellen, in denen auf ihn verwiesen wird, nicht synchron ist.

Oft wird eine beliebige eindeutige Zahl als Primärschlüssel verwendet. Beispielsweise können Sie jeder Bestellung eine eindeutige Bestellnummer zuweisen. Der einzige Zweck der Bestellnummer besteht darin, eine Bestellung zu identifizieren. Die zugewiesene Zahl wird nie geändert.

Wenn Ihnen keine Spalte oder kein Satz Spalten einfällt, der sich gut als Primärschlüssel eignet, ziehen Sie die Verwendung einer Spalte mit dem Datentyp AutoNumber in Betracht. Wenn Sie den Datentyp AutoNumber verwenden, wird von Access automatisch ein Wert zugewiesen. Ein solcher Bezeichner enthält keine Fakten und keine sachlichen Informationen zum Beschreiben der durch ihn dargestellten Zeile. Bezeichner ohne Fakten eignen sich ideal für die Verwendung als Primärschlüssel, da sie nicht geändert werden. Bei einem Primärschlüssel, der Fakten zu einer Zeile enthält (z. B. eine Telefonnummer oder ein Kundenname) ist die Wahrscheinlichkeit höher, dass er geändert wird, da die sachlichen Informationen selbst geändert werden können.


Bild mit 'Products'-Tabelle (Artikel) mit einem Primärschlüsselfeld

Legende 1 Eine auf den Datentyp AutoNumber festgelegte Spalte eignet sich oft gut als Primärschlüssel. Zwei Artikelnummern sind nie gleich.

In manchen Fällen möchten Sie möglicherweise zwei oder mehr Felder verwenden, durch die gemeinsam der Primärschlüssel einer Tabelle bereitgestellt wird. In einer Order Details-Tabelle (Bestelldetails), in der die Posten für Bestellungen gespeichert werden, werden zwei Spalten im Primärschlüssel verwendet: Order ID (Bestell-Nr) und Product ID (Artikel-Nr). Wenn von einem Primärschlüssel mehrere Spalten genutzt werden, wird er auch als zusammengesetzter Schlüssel bezeichnet.

Für die Artikelverkaufsdatenbank können Sie für jede der Tabellen eine AutoNumber-Spalte erstellen, die als Primärschlüssel dienen soll: ProductID (ArtikelNr) für die Products-Tabelle (Artikel), OrderID (BestellNr) für die Orders-Tabelle (Bestellungen), CustomerID (Kunden-Nr) für die Customers-Tabelle (Kunden) und SupplierID (LieferantenNr) für die Suppliers-Tabelle (Lieferanten).

Bild mit Informationselementen während des Entwurfsprozesses

Seitenanfang Seitenanfang

Erstellen der Tabellenbeziehungen

Nachdem Sie die Informationen in Tabellen aufgeteilt haben, benötigen Sie eine Möglichkeit, die Informationen auf aussagekräftige Weise wieder zu kombinieren. Das folgende Formular z. B. enthält Informationen aus verschiedenen Tabellen.


Das Formular 'Orders' (Bestellungen)

Legende 1 Die Informationen in diesem Formular stammen aus der Customers-Tabelle,
Legende 2 der Employees-Tabelle,
Legende 3 der Orders-Tabelle,
Legende 4 der Products-Tabelle
Legende 5 und der Order Details-Tabelle.

Access ist ein relationales Datenbank-Managementsystem. In einer relationalen Datenbank teilen Sie die Informationen in separate themenbasierte Tabellen auf. Dann verwenden Sie Tabellenbeziehungen, um die Informationen nach Bedarf zu kombinieren.

Seitenanfang Seitenanfang

Erstellen einer 1:n-Beziehung

Sehen Sie sich dieses Beispiel an: Die Tabellen Suppliers (Lieferanten) und Products (Artikel) in der Artikelbestellungsdatenbank. Ein Lieferant kann eine Reihe von Produkten liefern. Daraus folgt, dass für jeden in der Suppliers-Tabelle dargestellten Lieferanten viele Produkte in der Products-Tabelle dargestellt werden können. Die Beziehung zwischen den Tabellen Suppliers und Products ist daher eine 1:n-Beziehung.

1:n-Konzept

Zum Darstellen einer 1:n-Beziehung im Datenbankentwurf fügen Sie den Primärschlüssel auf der Seite "1" der Beziehung als zusätzliche Spalte oder Spalten auf der Seite "n" der Beziehung zur Tabelle hinzu. In diesem Fall z. B. fügen Sie die Supplier ID-Spalte (Lieferanten-Nr) aus der Suppliers-Tabelle der Products-Tabelle hinzu. Die Lieferanten-Nr. in der Products-Tabelle kann dann von Access zum Suchen des richtigen Lieferanten für die einzelnen Produkte verwendet werden.

Die Supplier ID-Spalte in der Products-Tabelle wird als Fremdschlüssel bezeichnet. Ein Fremdschlüssel ist der Primärschlüssel einer anderen Tabelle. Die Supplier ID-Spalte in der Products-Tabelle ist ein Fremdschlüssel, da sie auch der Primärschlüssel in der Suppliers-Tabelle ist.

Liste der Informationselemente während des Entwurfsprozesses

Sie stellen die Basis für das Verknüpfen verwandter Tabellen bereit, indem Sie Paare aus Primärschlüsseln und Fremdschlüsseln herstellen. Wenn Sie nicht sicher sind, welche Tabellen eine gemeinsame Spalte nutzen sollten, wird durch das Identifizieren einer 1:n-Beziehung sichergestellt, dass für die beiden Tabellen tatsächlich eine gemeinsam genutzte Spalte erforderlich ist.

Seitenanfang Seitenanfang

Erstellen einer m:n-Beziehung

Sehen Sie sich die Beziehung zwischen den Tabellen Products und Orders an.

Eine einzelne Bestellung kann mehrere Artikel enthalten. Andererseits kann ein einzelner Artikel in vielen Bestellungen angezeigt werden. Daher können für jeden Datensatz in der Orders-Tabelle viele Datensätze in der Products-Tabelle vorhanden sein. Und für jeden Datensatz in der Products-Tabelle können viele Datensätze in der Orders-Tabelle vorhanden sein. Dieser Beziehungstyp wird als m:n-Beziehung bezeichnet, da für einen Artikel viele Bestellungen und für jede Bestellung viele Artikel vorhanden sein können. Beim Bestimmen von m:n-Beziehungen zwischen den Tabellen müssen Sie beide Seiten der Beziehung berücksichtigen.

Zwischen den Themen der beiden Tabellen - Bestellungen und Artikel - besteht eine m:n-Beziehung. Dies stellt ein Problem dar. Um das Problem zu verstehen, stellen Sie sich vor, was geschehen würde, wenn Sie versuchten, die Beziehung zwischen den beiden Tabellen durch Hinzufügen des Product ID-Felds zur Orders-Tabelle zu erstellen. Damit eine Bestellung mehrere Artikel enthalten kann, benötigen Sie in der Orders-Tabelle mehrere Datensätze pro Bestellung. In diesem Fall wiederholen Sie die Bestellungsinformationen für jede Zeile, die sich auf eine einzelne Bestellung bezieht, und das ergibt einen ineffizienten Entwurf, der zu unpräzisen Daten führen könnte. Das gleiche Problem tritt auf, wenn Sie das Order ID-Feld in der Products-Tabelle speichern, da die Products-Tabelle dann für jeden Artikel mehrere Datensätze enthält. Wie lösen Sie das Problem?

Die Antwort besteht im Erstellen einer dritten Tabelle, die oft als Verknüpfungstabelle bezeichnet wird und die die m:n-Beziehung in zwei 1:n-Beziehungen aufteilt. Sie fügen den Primärschlüssel aus einer der beiden Tabellen in die dritte Tabelle ein. Als Ergebnis wird jedes Auftreten oder jede Instanz der Beziehung in der dritten Tabelle aufgezeichnet.

m:n-Beziehung

Durch jeden Datensatz in der Order Details-Tabelle wird ein Posten einer Bestellung dargestellt. Der Primärschlüssel der Order Details-Tabelle besteht aus zwei Feldern: den Fremdschlüsseln der Tabellen Orders und Products. Die Verwendung des Order ID-Felds allein eignet sich nicht als Primärschlüssel für diese Tabelle, da eine Bestellung viele Posten umfassen kann. Die Bestellnummer wird für jeden Posten einer Bestellung wiederholt, sodass das Feld keine eindeutigen Werte enthält. Die Verwendung des Product ID-Felds allein eignet sich ebenfalls nicht, da ein Artikel in vielen verschiedenen Bestellungen angezeigt werden kann. Von beiden Feldern zusammen jedoch wird immer ein eindeutiger Wert für jeden Datensatz erzeugt.

In der Artikelverkaufsdatenbank sind die Tabellen Orders und Products nicht direkt miteinander verwandt. Stattdessen sind sie indirekt durch die Order Details-Tabelle verwandt. Die m:n-Beziehung zwischen Bestellungen und Artikeln wird in der Datenbank mithilfe von zwei 1:n-Beziehungen dargestellt:

  • Zwischen den Tabellen Orders und Order Details besteht eine 1:n-Beziehung. Jede Bestellung kann mehrere Posten enthalten, aber jeder Posten ist nur mit einer Bestellung verbunden.
  • Zwischen den Tabellen Products und Order Details besteht eine 1:n-Beziehung. Jedem Artikel können viele Posten zugeordnet sein, aber durch jeden Posten wird nur auf einen Artikel verwiesen.

Aus der Order Details-Tabelle können Sie alle Artikel in einer bestimmten Bestellung ermitteln. Sie können auch alle Bestellungen für einen bestimmten Artikel ermitteln.

Nach dem Integrieren der Order Details-Tabelle kann die Liste der Tabellen und Felder etwa so aussehen:

Liste der Informationselemente während des Entwurfsprozesses

Seitenanfang Seitenanfang

Erstellen einer 1:1-Beziehung

Ein weiterer Beziehungstyp ist die 1:1-Beziehung. Nehmen wir z. B. an, Sie müssen spezielle ergänzende Artikelinformationen aufzeichnen, die Sie selten benötigen oder die nur für einige Produkte gelten. Da Sie die Informationen nicht oft benötigen und das Speichern der Informationen in der Products-Tabelle für jeden Artikel, für den sie nicht gelten, zu freiem Platz führen würde, speichern Sie diese Informationen in einer separaten Tabelle. Wie in der Products-Tabelle verwenden Sie ProductID als Primärschlüssel. Die Beziehung zwischen dieser ergänzenden Tabelle und der Products-Tabelle ist eine 1:1-Beziehung. Für jeden Datensatz in der Products-Tabelle ist in der ergänzenden Tabelle ein einziger übereinstimmender Datensatz vorhanden. Wenn Sie eine solche Beziehung identifizieren, muss von beiden Tabellen ein Feld gemeinsam genutzt werden.

Wenn Sie feststellen, dass Sie eine 1:1-Beziehung in der Datenbank benötigen, überlegen Sie, ob Sie die Informationen aus den beiden Tabellen zusammen in einer Tabelle speichern können. Für den Fall, dass Sie das aus einem bestimmten Grund nicht tun möchten, z. B. weil dadurch viel freier Platz entstehen würde, sehen Sie in der folgenden Liste, wie Sie die Beziehung im Entwurf darstellen können:

  • Wenn die beiden Tabellen das gleiche Thema haben, können Sie wahrscheinlich die Beziehung unter Verwendung des gleichen Primärschlüssels in beiden Tabellen einrichten.
  • Wenn die beiden Tabellen unterschiedliche Themen mit unterschiedlichen Primärschlüsseln haben, wählen Sie eine der Tabellen (beliebig) aus, und fügen Sie ihren Primärschlüssel als Fremdschlüssel in die andere Tabelle ein.

Durch das Bestimmen der Beziehungen zwischen Tabellen können Sie sicherstellen, dass Sie die richtigen Tabellen und Spalten haben. Wenn eine 1:1- oder 1:n-Beziehung vorhanden ist, muss in den beteiligten Tabellen mindestens eine Spalte gemeinsam genutzt werden. Wenn eine m:n-Beziehung vorhanden ist, wird zum Darstellen der Beziehung eine dritte Tabelle benötigt.

Seitenanfang Seitenanfang

Optimieren des Entwurfs

Wenn Sie die benötigten Tabellen, Felder und Beziehungen haben, sollten Sie die Tabellen erstellen, sie mit Beispieldaten füllen und versuchen, mit den Informationen zu arbeiten: Erstellen von Abfragen, Hinzufügen neuer Datensätze usw. Dies trägt dazu bei, potenzielle Probleme hervorzuheben, z. B. müssen Sie möglicherweise eine Spalte hinzufügen, die Sie während der Entwurfsphase vergessen haben einzufügen, oder eine Tabelle sollte in zwei Tabellen aufgeteilt werden, um Duplizierung zu vermeiden.

Überprüfen Sie, ob Sie mithilfe der Datenbank die gewünschten Antworten erhalten können. Erstellen Sie Rohentwürfe der Formulare und Berichte, und überprüfen Sie, ob die erwarteten Daten angezeigt werden. Suchen Sie nach unnötigen Datenduplikaten, und ändern Sie ggf. den Entwurf, um sie zu entfernen.

Beim Testen der Ausgangsdatenbank werden Sie vermutlich Raum für Verbesserungen erkennen. Überprüfen Sie diese Punkte:

  • Haben Sie Spalten vergessen? Wenn ja, gehören die Informationen in die vorhandenen Tabellen? Wenn sich die Informationen auf etwas anderes beziehen, müssen Sie möglicherweise eine weitere Tabelle erstellen. Erstellen Sie eine Spalte für jedes Informationselement, das Sie nachverfolgen müssen. Wenn die Informationen nicht aus anderen Spalten berechnet werden können, benötigen Sie wahrscheinlich eine neue Spalte dafür.
  • Sind Spalten nicht notwendig, da sie aus vorhandenen Feldern berechnet werden können? Wenn ein Informationselement aus vorhandenen Spalten berechnet werden kann (z. B. ein reduzierter Preis, der anhand des Verkaufspreises berechnet wird), empfiehlt es sich normalerweise, dies zu tun und das Erstellen einer neuen Spalte zu vermeiden.
  • Geben Sie wiederholt doppelte Informationen in eine der Tabellen ein? In diesem Fall müssen Sie wahrscheinlich die Tabelle in zwei Tabellen aufteilen, zwischen denen eine 1:n-Beziehung besteht.
  • Haben Sie Tabellen mit vielen Feldern, einer begrenzten Anzahl von Datensätzen und vielen leeren Feldern in einzelnen Datensätzen? Ziehen Sie in diesem Fall das Neuentwerfen der Tabelle in Betracht, sodass sie weniger Felder und mehr Datensätze enthält.
  • Sind die einzelnen Informationselemente in die kleinsten hilfreichen Teile aufgeteilt? Wenn Sie Informationselemente berichten, sortieren, suchen oder berechnen müssen, speichern Sie diese in einer eigenen Spalte.
  • Enthalten alle Spalten Fakten zum Thema der Tabelle? Wenn eine Spalte keine Informationen zum Thema der Tabelle enthält, gehört sie in eine andere Tabelle.
  • Werden alle Beziehungen zwischen Tabellen durch gemeinsame Felder oder durch eine dritte Tabelle dargestellt? Für 1:1- und 1:n-Beziehungen sind gemeinsame Spalten erforderlich. Für m:n-Beziehungen ist eine dritte Tabelle erforderlich.

Optimieren der "Products"-Tabelle (Artikel)

Nehmen wir an, dass jeder Artikel in der Artikelverkaufsdatenbank in eine allgemeine Kategorie fällt, z. B. Getränke, Gewürze oder Meeresfrüchte. Die Products-Tabelle kann ein Feld enthalten, in dem die Kategorie des jeweiligen Artikels angezeigt wird.

Nehmen wir an, Sie entscheiden sich nach dem Untersuchen und Optimieren des Datenbankentwurfs dafür, eine Beschreibung der Kategorie zusammen mit dem Namen zu speichern. Wenn Sie der Products-Tabelle ein Category Description-Feld (Kategoriebeschreibung) hinzufügen, müssen Sie jede Kategoriebeschreibung für jeden Artikel wiederholen, der in diese Kategorie fällt. Dies ist keine gute Lösung.

Eine bessere Lösung besteht darin, Kategorien zu einem neuen in der Datenbank nachzuverfolgenden Thema mit eigener Tabelle und eigenem Primärschlüssel zu machen. Dann können Sie den Primärschlüssel aus der Categories-Tabelle (Kategorien) als Fremdschlüssel der Products-Tabelle hinzufügen.

Zwischen den Tabellen Categories und Products besteht eine 1:n-Beziehung: Eine Kategorie kann mehrere Artikel enthalten, aber ein Artikel kann nur zu einer Kategorie gehören.

Achten Sie beim Überprüfen der Tabellenstrukturen auf sich wiederholende Gruppen. Gehen wir z. B. von einer Tabelle mit den folgenden Spalten aus:

  • Product ID
  • Name
  • Product ID1
  • Name1
  • Product ID2
  • Name2
  • Product ID3
  • Name3

Hier ist jeder Artikel eine sich wiederholende Gruppen von Spalten, die sich von anderen nur durch eine am Ende des Spaltennamens hinzugefügte Zahl unterscheiden. Wenn Sie solcherart nummerierte Spalten sehen, sollten Sie den Entwurf überarbeiten.

Ein solcher Entwurf hat mehrere Fehler. Zunächst werden Sie gezwungen, die Anzahl von Artikeln nach oben zu begrenzen. Sobald das Limit überschritten wird, müssen Sie der Tabellenstruktur eine neue Gruppe von Spalten hinzufügen. Dies ist eine umfangreiche administrative Aufgabe.

Ein weiteres Problem besteht darin, dass für Lieferanten mit weniger als der maximalen Anzahl von Artikeln Platz verschwendet wird, da die zusätzlichen Spalten leer sind. Der schwer wiegendste Fehler eines solchen Entwurfs zeigt sich darin, dass die Ausführung vieler Aufgaben erschwert wird, z. B. das Sortieren oder Indizieren der Tabelle nach Artikel-Nr. oder Name.

Wenn Sie sich wiederholende Gruppen sehen, überprüfen Sie den Entwurf genau, und teilen Sie ggf. die Tabelle in zwei Tabellen auf. Im oben gezeigten Beispiel ist es besser, zwei anhand der Lieferanten-Nr verknüpfte Tabellen zu verwenden, eine für Lieferanten und eine für Artikel.

Seitenanfang Seitenanfang

Anwenden der Normalisierungsregeln

Sie können die Datennormalisierungsregeln (die manchmal nur als Normalisierungsregeln bezeichnet werden) als nächsten Schritt des Entwurfs anwenden. Sie verwenden diese Regeln, um zu überprüfen, ob die Tabellen richtig strukturiert sind. Der Prozess der Anwendung der Regeln auf den Datenbankentwurf wird als Normalisieren der Datenbank oder nur als Normalisierung bezeichnet.

Die Normalisierung ist am hilfreichsten, wenn Sie alle Informationselemente dargestellt haben und einen vorläufigen Entwurf erstellt haben. Dadurch soll sichergestellt werden, dass Sie die Informationselemente in die entsprechenden Tabellen aufgeteilt haben. Durch die Normalisierung kann jedoch nicht sichergestellt werden, dass Sie überhaupt über alle richtigen Datenelemente verfügen.

Sie wenden die Regeln nacheinander an und stellen bei jedem Schritt sicher, dass der Entwurf einer der so genannten "Normalformen" entspricht. Allgemein werden fünf Normalformen akzeptiert, die erste bis fünfte Normalform. Dieser Artikel geht auf die ersten drei Normalformen ein, da für die meisten Datenbankentwürfe nur sie erforderlich sind.

Erste Normalform

Bei der ersten Normalform muss für jeden Zeilen- und Spaltenkreuzungspunkt in der Tabelle ein einzelner Wert, niemals eine Liste mit Werten, vorhanden sein. Beispielsweise kann kein Feld namens Preis vorhanden sein, in dem Sie mehrere Preise speichern. Wenn Sie sich die einzelnen Kreuzungspunkte der Zeilen und Spalten als Zelle vorstellen, kann jede Zelle nur einen Wert enthalten.

Zweite Normalform

Für die zweite Normalform muss jede Nichtschlüsselspalte vollständig abhängig vom gesamten Primärschlüssel sein, nicht nur von einem Teil des Schlüssels. Diese Regel gilt, wenn ein Primärschlüssel vorhanden ist, der aus mehr als einer Spalte besteht. Nehmen wir z. B. an, Sie haben eine Tabelle, die die folgenden Spalten enthält, in denen der Primärschlüssel aus Order ID und Product ID gebildet wird:

  • Order ID (Primärschlüssel)
  • Product ID (Primärschlüssel)
  • Artikelname

Durch diesen Entwurf wird zweite Normalform verletzt, da Product Name von Product ID abhängig ist, jedoch nicht von Order ID, sodass die Spalte nicht vom gesamten Primärschlüssel abhängig ist. Sie müssen Product Name aus der Tabelle entfernen. Die Spalte gehört in eine andere Tabelle (Products).

Dritte Normalform

Für die dritte Normalform muss nicht nur jede Nichtschlüsselspalte vom gesamten Primärschlüssel abhängig sein, sondern die Nichtschlüsselspalten müssen voneinander unabhängig sein.

Eine weitere Möglichkeit, dies auszudrücken, ist, dass jede Nichtschlüsselspalte abhängig vom Primärschlüssel sein muss, und zwar ausschließlich vom Primärschlüssel. Nehmen wir z. B. an, Sie haben eine Tabelle, die die folgenden Spalten enthält:

  • ProductID (Primärschlüssel)
  • Name
  • SRP (UVP)
  • Discount (Rabatt)

Nehmen wir an, dass Discount von der unverbindlichen Preisempfehlung (SRP, Suggested Retail Price) abhängt. Diese Tabelle verletzt die dritte Normalform, da eine Nichtschlüsselspalte, Discount, von einer anderen Nichtschlüsselspalte, SRP, abhängt. Spaltenunabhängigkeit bedeutet, dass es möglich sein sollte, eine Nichtschlüsselspalte zu ändern, ohne dass sich dies auf eine andere Spalte auswirkt. Wenn Sie einen Wert im SRP-Feld ändern, wird Discount entsprechend geändert. Dadurch würde die Regel verletzt. In diesem Fall sollte Discount in eine andere Spalte verschoben werden, die einen Schlüssel für SRP enthält.

Seitenanfang Seitenanfang

 
 
Zutreffend für:
Access 2010