Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: Wieder Online ---> provisorisches Office Forum <-
Datenmodell entwickeln: Welche Tabellen und Beziehungen?
zurück: Ordnerauswahldialog mit Konfigurationsmöglichkeiten weiter: Sortieren eines Listenfeldes mit Werteliste Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Tutorial Facebook-Likes Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
astern
Datenmodell-Missionar


Verfasst am:
20. Jun 2009, 18: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:Formularentwurf: Gutes Layout und nutzerfreundliche Funktion
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. Access-Gebot: Du sollst lange und gründlich über Dein Datenmodell nachdenken!
2. Access-Gebot: Du sollst keine Formulare erstellen ohne gutes Datenmodell!



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

bibliothek_v02_dm.jpg



bibliothek_v02.zip
 Beschreibung:
Beispieldatenbank (2003er Format)

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



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


Verfasst am:
21. Jun 2009, 16:58
Rufname: Peter

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
astern
Datenmodell-Missionar


Verfasst am:
20. Dez 2009, 19: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. Access-Gebot: Du sollst lange und gründlich über Dein Datenmodell nachdenken!
2. Access-Gebot: Du sollst keine Formulare erstellen ohne gutes Datenmodell!



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

bibliothek_v03_dm.jpg



bibliothek_v03a_dm.jpg
 Beschreibung:
Datenmodell
 Dateigröße:  93.45 KB
 Angeschaut:  41733 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:  1105 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 Tabellen & Abfragen: aufsummieren 2er tabellen 1 micky1409 1025 17. Jul 2004, 23:43
faßnacht(IT); aufsummieren 2er tabellen
Keine neuen Beiträge Access Tabellen & Abfragen: Komplexe Beziehungen... wie baue ich mein Formular auf 6 Gast 1867 25. Jun 2004, 14:36
Florianbur Komplexe Beziehungen... wie baue ich mein Formular auf
Keine neuen Beiträge Access Tabellen & Abfragen: 2 gleiche Tabellen in 2 verschiedenen DB verknüpfen 2 mondi 1015 23. Jun 2004, 10:10
mondi 2 gleiche Tabellen in 2 verschiedenen DB verknüpfen
Keine neuen Beiträge Access Tabellen & Abfragen: Daten aus mehreren Tabellen in einer Gesamttabelle richtig e 5 hoschi 1573 04. Jun 2004, 13:01
stpimi Daten aus mehreren Tabellen in einer Gesamttabelle richtig e
Keine neuen Beiträge Access Tabellen & Abfragen: 2 tabellen vergleichen 4 Lordoo88 1555 03. Jun 2004, 16:43
Lordoo88 2 tabellen vergleichen
Keine neuen Beiträge Access Tabellen & Abfragen: Konvertierung 97 nach 2000 - Beziehungen sind weg 1 katrin 07 395 21. Mai 2004, 21:50
mabe38 Konvertierung 97 nach 2000 - Beziehungen sind weg
Keine neuen Beiträge Access Tabellen & Abfragen: Zwei Tabellen zusammenfügen und Nullwerte überschreiben 1 m.hataj 1304 13. Mai 2004, 18:10
faßnacht(IT); Zwei Tabellen zusammenfügen und Nullwerte überschreiben
Keine neuen Beiträge Access Tabellen & Abfragen: Abgleich von 2 tabellen in access 2003 4 Fierce 1719 16. Apr 2004, 08:27
el_gomero Abgleich von 2 tabellen in access 2003
Keine neuen Beiträge Access Tabellen & Abfragen: neue Tabellen erzeugen; kopieren 7 DiplomandSPS 1323 25. März 2004, 10:01
fridgenep neue Tabellen erzeugen; kopieren
Keine neuen Beiträge Access Tabellen & Abfragen: 2 Tabellen in eine neue 18 Gast 2365 23. März 2004, 10:44
mrd 2 Tabellen in eine neue
Keine neuen Beiträge Access Tabellen & Abfragen: Tabellen verknüpfen 1 darkblue82 802 05. März 2004, 12:00
lothi Tabellen verknüpfen
Keine neuen Beiträge Access Tabellen & Abfragen: Problem mit Abfragen & Beziehungen! 1 zulupower 691 25. Feb 2004, 18:20
faßnacht(IT); Problem mit Abfragen & Beziehungen!
 

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