在 table 中提取可选字段

extracting optional fields in a table

据我所知,您应该只在您没有值 YET 的字段上使用 null。所以我遇到了一个table,例如这个结构

TABLE_1
-------
ID NOT NULL,
FIELD_1 NOT NULL,
FIELD_2 

我确定 FIELD_2 创建后不会更新,它允许 NULL 值。

这是 table 的糟糕设计吗?

我是否必须像这样将 FIELD_2 提取到另一个 table 中?:

TABLE_1                  TABLE_2
-------                  -------
ID NOT NULL              TABLE_1_ID NOT NULL
FIELD_1 NOT NULL         FIELD_2 NOT NULL

在我看来,这取决于您正在处理的数据的上下文。我会说使用这种设计的状态是错误的,这是错误的。但是,通常不应该使用它,因为它涉及使用连接语句和性能下降。

除非在此设计中:

TABLE_1                  TABLE_2
-------                  -------
ID NOT NULL              TABLE_1_ID NOT NULL
FIELD_1 NOT NULL         FIELD_2 NOT NULL

TABLE_2 有一个含义(一个模型或本身的另一个含义)你不应该仅仅因为 FIELD_2 可能是一个永远无法分配的值而拆分你的模型。在内存中,一个 NULL 字段并不昂贵。所以...

Is this a bad design of the table?

不,不是。

Do I have to extract FIELD_2 into another table?

不,你不需要...