Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: ---> 26. März: Office-Treffen Rhein-Main <-
Datenmodell entwickeln: Welche Tabellen und Beziehungen?
zurück: ISO Wochennummer berechnen weiter: RibbonX-Workshop / Multifunktionsleiste schnell erstellt Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Tutorial Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
astern
Datenmodell-Missionar


Verfasst am:
20. Jun 2009, 17:29
Rufname: Andreas
Wohnort: Rastede

Datenmodell entwickeln: Welche Tabellen und Beziehungen? - Datenmodell entwickeln: Welche Tabellen und Beziehungen?

Nach oben
       Version: (keine Angabe möglich)

"Welche Tabellen brauche ich?"
"Habe ich in meiner Datenbank die richtigen Tabellen?"


Die Antwort auf diese Fragen liefert ein Datenmodell.
Dieser Artikel zeigt, wie sich ein gutes Datenmodell entwickeln lässt.
DENN: Erst ein gutes Datenmodell erlaubt es, Access sinnvoll zu nutzen.

Ein Datenmodell ist normalerweise
(1) eine Grafik
(2) eine Sache, für die man 30 Buchseiten zur Erläuterung braucht.

Hier kommt eine praktische Anleitung ohne Grafik und auf ca. 3 Seiten!
Also - nehmen wir mal an, in einer Bibliothek werden Bücher an Leser verliehen. Die Bücher sind von Verlagen und stehen in Regalen.

1. Schritt: Formuliere das Problem in Sätzen der Form Substantiv - Verb - Substantiv

Leser leihen Bücher.
Bücher sind von Verlagen.
Bücher stehen in Regalen.

REGEL: Substantive werden zu Tabellen; Verben werden zu Beziehungen - d.h.:

Tabellen: tblLeser, tblBuch, tblVerlag, tblRegal
Beziehungen: tblLeser - tblBuch, tblBuch - tblVerlag, tblBuch - tblRegal

ACHTUNG:
Alle Bezeichnungen für Tabellen und deren Spalten ohne Umlaute (ä, ü, ö), ohne Leerzeichen und ohne ß schreiben!

2. Schritt: Formuliere für jede Beziehung zwei Sätze

EIN Leser leiht MEHRERE Bücher.
EIN Buch wird von MEHREREN Lesern ausgeliehen.

EIN Buch steht in EINEM Regal.
In EINEM Regal stehen MEHRERE Bücher.

EIN Buch ist von EINEM Verlag.
Von EINEM Verlag gibt es MEHRERE Bücher.

Damit haben wir folgende Beziehungen:
("<->>" = "1:n", "<<->>" = "m:n")

tblRegal <->> tblBuch
tblVerlag <->> tblBuch
tblLeser <<->> tblBuch

Vielleicht hast Du Dich gewundert, warum EIN Buch an MEHRERE Leser ausgeliehen werden kann. EIN Buch kann doch immer nur bei EINEM Leser sein!? Das ist nach gesundem Menschenverstand auch richtig - datenbanktechnisch aber nicht, wenn nämlich die Zeit ins Spiel kommt: Das Buch kann heute bei Meier sein; vorige Woche hatte es Lehmann und für nächste Woche hat es Krause vorbestellt.

Weitere Beispiele aus anderen Anwendungsgebieten:
EIN Schiff ist in EINEM Hafen.
In EINEM Hafen liegen MEHRERE Schiffe.
Stimmt? Scheinbar ja - aber das Schiff kann ja gestern in Hamburg gewesen sein, ist heute in Antwerpen und morgen in London.

EIN Leihwagen ist bei EINEM Kunden.
EIN Kunde leiht MEHERERE Wagen.
Stimmt? Scheinbar ja - aber der Leihwagen kann ja gestern bei Schmidt gewesen sein, ist heute bei Hauptmann und morgen bei Schubert.

ALSO:
Immer wenn es um das Aufheben von Vergangenheitsdaten oder um die Planung für die Zukunft geht, ist eine scheinbare 1:n-Beziehung in Wirklichkeit eine m:n-Beziehung! Die Zeitangaben gehören dann zusammen mit den beiden Fremdschlüsseln in die Zwischentabelle.

3. Schritt: Anlegen der Fremdschlüssel

Dazu zwei REGELN:

(1) Bei einer 1:n-Beziehung wandert der Primärschlüssel der "1"-Seite als Fremdschlüssel auf die "n"-Seite.
(2) Bei einer m:n-Beziehung wandern beide Primärschlüssel als Fremdschlüssel in eine neue, dritte Tabelle zwischen den beiden Tabellen.

Also:
regal_id als Fremdschlüssel regal_id_f in Tabelle tblBuch
verlag_id als Fremdschlüssel verlag_id_f in Tabelle tblBuch
leser_id als Fremdschlüssel leser_id_f in Tabelle tblLeser_Buch
buch_id als Fremdschlüssel buch_id_f in Tabelle tblLeser_Buch

