1
我经常编写对数据库实体具有依赖性的代码。我想最大限度地减少这些不同系统之间的耦合(或使其明确而健壮)。如何处理数据库条目的依赖关系
示例:我有一个下拉列表的错误类别,用户可以定义新的类别,但是一个类别是特殊的,属于它的错误会得到一个额外的输入字段。因此,系统需要知道用户何时选择了特殊类别,并且该特殊类别不允许消失。
你将如何处理该特殊类别?你会匹配类别名称或ID吗?你会把这个实体放在迁移中,还是让你的代码根据需要重新生成它?你是否从数据库中省略它,并让它只存在于你的代码中?每次出现这个问题时,我都会发现自己会选择新的解决方案,但我从来没有对它们感到满意。
有没有人找到满意的解决方案?你发现了什么缺点,你是如何缓解它们的?
所以你会添加一个触发功能的列或类似的东西?比如说,当选择特殊类别时,验证规则会改变。你会检查category.warrants_lax_validation – Jauco
类别模式看起来像Id,Name,CanDelete,SpecialInput。这样删除代码检查CanDelete标志,而不是硬编码值。相同的特殊输入,根据复杂性检查标志,外键或连接表。一般而言,代码应该尽可能一般地处理数据,任何特殊的属性或决策都应该由正在处理的数据驱动,而不是因为执行处理的代码认为它知道发生了什么。代码应该知道如何识别和处理特殊情况,但不是先验的。 – stonemetal