Sagen, ich habe eine Tabelle namens HoursChargedSQL-Entwurf - Bilanzierung von unbekannten Werten
ChrgNum(varchar(10))
CategoryID(uniqueidentifier)
Month(datetime)
Hours(int)
CategoryID ist ein Fremdschlüssel Bezug auf eine andere Tabelle in meiner Datenbank, die nur ein Name/ID-Paarung ist. ChrgNum ist garantiert einzigartig außerhalb dieser Datenbank, und so überprüfe ich nur, ob es bereits in meiner Datenbank existiert.
Sie sollten auch wissen, dass dieses Tool mehrere verschiedene Gruppen aus einer Datenbank unterstützt (daher die global eindeutige CategoryID, da verschiedene Gruppen die Kategorien möglicherweise die gleiche Sache nennen, die ich unterscheiden musste).
Diese Tabelle wird aus einer CSV-Datei ausgefüllt. Die Idee ist, dass jede Kombination von ChrgNum, CategoryID und Month einzigartig sein wird. Der Bericht, der zum Erstellen der Importdatei ausgeführt wird, kann nur einen bestimmten Bereich (z. B. ein Jahr) anzeigen. Deshalb sucht der Algorithmus etwas wie folgt aus:
IF (ChrgNum exists in database, CategoryID exists in database,
combo of ChrgNum/CategoryID/Month DOES NOT exist in table HoursBurned)
THEN add a new row for this entry
ELSE IF (ChrgNum exists in database, CategoryID exists in database,
combo of ChrgNum/CategoryID/Month DOES exist in table HoursBurned)
THEN update the existing row with the new Hours value.
Das ist alles schön und gut, bis jetzt mein Chef will, dass ich stundenlang Konto belastet, in einem bestimmten Monat, für einen bekannten ChrgNum und einer unbekannt Kategorie.
Meine Frage ist, wie kann ich das erklären? Wenn ich einfach eine NULL CategoryID einfüge, was passiert, wenn eine völlig separate Gruppe Stunden auf die gleiche Nummer und Kategorie auflädt? Meine andere Idee war es, eine neue Tabelle für die unbekannten Kategorien zu erstellen, aber wenn ich das tue und der erste Import zwei unbekannte Kategorien hat, während der nächste eine der beiden wieder hat (was passieren kann), was mache ich?
Mein Kopf hat stundenlang herumgewirbelt. Jede Hilfe wird geschätzt!
ernst: müssen Sie die verschiedenen "unbekannten" Kategorie IDs auseinander halten? Ich mag Ihre Idee, in eine Tabelle "unbekannte Kategorien" einzufügen. Um das "Unbekannte bereits vorhanden" zu behandeln, können Sie entweder eine programmatische Überprüfung durchführen und nur einfügen, wenn es nicht bereits vorhanden ist, oder eine eindeutige Einschränkung für die CategoryID hinzufügen und sie anweisen, Duplikate zu ignorieren. –
Nein, das Problem besteht darin, dass der Bericht eine variable Zeitspanne hat. Angenommen, ich finde zwei unbekannte Kategorien im ersten Berichtslauf. Das nächste Mal, ich finde eins, und das eine genaue Kopie von einem der früheren zwei. Was passiert mit der Reihe? –
könnten Sie Ihren "Unbekannten Kategorien" eine zusätzliche Spalte hinzufügen, die diesen Fall einzigartig macht? Etwas wie eine INT IDENTITY oder so? Verlassen Sie sich nicht auf die CategoryID, um einzigartig zu sein? –