Es stellt sich also heraus, dass Du neben den offensichtlichen Tabellen tblLeser, tblBuch, tblRegal und tblVerlag wegen der m:n-Beziehung zwischen Leser und Buch noch eine weitere Tabelle brauchst: tblLeser_Buch. Ich nenne diese Tabellen "Zwischentabellen", weil sie zwischen zwei Tabellen eingeschoben werden.

4. Schritt: Überlege Dir, ob Du bestimmte Mengen oder Zeiten speichern willst - schau Dir dazu Deine 3-Wort-Sätze noch einmal an:

Leser leihen Bücher (Zeit: "von wann bis wann?")
Bücher sind von Verlagen.
Bücher stehen in Regalen.

Weitere Beispiele
- Aufträge enthalten Artikel (Menge: "Wieviele?") )
- Patienten erhalten Medikamente (Menge: "Wieviel?", Zeit: "Wann?")
- Fahrer fahren LKWs (Zeit: "Wann?")

Diese Mengen und Zeiten gehören in die Zwischentabellen! Damit hat die Zwischentabelle tblLeser_Buch dann neben den beiden Fremdschlüsselspalten leser_id_f und buch_id_f noch die Spalten leserbuch_von und leserbuch_bis.

Fertig! Jetzt kannst Du Access starten, die Tabellen mit den dazugehörigen Spalten anlegen (Primärschlüssel als Autowert, Fremdschlüssel als Zahl / LongInteger) und schließlich per drag&drop die Beziehungen definieren ("Mit referentieller Integrität"!). Dann hast Du ein sauberes Datenmodell und bedeutend weniger Probleme beim Erstellen der Abfragen, Formulare und Berichte! Garantiert!

PS1: Man kann ja auch viel aus Beispielen lernen. Darum sieh Dir mal diese Webseite an: Database Answers!
PS2: Zur Gestaltung von Formularen habe ich auch ein Tutorial geschrieben:http://www.office-loesung.de/ftopic330767_0_0_asc.php
PS3: Ich habe ein Tool entwickelt ("ADaMo" = "A*'s Datenbank-Modellierer") das Dich bei der Entwicklung Deines Datenmodells unterstützt. Angemeldete Nutzer finden immer die aktuelle Version durch Click auf den WWW-Button links neben meinen Postings!
verschoben aus Tabellen und Abfragen jens05

_________________
1. Gebot: Du sollst lange und gründlich über Dein Datenmodell nachdenken!
2. Gebot: Du sollst keine Formulare erstellen ohne gutes Datenmodell!



bibliothek_v02_dm.jpg
 Beschreibung:
Datenmodell
 Dateigröße:  72.9 KB
 Angeschaut:  2005 mal

bibliothek_v02_dm.jpg



bibliothek_v02.zip
 Beschreibung:
Beispieldatenbank (2003er Format)

Download
 Dateiname:  bibliothek_v02.zip
 Dateigröße:  17.7 KB
 Heruntergeladen:  118 mal



Zuletzt bearbeitet von astern am 01. März 2010, 08:11, insgesamt 6-mal bearbeitet
faßnacht(IT);
www.Office-Loesung.de Administrator


Verfasst am:
21. Jun 2009, 15:58
Rufname: Peter
Wohnort: Mainz-Kastel

AW: Habe ich in meiner Datenbank die richtigen Tabellen? - AW: Habe ich in meiner Datenbank die richtigen Tabellen?

Nach oben
       Version: (keine Angabe möglich)

Hallo Smile

vielen Dank Andreas für diese Anschauliche Einführung!

Zur Übersichtlichkeit finden die Diskussionen über die Anleitung zum Entwickeln von Datenmodellen in diesem Thema:
Diskussionen zu "Datenmodelle" von astern
Viele Grüße
Peter

PS:

Empfohlen sei auch ein Buch zum leichten aber fundierten Einstieg in Microsoft Access:
Andreas Stern
Keine Angst vor Microsoft Access
Microsoft Press, 2007

Viele Grüße
Peter
astern
Datenmodell-Missionar


Verfasst am:
20. Dez 2009, 18:02
Rufname: Andreas
Wohnort: Rastede


AW: Datenmodell entwickeln: Welche Tabellen und Beziehungen? - AW: Datenmodell entwickeln: Welche Tabellen und Beziehungen?

Nach oben
       Version: (keine Angabe möglich)

Hallo!
Ich möchte zu meinem Datenmodellierungstutorial noch folgendes ergänzen:

zum 2. Schritt:

