假设我有一个名为HoursCharged的表
ChrgNum(varchar(10))
CategoryID(uniqueidentifier)
Month(datetime)
Hours(int)
CategoryID是对我数据库中另一个表的外键引用,它只是一个名称/ ID配对。 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和一个未知类别收取费用。
我的问题是,我如何解释这个问题?如果我只是插入一个NULL CategoryID,如果一个完全独立的组收取相同数量和类别的小时数会怎样?我的另一个想法是为未知类别创建一个新表,但是如果我这样做,并且第一个导入有两个未知类别,而下一个导入有两个中的一个(可能发生)我该怎么办?
我的脑袋已经旋转了好几个小时。任何帮助表示赞赏!
答案 0 :(得分:2)
你的老板向你提出了这个问题,为什么不问他们呢?因为这听起来像是一个商业问题。如果您的组有报告您不了解的类别,那么您当然应该尝试将数据库与提供它的系统同步吗?
否则,有一个“未知”类别有什么问题?系统会要求您跟踪分配给当前未跟踪的类别的小时数。
答案 1 :(得分:0)
在我看来,您应该动态地将无法识别的类别添加到现有类别表中。如果问题是区分不同组中具有相同名称的类别,那么您现在不是已经遇到了这个问题吗?