Ich kenne einige allgemeine Best Practices beim Entwerfen einer Datenbank für eine Anwendung, aber wie sieht es mit der Neugestaltung aus?
Ich bin in einem Team, das mit der Neugestaltung einer internen Geschäftsanwendung beauftragt ist, obwohl ich "intern" sage. Leider habe ich viele, viele Leute, die keinen Kontakt zu den tatsächlichen Benutzern des Systems haben.
Das aktuelle Programm liegt in Oracle Forms vor, verteilt auf eine Reihe nicht normalisierter Tabellen, manchmal mit mehreren nahezu doppelten Tabellen, die geringfügige Abweichungen von den Daten der jeweils anderen enthalten. Die Einschränkungen liegen häufig in Form von schlecht erzwungenen gespeicherten Prozeduren vor. Sogar die Typen scheinen nicht richtig gespeichert zu sein. Ich habe alle Arten von schlechten Daten gefunden, die Oracle zu ignorieren scheint, die aber dem Import / Export-Assistenten von SQL Server (und das zu Recht) entsprechen. (Zweistellige Ganzzahlen stellen beispielsweise keine vollständige Datums- und Uhrzeitangabe dar!)
Das ursprüngliche Programm ist wahrscheinlich zwanzig Jahre alt, und alle ursprünglichen Entwickler haben sich vor so langer Zeit zurückgezogen, dass selbst die älteren Leute hier keine Ahnung haben, wer sie waren. Infolgedessen müssen auch keine sauberen Anforderungen erfüllt werden. Wir sollen lediglich die Funktionalität der vorhandenen Anwendung duplizieren und die vorhandenen Daten beibehalten.
Das Endergebnis des Umschreibens wird eine webbasierte Version sein, die auf ASP.NET mit MS SQL Server für das Back-End ausgeführt wird.
Meine beiden anderen Entwicklerteamkollegen sind viel, viel älter als ich, beide mit Business / MIS-Hintergrund, während meine CS ist. Das Senior-Mitglied hat fast ausschließlich Erfahrung mit Oracle-Formularen und das andere Mitglied hat hauptsächlich in Visual Basic mit Geschäftsanwendungen gearbeitet. Obwohl sich mein Datenbankhintergrund darauf beschränkt hat, neue Datenbanken für Projekte in MySQL oder SQLite zu entwerfen, scheine ich der einzige zu sein, der überhaupt Erfahrung mit dem Entwerfen von Datenbanken hat.
Ich habe bereits ein kleines Programm in C # geschrieben, das alle vorhandenen Daten in einem neutralen Format einliest und bereit ist, neu umgewandelt und in eine neue Datenbank gestellt zu werden. Ich plane, den Lade-Code nach dem Entwurf der Zieldatenbank zu schreiben, damit die Daten ordnungsgemäß auf die neuen normalisierten Tabellen aufgeteilt und in der richtigen Reihenfolge hinzugefügt werden können, um neuen Einschränkungen zu folgen usw. Das gleiche Programm könnte dann später erneut ausgeführt werden um die Produktionsdaten in das real neu eingesetzte fertige Redesign zu kopieren. Dies lässt die eigentliche Neugestaltung der Datenbank als Hauptsache herauszufinden.
Der Kern meiner Frage lautet also: Was sind einige bewährte Methoden für ein Redesign von der Datenbankebene bis zu einer vorhandenen Anwendung?