Das Mitarbeitermanagementsystem eines Unternehmens.
Das Projekt wurde mit ASP.NET für Anwendungsentwicklung und SQL Server als Speicherdatenbank entwickelt. Es wurde eine Registrierung von Mitarbeitern (Person + Fracht) erstellt, wo es möglich ist, die 4 Aktionen von CRUD -Standards durchzuführen. Lesen, erstellen, bearbeiten und löschen. Darüber hinaus wurde die Option zur Rückführung von Gehaltsabrechnungen implementiert, wobei die Datenbank die Beziehung zwischen Person und Büro wieder herstellt und die Tabelle von Person_Salary in der Testbeschreibung diktiert.
In der Beamten/ Backup/ verfügt über eine SQL Server -Sicherungsdatei, die ich mit allen verwendeten Verfahren und bereits eingegebenen Daten verwendet habe. Daher müssen Sie nur eine Bank wiederherstellen.
Hinweis : Nach der Wiederherstellung müssen Sie die in der Mitarbeiterklasse in der Mitarbeiterdatei vorhandene Verbindungszeichenfolge ändern.aspx.cs. Änderung durch die Verbindungszeichenfolge Ihres Geräts.
Öffnen Sie nach dem Konfigurieren der Datenbank die Lösung für einen Code -Editor Ihrer Wahl (ich habe Visual Studio verwendet) und führen Sie die Anwendung aus.
Um die Anzeige der in der Anwendung verwendeten Verfahren zu erleichtern, setzen ich ihre Erstellungsdateien in die Mitarbeiter/SQLS/ein.
Während der Entwicklung fand ich einige seltsame Dinge über die vorgeschlagene Architektur. Hauptsächlich in Bezug auf die Datenbank.
In der Testbeschreibung heißt es, eine Tabelle namens Pessoa_Salario zu erstellen, die die Verbindung der Personentabelle mit Position herstellen würde. Die Existenz dieser Tabelle ist jedoch nicht erforderlich. Für die Notwendigkeit, eine Zwischentabelle zu erstellen, ist nur dann erforderlich, wenn viele zwischen den beiden analysierten Tabellen eine Beziehung von vielen gibt. Dies ist nicht der Fall zwischen Person und Büro. Immerhin kann eine Person jeweils nur in einer Position sein und so gibt es persönlich ein Feld namens Position_ID. Und aus diesem Grund existiert die einzigartige Art der Positionstabelle und es ist folglich bereits möglich, auf die Position und das Gehalt dieser Person zugreifen zu können, ohne dass dies dazu erstellt werden muss, um dies zu erstellen.
Die Art und Weise, wie Sie im Test beschrieben werden, gibt es ein doppeltes Problem in der Bank. Dies war auch in der Anwendung, die irgendwann architektonisch falsch ist, da es irgendwann in diesen Daten Inkonsistenz in diesen Daten erzeugen kann. Nachdem sich der Wert des Gehalts eines Praktikanten in der Zukunft beispielsweise geändert hat, würde die Positionstabelle den Wert aktualisiert, aber die Sanal Sale -Tabelle würde weiterhin den alten Wert haben (Datenkonsistenzproblem), und es wäre notwendig, manuell auf dem Bildschirm der Mitarbeiter zu gehen und die Gehaltsrekalkulationsaktion auszulösen. Dies müsste nicht getan werden, wenn es keine Person gäbe, da die Konsultation den Wert korrekt einnehmen würde, abgesehen davon, dass nur diese Daten an einem einzigen Ort verhindern, inkonsistenzen zu verhindern. Beide vor dem Ändern der Gehaltsmenge und danach.
Der Beweis dafür ist die Analyse der Konsultationen, die die beiden Architekturen erzeugen.
Dies ist die Beratung, um alle Daten von Person, Fracht und Person_Salary zurückzugeben, die in der Auflistung von den Architekturvorschlägen verwendet werden:
SELECT p . ID , p . Nome as Pessoa, Cidade, Email, CEP, Endereco, Pais, Usuario, Telefone, Data_Nascimento, c . Nome as Cargo, ps . Salario FROM Pessoa as p
INNER JOIN Pessoa_Salario as ps on p . ID = ps . Pessoa_ID
INNER JOIN Cargo as c on p . Cargo_ID = c . IDDies hat die gleiche Funktion wie die obige Konsultation, betrifft jedoch nur Person und Büro und gibt genau die gleichen Daten auf einfachere und optimiertere Weise zurück:
SELECT p . ID , p . Nome as Pessoa, Cidade, Email, CEP, Endereco, Pais, Usuario, Telefone, Data_Nascimento, c . Nome as Cargo, c . Salario FROM Pessoa as p
INNER JOIN Cargo as c on p . Cargo_ID = c . IDHinweis : Meine Lösungsvorschläge wurden unter Verwendung der vorgeschlagenen Architektur entwickelt. Dieser Kommentar war nur, um zu zeigen, wie ich ihn durch Architektur am interessantesten und optimiert fand.