我有一些数据,并试图跟踪工作文书工作的各种问题。数据看起来像这样:
ID | Paperwork 1 | Paperwork 2 | Paperwork 3
1 | No Signature | No Signature | Missing Date
2 | Completed | No Signature | Missing Signature
3 | Missing Date | Completed | Completed
4 | None | Completed | Missing Signature
在 N 个类别的文书工作、M 个不同的 ID 或行以及每个字段中 X 个不同的可能响应中,我试图确定哪个 ID 的响应以及哪个类别的文书工作在哪里。
我想到了两种不同的桌子设计。
两列设计:
ID | Paperwork
1 | 1
2 | 4
3 | 10
4 | 257
带有相应的代码库
0 = No Paperwork 1
1 = No Paperwork 2
2 = No Paperwork 3
4 = Paperwork 1 Submitted Successfully
8 = Paperwork 2 Submitted Successfully
16 = Paperwork 3 Submitted Successfully
32 = Paperwork 1 Missing Date
64 = Paperwork 2 Missing Date
128 = Paperwork 3 Missing Date
256 = Paperwork 1 Missing Signature
512 = Paperwork 2 Missing Signature
1024 = Paperwork 3 Missing Signature
因此,我们只需查看文书工作栏中的任何数字即可知道该期间不同文书工作的问题。在两列设计中,错误将是:
两列设计:
ID | Paperwork
1 | No Paperwork 2
2 | Paperwork 1 Submitted Successfully, No Paperwork 2
3 | Paperwork 2 Submitted Successfully, No Paperwork 3
4 | Paperwork 1 Missing Signature, No Paperwork 2
这种设计的问题是: 1) 很容易将数字放入文书工作栏中 - 有人需要查看给定时期的所有文书工作,并注意每件作品的各种问题或缺乏问题文书工作。一旦找到这些问题,就会为每个问题分配一个数字,然后将这些数字相加以找到一个总数字,该数字封装了该给定时期内的所有问题。但是,我不知道如何从这些特定数字中进行文本输出,并且我不想强行列出所有潜在文本输出的列表,因为有太多不同的可能性。它可以缩小一些,因为你不能有一份缺少签名的完整文书工作,但这听起来有太多的可能性 所以我的问题是:如果我得到数字 257,我怎么知道 257 真的是 256+1?我是否需要,或者我是否让这变得不必要地复杂?
或者,我想到的另一种方法是将所有错误包含在一个更二进制的变量中。所以代替上面列出的错误代码,它看起来像:
许多列
0 = No Paperwork
1 = Paperwork Completed
2 = There is an error with Paperwork 1
3 = There is an error with Paperwork 2
4 = There is an error with Paperwork 3
所以表格将是:
ID | Paperwork 1 | Paperwork 2 | Paperwork 3
1 | 2 | 3 | 4
2 | 1 | 3 | 4
3 | 2 | 1 | 1
4 | 0 | 1 | 4
然后,当我试图对文书工作的各种问题进行报告时,我需要做的就是有一个查找函数来计算文书工作 1 列中有多少数字 2 的实例,并找到相应的 ID它。然后我会将这些信息提供给我的同事和老板,然后他们会反过来知道这个人的这份文件存在问题;但他们不知道具体是什么问题,需要依靠自己对书籍的第一手知识。
这种设计的问题在于,它隐含地要求人们与我的管理书籍的同事核对,以找出文书工作的问题,而我参与这项工作的全部目的是帮助她完成工作并利用计算机的力量来帮助她完成任务。所以第二种设计似乎并没有利用计算机技术的全部潜力来帮助完成任务。
因此,除了之前提出的问题,我完全欢迎在这件事上提出任何问题、观点或方向。如果您有替代的桌子设计,我也欢迎。
如果这篇文章违反了任何关于不直接的stackoverflow政策,我提前道歉,我尽量让它尽可能直接。