Wenn es auch etwas Englisches sein darf,
und sollen gut sein.
Vorgehensmäßig...
zuerst alles einfach mal zusammensammeln/aufschreiben, was man weiß (und ggf.
die fehlenden Sachen herausfinden), bevor man die technische Seite beginnt.
Was will man speichern,
welche Art von Daten ist Ding xy (Text, Kommazahl...), gibt es Beschränkungen für die erlaubten Werte,
was gehört zusammen und warum,
wieviel X gibt es pro Y (genau 1 x für jedes y, unbedingt/optional, min. 1 pro 2Y, genau 3...? Ca. 10 oder ca. 10000? ...),
....(für alles außer 1:1 machen "Zwischentabellen", die nur IDs von X mit IDs von Y verbinden, oft Sinn)
Wie groß kann ein einzelner Wert werden (Name mit 50 Buchstaben, Buch mit 1Mio.?),
welche Sachen werden vermutlich wie oft abgefragt (später im fertigen Programm etc.),
....und wie (Suche nach exakten einzelnen Werten, Suche nach Wertebereichen von-bis, Textteil-Suche...)
usw.usw.
Ein kleines (oder größeres) Diagramm irgendwo schnell dazu-"schmieren"
(solangs nicht zum Herzeigen gedacht ist) kann auch helfen.
Bis man das hat gar nicht an Tabellen usw. denken, das kommt
dann nämlich fast von selbst, wenn man alles vor sich hat
Das Ganze überprüfen, ob man irgendwo die selben Werte mehrfach geplant hat, ob bestimmte Werte einfach aus anderen berechnet werden können und deshalb auch nicht gespeichert werden müssen, ob irgendwo zwei Wertegruppen/Tabellen ähnliche Sachen speichern und eigentlich als eine Tabelle gemacht werden könnten, solangs irgendwie Sinn macht...
Dann die schon erwähnten Normalformenvorschriften verwenden, die vermutlich dazu führen, dass verschiedene Sachen noch in mehrere aufgeteilt werden. Die erste NF auf jeden Fall 100% umsetzen, das bereut man sonst später. NF2 und NF3 ... die NFs machen auf den ersten Blick alles komplizierter, auch die Abfragen, aber vermutlich freut man sich später irgendwann darüber.
Mit höheren Stufen zB. ab 4 wirds (je nach Fall evt.) mehr Aufwand als man dadurch Vorteile hat, also nicht so wichtig.
Indexe planen anhand der oben gesammelten Häufigkeitsanngaben (Wieviel Werte, wieviel Abfragen wo/wie/warum), (
http://use-the-index-luke.com für einen tieferen deutschen Einstieg), weil man manche Abfragen gern in Sekunden statt Tagen fertig haben will. Und wenn Geschwindigkeit für bestimmte Sachen noch wichtiger ist evt. Cachetabellen dazutun (in denen vom Programm heraus zB. die Einträge der letzten 7 Tage oder so irgendwas gespeichert werden, weil die am häufigsten gebraucht werden und die kleinere Tabelle schneller durchsuchbar ist)
...und dann langsam anfangen CreateTable´s zu schreiben (

)