在 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?
不,你不需要...
据我所知,您应该只在您没有值 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?
不,你不需要...