SQL Design - учет неизвестных значений - PullRequest
2 голосов
/ 31 июля 2009

Скажем, у меня есть таблица с именем 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, что произойдет, если полностью отдельная группа назначит часы одному и тому же номеру и категории? Моя другая идея состояла в том, чтобы создать новую таблицу для неизвестных категорий, но если я сделаю это, и в первом импорте будут две неизвестные категории, а в следующей снова будет одна из двух (что может произойти), что мне делать?

Моя голова кружилась вокруг этого в течение нескольких часов. Любая помощь приветствуется!

Ответы [ 2 ]

2 голосов
/ 09 августа 2009

Ваш босс представил вам эту проблему, так почему бы не спросить их? Потому что это действительно похоже на проблему бизнеса. Если у вас есть группы, которые сообщают о категориях, о которых вы не знаете, то наверняка вам следует попытаться синхронизировать базу данных с системами, которые ее заполняют?

Иначе, что плохого в том, чтобы иметь одну категорию «Неизвестно»? Вас просят отследить часы, назначенные категориям, которые вы в данный момент не отслеживаете.

0 голосов
/ 31 июля 2009

Мне кажется, что вы должны добавлять нераспознанные категории в существующую таблицу категорий на лету. Если проблема заключается в различении категорий с одинаковыми именами в разных группах, разве у вас уже нет этой проблемы?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...