Ich habe gerade einen neuen Job als Datenbankentwickler für ein mittelständisches Unternehmen begonnen, das auf Microsoft-Technologie basiert. Ich habe schon früh gemerkt, wie sehr die Praktiken in Bezug auf bewährte Praktiken, Entwurfsmuster, Tests und Projektmanagement von den in der Schule gelehrten Praktiken abweichen.
Was mich am meisten stört, ist, wie unser Hauptdatenbankentwickler (im Folgenden "John" genannt) das Modellschema in der Datenbank hält! Wir tun dies, indem wir 3 "magische" Tische haben; eines für Datenbankschemata, eines für Tabellen und eines für Spalten.
Das Einfügen eines Datensatzes in die " Tables " -Tabelle erzeugt (über einen Datenbank-Trigger) die aktuelle, entsprechende Tabelle. Durch das Einfügen einer Zeile in die " Zeilen " -Tabelle wird die referenzierte Tabelle mit dieser Zeile aktualisiert. Diese werden wiederum von seinem hausgemachten C # -Programm gelesen, um C # -Modelle zu generieren, die von den Frontend-Entwicklern für Controller und nach außen verwendet werden.
Abgesehen davon erfolgt der größte Teil der Entwicklung gemäß dem ASP.NET MVC- Framework.
Ich sehe ein paar Mängel bei diesem Ansatz:
- Wir brauchen ihn, um den ORM aufrechtzuerhalten, und er hat selten die Zeit dazu (Arbeitsplatzsicherheit ist gut!)
- Die Auslöser für die Tabellen "Tables" und "Rows" sind fehlerhaft. Sie unterstützen keine Tabellenaktualisierungen, Check-Constraints oder "erweiterte" Funktionen. Obwohl wir sie sicherlich verbessern könnten, bin ich mir noch nicht sicher, ob dies der richtige Weg ist.
- Das Behalten der Programmlogik in der Datenbank fühlt sich seltsam und einschränkend an (obwohl es möglich ist, seine Modelle durch C # zu erweitern).
- Sein C # -Modellgenerator muss manuell von einer von drei Personen (unter denen ich eine bin) ausgeführt werden und ist noch nicht ausgereift genug, um in einen automatisierten Erstellungsprozess einbezogen zu werden.
Einige Leute haben vorgeschlagen, ein echtes und getestetes Produkt wie Entity Framework einzuführen, aber er lehnt es ab, da die Geschäftslogik nur für kleine Anwendungen und Bootstrap-Projekte für Startups geeignet ist.
Dieser Beitrag führt zu etwas, das wie eine Diskussion mit einer Meinung aussieht, aber das ist nicht meine Absicht. Ich möchte nur etwas Klarheit über unseren architektonischen Ansatz.
Kann die Speicherung der Domain-Modelle in der Datenbank eine nachhaltige Lösung für ein wachsendes Unternehmen sein?