我正在 Snowflake 中构建 DQ 测试应用程序。下面是数据模型的简化版本(为了清楚起见,我重命名了对象)。我有多个用于不同测试的配置表(例如,每个
unique_tests
都有 test_id
列(充当 PK),它是关键列的 MD5 哈希值,有助于避免重复测试)。
还有一个结果表test_results
,其中每个测试类型运行的结果都保留了作业的历史记录。
现在我添加了一个表 test_impact_category
,用户可以根据影响对问题结果进行分类(例如高影响、低影响等)。
我没有看到在
test_impact_category
表中创建单独主键的用例,因为这是雪花,其中不强制执行主键且不将其用于索引。所以这里的争议是:
让外键引用另一个外键(很多)实际上是有意义的(
test_results.test_id
(很多)=test_impact_category.test_id
(一个))
不向测试配置表添加影响列是有原因的
因此,如果就数据建模最佳实践和常识而言,我很好奇其他经验丰富的建模者/工程师将如何在 Snowflake 中对此进行建模?
显然,不存在外键只能引用 PK/UK 的困境。 所以我猜这种关系不能记录在 DDL 中。 保留这个帖子,也许会有一些有趣的答案,其他一些人也能受益。