Besonderheit: 1:1-Beziehungen
Es kann sein, dass Du bei der Formulierung Deiner Sätze auf so etwas stößt:
Zu EINEM Auftrag gehört EINE Rechnung.
Zu EINER Rechnung gehört EIN Auftrag.
Das würde bedeuten, dass zwischen Auftrag und Rechnung eine 1:1-Beziehung besteht. Überlege nochmal, ob die Sätze wirklich stimmen! Erstellt Ihr vielleicht Teilrechnungen ("Zu EINEM Auftrag gehören MEHRERE (Teil-)Rechnungen.") oder Sammelrechnungen ("Zu EINER Rechnung gehören MEHRERE Aufträge.")? Wenn nicht, dann brauchst Du nicht zwei Tabellen tblAuftrag und tblRechnung, sondern nur eine Tabelle tblAuftrag. Sie enthält dann neben Spalten wir auf_nummer und auf_datum noch Spalten wie auf_rechnummer und auf_rechdatum!

Besonderheit: Dreifach-Beziehungen
Es kann sein, dass Du bei der Formulierung Deiner Sätze auf so etwas stößt:
EIN Leser erhält für die Ausleihe EINES Buches EINE Mahnung.
Dieser Satz enthält die Namen von drei Objekten und Du kannst keines davon weglassen, ohne dass der Satz seinen Sinn verliert! Solche Sätze sind nicht leicht zu finden - aber sie sind u.U. ganz wichtig für Dein Datenmodell. Du solltest daher Deine "Zwei-Objekt-Sätze" immer nochmal unter dem Aspekt überprüfen: Gehört da evtl. noch ein drittes Objekt dazu, damit der Sachverhalt wirklich realistisch erfasst wird? "EIN Leser erhält EINE Mahnung." Ist das wirklich so? Nein! Er erhält eine Mahnung wegen der Ausleihe eines Buches!

Wie geht es weiter?

Bei einer Dreifach-Beziehung (z.B. Leser - Buch - Mahnung; s.o.!) bilden zunächst einmal zwei der drei Objekte eine "normale" m:n-Beziehung - also z.B.:

EIN Leser leiht MEHRERE Bücher aus.
EIN Buch wird von MEHREREN Lesern ausgeliehen.

Das ergibt also zunächst eine "normale" m:n- Beziehung zwischen Leser und Buch; folglich brauchen wir eine Zwischentabelle tblLeser_Buch (s. Abb. im oberen Posting!).
Wie hängt jetzt die Mahnung damit zusammen? Um das herauszufinden, solltest Du zunächst versuchen, den sperrigen Namen der Zwischentabelle "tblLeser_Buch" durch einen anderen, anschaulicheren Begriff zu ersetzen, sonst lassen sich damit schlecht Sätze bilden. In unserem Bibliotheksbeispiel bietet sich für "tblLeser_Buch" der Begriff "tblAusleihe" an!

Test:
Zu EINEM Leser gehören MEHRERE Ausleihen.
ZU EINER Ausleihe gehört EIN Leser.

Zu EINEM Buch gehören mehrere Ausleihen.
Zu EINER Ausleihe gehört EIN Buch.

Stimmt! Nun können wir über die Mahnung nachdenken. Wie hängt sie mit der Ausleihe zusammen?

Zu EINER Ausleihe gibt es MEHRERE Mahnungen (erste, zweite, dritte Mahnung)
Zu EINER Mahnung gehören MEHRERE Ausleihen.(denn beachte: Zu EINER Ausleihe gehört nur EIN Buch! Und wir können ja mehrere Bücher mit einer Mahnung mahnen!)
Also gibt es eine m:n-Beziehung zwischen Ausleihe und Mahnung! Also brauchen wir eine weitere Zwischentabelle "tblAus_Mahn"! Genau genommen ist das jetzt eine Zwischentabelle zwischen einer Tabelle (tblMahnung) und einer (ehemaligen) Zwischentabelle (tblLeser_Buch).

Aber es geht noch weiter!

Das Beispiel mit der Mahnung war besonders schwierig, weil die dritte Beziehung (von Ausleihe zu Mahnung) eine m:n-Beziehung war. Nehmen wir mal unrealistischerweise an, es würde zu jeder Ausleihe immer nur eine einzige Mahnung geschrieben. Wie gesagt - das ist unrealistisch. Aber ich will Dich, lieber Leser, nicht mit noch einem weiteren Beispiel verwirren. Es geht mir nur darum, das Prinzip darzustellen.

Also:
Zu EINER Ausleihe gehört EINE Mahnung.
Zu EINER Mahnung gehören MEHRERE Ausleihen.

Dann sieht das Datenmodell so aus, wie in dem zweiten Bild unten. Dort habe ich der Zwischentabelle wieder den "unhandlichen" Namen tblBuch_Leser_Mahn gegeben, um ihren Charakter als Zwischentabelle besonders zu betonen. Sie ist jetzt eine Zwischentabelle zwischen DREI Tabellen: tblBuch, tblLeser und tblMahnung. Folgerichtig enthält sie jetzt DREI Fremdschlüssel: buch_id_f, leser_id_f und mahn_id_f. Das ist völlig analog zu der "normalen" Zwischentabelle zwischen zwei anderen Tabellen, wie wir sie bereits kennen!

