Ich stehe gerade vor einer Entscheidung bei einem kleinen Projekt und bin mir unsicher, wie ich vorgehen soll. Wir haben bisher eine einfache Datei-basierte Speicherung genutzt, aber mit den neuen Anforderungen wird das langsam unübersichtlich. Ich überlege, auf eine echte Datenbank umzusteigen, aber der Schritt fühlt sich größer an, als ich dachte. Besonders frage ich mich, ob ich direkt mit einer relationalen Struktur starten soll oder ob das Overkill ist. Mir ist klar, dass ich irgendwann eine Datenbanknormalisierung brauchen werde, um die Redundanzen in den Griff zu bekommen, aber ich möchte nicht von Anfang an zu viel Zeit in ein perfektes Schema investieren, bevor die Anforderungen sich überhaupt eingespielt haben. Wie habt ihr das bei euren ersten Projekten gemacht?
Ja, dieses Gefühl kenne ich gut. Du willst Ordnung, aber du willst nicht erst drei Wochen über Normalformen brüten. Meine Erfahrung ist, dass du mit einer kleinen pragmatischen Lösung startest, oft reicht eine sqlite datenbank für den Start. Wichtig ist, dass du schnell zu greifbaren Ergebnissen kommst und die Anforderungen erst später verfeinerst.
Analytisch sachlich beginne mit einer sehr einfachen relationalen struktur doch plane normalisierung nur als spätere phasen. Starte mit identifizierten entitäten klare schluesselbeziehungen und halte tabellen und felder minimal. Verfolge eine inkrementelle migration füge neue felder schrittweise hinzu oder nutze optionale spalten um redundanz zu reduzieren ohne am anfang alles perfekt zu modellieren. Eine kleine klare datenbank wie sqlite oder postgres im prototyp hilft die tatsächlichen zugriffe zu messen bevor man invasive Änderungen macht.
Vielleicht interpretierst du es zu eng. Vielleicht reicht am Anfang eine dokumentenbasierte oder key value datenbank, wenn du unstrukturierte daten oder schnelle iteration willst. Dann musst du noch nicht normalisieren, sondern einfach konsistenz über eine klare api sicherstellen. Aber vorsicht je größer das wachstum desto schmerzvoller wird später der Umbau.
Warum muss es unbedingt eine relationale Struktur sein, könnte eine dokumentenbasierte Lösung die Anforderungen nicht schon ausreichend abdecken?
Ich glaube es geht weniger darum die perfekte schema grafik zu bauen sondern darum eine zuverlässige api zu liefern. Baue eine klar definierte schnittstelle teste wie du daten abfragen willst und lasse das schema hinter der api wachsen. Dann ist der umstieg auf eine gut strukturierte datenbank leichter wenn die anforderungen stabiler werden.
Nur weil es neu klingt heißt das nicht dass gleich eine datenbank her muss. Manchmal reicht eine solide dateistruktur mit einer kleinen abstraktionsschicht. Der trick ist nicht zu früh zu entscheiden was später kritisch wird sondern die metriken zu beobachten welche abfragen welche skalierung welche konsistenzanforderungen