我们的 ETL 团队和 Data Modeler 之间就是否应该对表进行规范化进行了辩论,我希望从在线社区获得一些观点。
目前这些表是这样设置的
主表查找表 主键 (PK) 代码 (PK) 代码 (FK) 名称 其他列
- 这两个表仅由定期文件(来自第 3 方)通过 ETL 作业填充
- 文件中的单个记录包含单个行的两个表中的所有属性)
- 填充这些表的文件是一个增量(文件中只有有一些变化的行)
- 对一条记录的一个属性进行一次更改(同样仅由第 3 方更改)将导致该记录的所有数据都在文件中
- 代码和名称的域值 未知。
问题:是否应该将 LookupTable 非规范化为 MainTable。
- ETL 团队:是的。使用此设置,文件中的每一行首先必须检查第二个表以查看其 FK 是否在其中(如果不是则插入),然后添加 MainTable 行。更多的代码,更差的性能,是的,更多的空间。但是,无论第三方如何更改 LookupTable.Name,定期文件都会反映受影响的每一行,我们仍然必须解析每一行。如果集中到 MainTable 中,那么它就是一个简单的更新或插入。
- Data Modeler:这是标准的良好数据库设计。
有什么想法吗?