我有要放入数据库的信息,但我需要存储有关数据来自何处的元数据(无论是测量数据还是计算数据)。我有几个属性可以相互独立地计算和测量。
解决这个问题的简单/天真的方法是为每个字段设置一个布尔值,指示数据是否被测量。有没有更好的方法来解决这个问题?
我有要放入数据库的信息,但我需要存储有关数据来自何处的元数据(无论是测量数据还是计算数据)。我有几个属性可以相互独立地计算和测量。
解决这个问题的简单/天真的方法是为每个字段设置一个布尔值,指示数据是否被测量。有没有更好的方法来解决这个问题?
听起来没有必要把这个复杂化。一个简单的列来指示数据源就足够了。如果您只处理“已测量”与“未测量”,那么布尔值就可以了。
否则,我会将其smallint
设为对最初仅包含以下内容的查找表的外键引用:
CREATE TABLE data_source (
id smallint primary key,
source_name text unique not null
);
INSERT INTO data_source(id, source_name) VALUES
(0, 'WhateverNotMeasuredIs'),
(1, 'Measured');
PostgreSQL 还支持枚举(enums),这是另一个很好的选择。不过,它们真的只适合那些永远不会改变的东西,而且更像是一种优化。您可以稍后再考虑。