Mittlerweile wird das also richtig kompliziert. Es bleibt aber dabei: Du musst kurze, knappe Sätze nach dem Schema "Zu EINEM x gehört EIN bzw. gehören MEHRERE y" bilden und diese Sätze in Beziehungen zwischen Tabellen umsetzen.
Die schlechte Nachricht ist: Das ist nicht einfach!
Die gute Nachricht ist: Die von mir beschriebene Vorgehensweise führt Dich (ziemlich) sicher zum Ziel: Ein richtig gutes Datenmodell!!

MfG
A*

_________________
1. Gebot: Du sollst lange und gründlich über Dein Datenmodell nachdenken!
2. Gebot: Du sollst keine Formulare erstellen ohne gutes Datenmodell!



bibliothek_v03_dm.jpg
 Beschreibung:
Datenmodell
 Dateigröße:  91.43 KB
 Angeschaut:  1956 mal

bibliothek_v03_dm.jpg



bibliothek_v03a_dm.jpg
 Beschreibung:
Datenmodell
 Dateigröße:  93.45 KB
 Angeschaut:  1940 mal

bibliothek_v03a_dm.jpg



bibliothek_v03.zip
 Beschreibung:
.mdb-Dateien v03 und v03a (2003er Format)

Download
 Dateiname:  bibliothek_v03.zip
 Dateigröße:  35.87 KB
 Heruntergeladen:  70 mal

Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind
GMT + 1 Stunde

Diese Seite Freunden empfehlen

Seite 1 von 1
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen




Verwandte Themen
Forum / Themen   Antworten   Autor   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Access Hilfe: Beziehungen 7 Neville 107 10. Feb 2010, 18:55
KlausMz Beziehungen
Keine neuen Beiträge Access Tabellen & Abfragen: Tabellen vergleichen und abweichungen anzeigen 17 Gast 768 06. Aug 2009, 17:40
Bitsqueezer Tabellen vergleichen und abweichungen anzeigen
Keine neuen Beiträge Access Tabellen & Abfragen: Ergebnis bei n:m Beziehungen 7 steli 108 10. Jul 2009, 14:01
DBKlempner Ergebnis bei n:m Beziehungen
Keine neuen Beiträge Access Tabellen & Abfragen: 2 Tabellen vergleichen und doppelte Werte löschen 2 Engelchen007 633 08. Mai 2009, 08:06
Engelchen007 2 Tabellen vergleichen und doppelte Werte löschen
Keine neuen Beiträge Access Tabellen & Abfragen: Tabellen in diversen Datenbanken löschen 2 Domainhunter 104 27. Okt 2008, 14:36
Domainhunter Tabellen in diversen Datenbanken löschen
Keine neuen Beiträge Access Tabellen & Abfragen: Zusammensetzen zweiter Tabellen + Filterung 1 Gast 107 02. Sep 2008, 21:05
maike kaluscha Zusammensetzen zweiter Tabellen + Filterung
Keine neuen Beiträge Access Tabellen & Abfragen: mehrere verknüpfte Tabellen aneinanderhängen 6 swobby 1342 30. Jan 2008, 17:38
swobby mehrere verknüpfte Tabellen aneinanderhängen
Keine neuen Beiträge Access Tabellen & Abfragen: Abhaengige Tabellen auswerten 5 SzP/TEF13 915 29. Jan 2008, 16:27
Stefffano Abhaengige Tabellen auswerten
Keine neuen Beiträge Access Formulare: Im Acces Unterformular: Tabellen / Anzeige 6 Ocor 619 07. Nov 2007, 11:42
Ocor Im Acces Unterformular: Tabellen / Anzeige
Keine neuen Beiträge Access Formulare: Beziehungen zu Kombinationsfelder aufbauen 0 Franky999 1024 13. Okt 2006, 17:29
Franky999 Beziehungen zu Kombinationsfelder aufbauen
Keine neuen Beiträge Access Tabellen & Abfragen: Zwei Tabellen mit fast identischen Inhalten zusammenführen 7 Habakuk 2950 27. Aug 2006, 21:50
Habakuk Zwei Tabellen mit fast identischen Inhalten zusammenführen
Keine neuen Beiträge Access Tabellen & Abfragen: gr. datenbänke verküpfen oder verbinden oder Beziehungen ??? 10 kappaland 408 15. Aug 2006, 17:58
jens05 gr. datenbänke verküpfen oder verbinden oder Beziehungen ???
 

----> Diese Seite Freunden empfehlen <------ Impressum - Besuchen Sie auch: Word VBA