Ich habe ziemlich viel mit relationalen Datenbanken gearbeitet und denke, ich verstehe die Grundkonzepte eines guten Schemaentwurfs ziemlich gut. Vor kurzem wurde ich beauftragt, ein Projekt zu übernehmen, bei dem die DB von einem hochbezahlten Berater entworfen wurde. Bitte lassen Sie mich wissen, ob mein Bauchgefühl - "WTF ??!?" - ist gerechtfertigt, oder ist dieser Typ so ein Genie, dass er außerhalb meines Reiches operiert?
Bei der DB handelt es sich um eine Inhouse-App, mit der Anfragen von Mitarbeitern erfasst werden. Wenn Sie sich nur einen kleinen Abschnitt davon ansehen, erhalten Sie Informationen zu den Benutzern und zu der Anforderung, die gestellt wird. Ich würde das so gestalten:
Benutzertabelle:
UserID (primary Key, indexed, no dupes)
FirstName
LastName
Department
Tisch anfordern
RequestID (primary Key, indexed, no dupes)
<...> various data fields containing request details
UserID -- foreign key associated with User table
Einfach, richtig?
Berater gestaltet es so (mit Beispieldaten):
UsersTable
UserID FirstName LastName
234 John Doe
516 Jane Doe
123 Foo Bar
DepartmentsTable
DepartmentID Name
1 Sales
2 HR
3 IT
UserDepartmentTable
UserDepartmentID UserID Department
1 234 2
2 516 2
3 123 1
RequestTable
RequestID UserID <...>
1 516 blah
2 516 blah
3 234 blah
Die gesamte Datenbank ist so aufgebaut, dass jedes Datenelement in einer eigenen Tabelle zusammengefasst ist und numerische IDs alles miteinander verbinden. Anscheinend hatte der Berater über OLAP gelesen und wollte die "Geschwindigkeit der Ganzzahlensuche"
Er verfügt auch über eine große Anzahl gespeicherter Prozeduren, um auf alle diese Tabellen zu verweisen.
Ist dies ein gültiger Entwurf für eine kleine bis mittelgroße SQL-Datenbank?
Danke für Kommentare / Antworten ...