Von Anfang an das richtige Design wählen

Streethawk68

Aktiver Benutzer
Beiträge
38
Hallo Profis, Fans und Bastler!

System ist MS Access 365 / Windows 10.

Bei dieser Forums-Anfrage möchte mich nach einem geeigneten Datenbank-Design erkundigen. Damit meine ich nicht Farben und Formen, sondern die Auswahl der richtigen Tabellen und deren Beziehungen zueinander. Meine Familiendatenbank umfasst in ihrer bisherigen Haupttabelle tblMensch folgende Felder:

MenschID, Codierung, Name, Geburtsname, Vorname, Geschlecht, Straße/Hausnummer, PLZ, Ort/Stadt, Ortsteil, Bundesland/Provinz/Kanton, Land/Nation, Herkunftsland, Ethnizität, Fahrzeugfabrikat, Fahrzeugtyp, Kfz-Kennzeichen, Landesvorwahl, Festnetzvorwahl, Festnetznummer, aktiv ja nein, mobile Vorwahl, mobiler Anschluss, Fax Vorwahl, Fax Anschluss, E-Mail 1, E-Mail 2, E-Mail 3 ,URL, Name des Partners, Vorname des Partners, Anzahl Kinder, Geburtstag, verstorben am um, Bemerkungen, Titel, Beruf, Ausbildung, Tätigkeit, tätig in Firma, Hobbys, Bekanntschaft seit, Anzahl Ereignisse, Ereignis, Bild

Welche Zusatztabellen sind nun sinnvoll? Nicht zuletzt speichert die Datenbank auch Lebensereignisse wie Hochzeiten, Schulabschlüsse etc. Muss also beispielsweise zwischen der tblMensch und der tblEreignis eine n:n-Beziehung existieren? Es kann sich ja bei einem Menschen mehrerlei ereignen und es können an einem Ereignis mehrere Menschen beteiligt sein.

Für Tipps bin ich sehr dankbar!

Herzlich, euer
Streethawk68
 
Werbung:
Beschäftige Dich mit Normalisierung!

Eine Person kann z.B. mehrere Fahrzeuge haben, das kannst Du derzeit nicht abbilden. Ebenso mehrere Festnetzanschlüsse (habe ich) und mehrere Mobiltelefone (hab ich auch). Ebenso mehr als 3 Mailadressen. Bei 3 Kindern (habe ich z.B.): von welchen würdest Du den Geburtstag speichern?

tl;dr

Dein bisheriger Ansatz ist für die Tonne. Und es gibt mehr als genug Literatur dazu, siehe meinen ersten Satz. Und ob die Wahl der Software sinnvoll ist, sei dahingestellt...
 
Ich möchte eine eigene Tabelle Fahrzeuge kreieren. Dazu möchte ich Werte aus einer existierenden Tabelle tblMensch heranziehen. Ich habe den SQL-Befehl:
CREATE TABLE fahrzeuge AS SELECT KFZ_FABR, KFZ_TYP, KFZ_KENNZ_HISTOR FROM tblMensch WHERE KFZ_FABR <> "";
gewählt; dieser ist jedoch fehlerhaft. Wie muss er korrekt lauten?
Streethawk68
 
funktioniert hier prinzipiell:

Code:
edb=> create table mensch(a int, b int, c int);
CREATE TABLE
edb=*> create table auto as select a,b from mensch where c = 1;
SELECT 0
edb=*>

wenn Deine DB meint, das sei fehlerhaft, dann sollte sie das mittels einer aussagekräftigen Fehlermeldung darlegen. Tut sie das?
 
Hallo! Nein, MS Access 2016 sagt nur: "Fehler in SQL-Syntax bei SELECT". Ich konnte den Befehl aber mit dem Editor "Beekeeper Studio" ausführen und habe jetzt eine Tabelle tblFahrzeuge mit 211 Einträgen. Folgende Anschlussfrage: Da ein Mensch mehrere Fahrzeuge haben kann und ein Fahrzeug von mehreren Menschen gefahren werden kann, habe ich ja ein m:n-Beziehung? Ich hab das jetzt folgendermaßen zu lösen versucht:

upload_2021-4-2_16-48-4.jpeg
Ist das sinnvoll? Grüße, Streethawk68
 
Das ist doch die Perfekte Datenbank um Normalisierung zu lernen.

Wenn du z.B. bei Person1 den Ort Stuttgart angibst, dich aber bei Person2 vertippst und Stutgart angibt, sieht du, wo du das ganze verbessern kannst.

Wieso Name und Nachname des Partners? Willst du diese nicht auch speichern und verknüpfen?

usw.
 
Guten Morgen! Ich möchte bitte wissen, ob die in meiner Grafik dargestellte Struktur für Fahrzeuge sinnvoll ist. Grüße, Streethawk68
 
Werbung:
ja, die Spalte ist da quatsch. In der mittleren Tabelle könnte man den PK über die zwei Foreign Keys machen. Den Zeitraum könnte man als Daterange machen, falls deine DB das kann - was ich fast bezweifle. Passende Datentypen? Das sieht man nicht in solch einem Bild.
 
Zurück
Oben