ich verwende derzeit für eine Webanwendung eine SQL Server 2016 Datenbank. Die Tabellen sind normalisiert und es gibt mehrere n:m Beziehungen mit ihren Zwischentabellen.
In der Webanwendung werden Stammdaten von Mitarbeitern, Maschinen, Verbrauchsmaterial usw. gepflegt. Diese werden für Außeneinsätze in einer zusätzlichen Projekt Weboberfläche zu einem Projekt über x Tage zusammengeführt.
Zusätzlich gibt es noch Begriffe die wie Kategorien funktionieren und vom Web App Bediener selbst frei erstellbar sind. Beispielweise gehören dann alle Schrauber zu einer bestimmten Kategorie um
später die Suche über eine Kategorie zu vereinfachen.
Lief bisher ganz gut - jetzt hat sich aber in den Anforderungen ziemlich viel verändert (neues Geschäftsmodell soll integriert werden) die es erfordern, das Datenbankschema stark zu erweitern. An manchen Stellen ändern sich auch die Relationen.
Vermutlich ändert sich in einiger Zeit noch mehr.
Meint ihr, das ist ein Fall für nicht-relationale Datenbanken und ich sollte in dem Zuge einen Wechsel auf eine andere Datenbank planen? NoSQL Datenbanken sind prinzipiell einfach erweiterbar aber ich bin mir nicht sicher, ob meine Anwendung auf ein nicht relationales Datenbank Schema passt..
Ein Problem habe ich dabei:
Beim relationalen Modell verwende ich die Foreign Keys und ein paar Zusatzdaten um einen neuen Datensatz zu erstellen, der z.B. eine vorhandene Maschine und einen vorhandenen Mitarbeiter enthält.
Bei nicht relationalen Modellen, werden die benötigten Daten der Mitarbeiter bzw. Maschine einfach mit abgespeichert (ohne Verweis auf die original daten).
Wie funktioniert bei einem nicht relationalen datenbank schema die aktualisierung von solchen stammdaten in (gedanklich) verwiesenen datensätzen?
Die Daten müssen doch konsestent bleiben.
Ok, das heißt aber in meinem Fall, dass ich besser bei der relationalen Datenbank bleibe.
Sonst muss ich im Code selbst dafür sorgen, dass bei Änderungen von Daten, alle betroffenen Datensätze aktuell gehalten sind..
Mir fehlt der wirkliche Grund um etwas so grundlegendes wie ein Datenbankschema neu zu gestalten.
Ich sehe nur den Gedanken, in Zukunft ändert sich unser Projekt, jetzt stellen wir einfach mal irgendetwas komplett um und hoffen dass das dann genügend Innovation ist.
Find ich noch nicht ausreichend.