Ich plane eine App, ein Ernährungstagebuch.
Dafür habe ich mir erstmal überlegt, welche Einträge ich pro Mahlzeit machen möchte. Es gibt einige (wie zum Beispiel der Grund oder der Ort), die sich immer wiederholen, es sollen Auswahlfelder sein, kein Freitext.
Von Michael habe ich gelernt,
- dass man in jede Tabelle eine id-Spalte einfügt, die man als Primärschlüssel markiert. (Auto-Inkrement)
- dass man zwischen „1 zu n“ und „n zu n“-Zuordnungen unterscheidet. (Das ist logisch und wie bei Umfragen: Einfachauswahl/ Mehrfachauswahl)
Für eine „1 zu n“-Zuordnung brauche ich zwei Tabellen. Die erste, die Haupttabelle, beinhaltet eine Spalte zum Beispiel für den Ort, die als Index markiert wird. Die zweite Tabelle besteht aus einer id-Spalte und einer zweiten Spalte, die dann die verschiedenen Orte beinhaltet und – ganz wichtitg – den gleichen Variablentyp und -länge hat wie die Spalte in der Haupttabelle. Diese Orts-Spalte in der zweiten Tabelle wird auch als Index markiert. Dann wechselt man in die Beziehungsansicht und verknüpft die Spalte aus der zweiten Tabelle mit der passenden Spalte aus der Haupttabelle. Wenn man jetzt in der Haupttabelle Einträge vornehmen will, hat man ein Drop-Down-Menü mit den Inhlaten der Spalte aus der zweiten Tabelle.
Für eine „n zu n“-Zuordnung braucht man drei Tabellen: Die Haupttabelle, die Inhaltstabelle und eine Realtionstabelle. Die Inhaltstabelle enthält wieder die ID und eine Inhaltsspalte. Dabei kann, muss aber nicht, die Inhaltsspalte als Index markiert werden. Die Relationstabelle enthält drei Spalten mit den drei betroffenen IDs, also Relations-ID, Haupt-ID und Inhalts-ID. Die Haupt-ID wird unter „Beziehungsansicht“ mit der Haupt-ID der Haupttabelle verknüpft und die Inhalts-ID analog mit der ID der Inhaltstabelle. Verknüfungen von Einträgen werden dann die Relationstabelle eingetragen, also zum Beispiel: 1. Verknüpfung: Zu Haupt-1 gehört Grund-5. 2. Verknüfung: Zu Haupt-1 gehört Grund-2. usw.
Das kann man dann natürlich nicht in der Haupttabelle sehen, aber für eine Ausgabe auf einer Webseite kann man dann die passenden Einträge abfragen.
So sieht meine Datenbank bisher aus: