在表格中的实际数据旁边,我需要保存一些关于这些字段的数据.我对将它称为元数据犹豫不决,因为虽然正是如此,元数据有时在数据库中具有特定含义,这并不是我的意思.
示例:我有一个表,对于每个字段,我想知道某种状态.让我们说“未选中”,“确定”,“有缺陷”等.我可以将列加倍,每列添加一个新的“状态字段”,但这感觉不对.
另一个例子是安全地如何计算当前数据,自动检索手动输入的数据.
一些额外的信息:我可能想稍后保存所有更改的数据:一种历史表.虽然这可能是一个完全不同的问题,但我认为在这种情况下它实际上可能会有所帮助:例如,如果我有历史记录的键值存储,我可以在那里添加元数据吗?
是否有任何默认解决方案将此类数据添加到数据库?最终目标是将这些字段添加到现有模型中,该模型包含多个表/关系.我甚至不确定每个表一个解决方案,或者一个解决方案是否可行?
在“ok / not ok”状态的简单情况下,属于此的逻辑查询将“获取所有正常的记录(意思是:所有行开始正常).在不同位置的所有状态可以做当你添加一个额外的每列字段时,我似乎无法想到更快的查询然后只添加一大堆WHERE x_status = ok和y_status = ok AND …等信息的差异-type是丢失的,所以有一个隐藏的属性,我觉得可能需要它自己的…地方.它是关于数据的数据这一事实不应该丢失,但我不确定究竟是多少.
解决方法:
I have a table, and for each field I want to know some sort of state. Lets say ‘unchecked’, ‘ok’, ‘faulty’ etc. I could just double the columns, add a new ‘status-field’ per column, but that feels wrong.
对我来说,这感觉是正确的;-)为了防止打字错误,我认为这可以(并且应该)作为另一个表的外键实现,只有可能的状态.
A different example would be to safe how the data currently came to be, for instance calculated, automatically retrieved of manually entered.
如果有必要,我会再次使用外键到其他表.这些表格将涵盖可用的方法或工具.
更新1
通常,不同状态(未检查,故障,确定等)的数量相当小. TINYINT类型的外键可能足以使内存开销最小化.
标签:mysql,database-design,metadata
来源: https://codeday.me/bug/20190806/1596883.html