要求:一组包含要插入到 db 中的十进制数字的数据。该集合中的值的总数可以从 12 到 288 不等。这些数据仅用于计算,这些数据将根据其他列中的其他参数获取,例如:日期
解决方案:是否应该动态创建列以插入每个值,或者我们可以使用一列以逗号分隔格式包含这些值?
请提出有效的方法。
要求:一组包含要插入到 db 中的十进制数字的数据。该集合中的值的总数可以从 12 到 288 不等。这些数据仅用于计算,这些数据将根据其他列中的其他参数获取,例如:日期
解决方案:是否应该动态创建列以插入每个值,或者我们可以使用一列以逗号分隔格式包含这些值?
请提出有效的方法。
是否应该动态创建列以插入每个值,或者我们可以使用一个以逗号分隔格式包含这些值的列?
取决于从数据库管理的角度来看,一组值是否可以被认为是“原子的”。
但是还有另一种选择......如果数据是“稀疏的”并且有大量适用的值,但只有一小部分适用于给定的集合,那么使用EAV的形式可能更合适......
创建两个表,一个用于“集合”,另一个用于“集合中的值”,并通过 1:N 关系连接它们。例如:
CREATE TABLE SET (
SET_ID INT PRIMARY KEY
-- Other fields...
);
CREATE TABLE SET_VALUE (
SET_ID INT REFERENCES SET (SET_ID),
NAME VARCHAR(50),
VALUE DECIMAL,
PRIMARY KEY (SET_ID, NAME)
);
这样,您不需要动态添加新列,但仍保留访问单个值的能力(与逗号分隔的列表不同)。