- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
这是一个关于良好数据库设计的问题,我想不出很多方法来实现它,但我想出的方法很可能是糟糕的数据库设计(我不想成为被 C.J. Date 骂)。我想在我的 MySQL 数据库中为检查表中的检查项目设置一个表。用户在完成所有检验项目前,可多次保存检验单。因此,每个项目都可以处于“未检查”状态或“已检查”状态。如果一个检查项目已经检查过,它必须有一个“通过”或“失败”的值。
最初我打算使用一个允许 NULL 的 bool 属性,我打算让 NULL 代表“未检查”状态,认为 NULL 意味着属性的值(通过/失败)是未知的。但是观看有关数据库设计的视频和阅读书籍,我被引导相信使用 NULL 来表示状态或值是糟糕的设计。我认为使用两个属性(检查并通过)或使用三值 ENUM 也不是好的数据库设计。
这可能是一个非常初级的问题,我可能只是把事情复杂化了。
最佳答案
我认为将“通过”/“失败”列设置为 NULL
表示状态尚未分配,这没有任何内在问题。事实上,我可以看出它有一定的优雅之处,假设这些值有很好的记录,这样用户就知道他们得到了什么。
您也可以使用enum
。不过,老实说,在使用枚举时,我经常需要查找可接受的值(是“通过”还是“通过”?)。位/ bool 类型使该过程更容易。
因此,我不会强调这个特定问题。如果
那么这是一个合理的解释。如果事情变得更复杂,您可能需要使用引用表(或枚举)。
关于MySQL 三态属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51777732/
我来自 Asp.Net 世界,试图理解 Angular State 的含义。 什么是 Angular 状态?它类似于Asp.Net中的ascx组件吗?是子页面吗?它类似于工作流程状态吗? 我听到很多人
我一直在寻找 3 态拨动开关,但运气不佳。 基本上我需要一个具有以下状态的开关: |开 |不适用 |关 | slider 默认从中间开始,一旦用户向左或向右滑动,就无法回到N/A(未回答)状态。 有人
我是一名优秀的程序员,十分优秀!