Скажем, у меня есть таблица с именем HoursCharged
ChrgNum(varchar(10))
CategoryID(uniqueidentifier)
Month(datetime)
Hours(int)
CategoryID - это ссылка внешнего ключа на другую таблицу в моей базе данных, которая представляет собой просто пару имя / идентификатор. ChrgNum гарантированно уникален за пределами этой базы данных, и поэтому я проверяю только, существует ли он в моей базе данных.
Вы также должны знать, что этот инструмент поддерживает несколько разных групп из одной базы данных (отсюда и глобально уникальный CategoryID, поскольку разные группы могут потенциально называть Категории одним и тем же, мне нужно было их различать).
Эта таблица заполняется из файла CSV. Идея состоит в том, что каждая комбинация ChrgNum, CategoryID и Month будет уникальной. Отчет, который запускается для создания файла импорта, может видеть только определенный диапазон (то есть год). Поэтому алгоритм выглядит примерно так:
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.
Это все хорошо, за исключением того, что теперь мой начальник хочет, чтобы я учитывал часы, взимаемые в конкретном месяце за известное ChrgNum и unknown Category.
Мой вопрос: как мне это объяснить? Если я просто введу ИД категории NULL, что произойдет, если полностью отдельная группа назначит часы одному и тому же номеру и категории? Моя другая идея состояла в том, чтобы создать новую таблицу для неизвестных категорий, но если я сделаю это, и в первом импорте будут две неизвестные категории, а в следующей снова будет одна из двух (что может произойти), что мне делать?
Моя голова кружилась вокруг этого в течение нескольких часов. Любая помощь приветствуется!