Database design 何时和何时不需要映射表?

Database design 何时和何时不需要映射表?,database-design,relational-database,Database Design,Relational Database,我对正常化有疑问 我有三张桌子: rule_set (id, name, creation_date, descrtiption) input_scenario (id, name, creation_date, bitmask, description) output (id, rule_set_id, input_scenario_id, key, value), fk(rule_set_id to rule_set.id, input_scenarion_id to input_sce

我对正常化有疑问

我有三张桌子:

rule_set (id, name, creation_date, descrtiption)

input_scenario (id, name, creation_date, bitmask, description)

output (id, rule_set_id, input_scenario_id, key, value), fk(rule_set_id to rule_set.id, input_scenarion_id to input_scenario.id);
我的想法是配置了一些输入场景。然后,无论何时创建新的规则集,都会为每个输入场景创建一系列输出

该模式运行良好,但为了规范化起见,我怀疑是否应该创建如下映射表:

mapping (id, rule_set_id, input_id), fk (rule_set_id to rule_set.id, input_id to input.id)
然后我的输出表如下所示:

output(id, key, value, mapping_id), fk (mapping_id to mapping.id)

最佳实践是什么?为什么?

规范化涉及识别和维护关系/表中的函数依赖项和连接依赖项。但是,您没有提供任何依赖项。如果我根据您的表和列名进行假设,我会说您的映射表只是添加了一点不必要的间接性。但我可能解释错了。请列出您的依赖项以获得可靠答案。使用外键更新以获得更好的理解。我建议您从阅读开始。和规范化。