0

Ich entwerfe diese Mitarbeiterbewertungsseite und habe mich gefragt, ob mein aktuelles Datenbankdesign das richtige ist oder ob es verbessert werden könnte.SQL Server-Datenbankentwurf für Auswertungen

Dies ist mein aktuelles Design

Tabelle Agenda:

+--------------+----------+----------+-----------+------+-------+-------+ 
| idEvaluation | Location | Employee | #Employee | Date | Date1 | Date2 | 
+--------------+----------+----------+-----------+------+-------+-------+ 

Date ist das Datum für die Bewertung geplant durchgeführt werden.

Datum 1 und Datum 2 ist ein Zeitraum, um Messwerte aus einer anderen Datenbank abzurufen.

Tabelle Evaluations:

+--------------+---------+------------+------+----------+ 
| idEvaluation | Manager | Department | Date | Comments | 
+--------------+---------+------------+------+----------+ 

Tabelle Scores:

+--------------+----------+-------+ 
| idEvaluation | idFactor | Score | 
+--------------+----------+-------+ 

idFactor auf eine andere Tabelle bezieht, die den Faktor und eine Beschreibung davon enthält, wie ich seine sagte dies eine korrekte Design??

Meine Sorge ist dies, derzeit gibt es 60 Mitarbeiter, 11 Manager und 12 Faktoren, jeder Mitarbeiter wird zweimal im Jahr von jedem Manager ausgewertet, so in der Agenda Table gibt es nicht viel Ärger seit seiner einzigen Aufzeichnung pro Auswertung (60 Mitarbeiter = 60 Datensätze), wie immer auf der Evaluations Table gibt es 11 Datensätze für jede Auswertung, so geht es auf 660 Datensätze (60 Mitarbeiter * 11 Manager = 660), und dann auf die Scores Table geht es noch größer seit es gibt 12 Faktoren für jede Auswertung, es geht um 7920 Datensätze (660 Auswertungen * 12 Faktoren jeweils = 7920).

Ist das normal ?? Mache ich es falsch? Irgendein Input ist es geschätzt.

EDIT

Lage, Mitarbeiter, #Employee, Leiter und Abteilung werden automatisch von der vb.net Seite, werden sie „importiert“ von einer Active Directory und seinen überprüften vor dem Einsetzen so doppelten Namen, falsch geschriebenen Namen geladen und so etwas ist kein Problem.

+4

7,920 Datensätze ist nur ein Tropfen in die LKW-Ladung von Wasser, die SQL-Server bei richtiger Verwaltung verarbeiten kann. Sie sollten diese jedoch noch weiter ausbauen und separate Tabellen für Mitarbeiter, Abteilung, Standort und Manager erstellen, damit Sie diese Namen nicht duplizieren. Sie werden in den meisten dieser Tabellen eine Menge IDs haben. –

+0

@ Cᴏʀʏ Ich habe über den Mitarbeiter, Standort und Abteilungstisch nachgedacht, aber über den Manager, wäre es wirklich besser, den Namen in eine ID zu ändern? Angesichts dessen ist es meist zu erkennen, wer die Bewertung mehr als wenn es der Manager des Mitarbeiters ist. – abichango

+0

Der Manager wäre vermutlich die ID eines anderen Employee-Datensatzes. Scratch das von meiner ursprünglichen Liste. –

Antwort

1

Die Hauptidee ist, dass Sie nicht wollen, Stringliterale

So wiederholen, wenn Sie

id Department 
    1 Sales 
    2 IT 
    3 Admin 

Statt wiederholen Sales viele Zeit haben nur Sie 1 verwenden, die kleiner ist so Dinge auch schneller.

Zweitens, wenn Benutzer

id user 
    1 Jhon Alexander 
    2 Maria Jhonson 

Wenn Jhon entscheiden, seinen Namen ändern, dann werden Sie alle Tabellen überprüfen müssen und den Namen ändern. Auch gibt es das Problem, wenn zwei Personen denselben Namen haben, wissen Sie nicht, welchen Sie bewerten.

Also gehen Sie für getrennte Tabelle und verwenden Sie die ID.

+0

Ich sehe jetzt die wiederholte Zeichen Vermeidung, macht Sinn, über den zweiten Teil, ich habe gerade meine Frage bearbeitet, um ein wenig darauf zu klären, werde ich jedoch eine andere Tabelle für sie verwenden. – abichango

+0

Ist das gleiche, wie ich sage, Dinge ändern, Abteilung ändern Namen, ppl bewegen sich aus Abteilungen. Ist nur beste Praxis. Sie müssen lernen, normalisieren db. Aber wenn Ihre Frage über die Größe ist, wie Cory sagte, 8000 ist nichts, Im ich 1 Million täglich und nur eine normale Person einfügen, nichts wie amazon. –

+0

Ich bekomme die Änderung Sache, aber in meinem Fall, eine Abteilung ändern, zum Beispiel seine (zumindest sollte es sein) von der IT-Abteilung auf dem Active Directory aktualisiert werden, dann werden alle zukünftigen Datensätze mit dem neuen eingefügt werden Abteilung oder Attribut, das sich geändert hat, und vorherige Aufzeichnungen sollten gleich bleiben, zumindest wurde ich darum gebeten. Aber danke für den Rat, definitiv wird mehr in Normalizing db. Vielen Dank! – abichango