假设我有一个“主”表,该表可能已高度规范化,并且主要由仅包含查找其他表的代码的列组成(它们可能是外键,但如果有意义,请不要在您的答案中假设)。例如,也许这个主表是一个人员列表,其中一列是 for favorite_color
。当然,我们的查找表看起来像这样:
color_cd color_name
0 Unknown
1 Red
2 Blue
3 Orange
4 Other
现在,如果我要从这个主表创建报告,或者可能将这些数据输入到某些软件中供领域专家使用,我宁愿用查找表中的代码替换favorite_color
代码。color_name
当然,一种解决方案是在我的 SELECT 中使用简单的 JOIN 来执行此操作:
SELECT main.col1, main.col2, colors.color_name as `Favorite Color`
FROM main LEFT OUTER JOIN colors ON (main.favorite_color = colors.color_cd);
这可以完成工作。现在假设主表有几十个甚至几百个这样的列和数百万行。一些查找表很小,如上面的示例,但其他查找表可能有数百或数千个值。
是否有任何一种标准的方式来进行这种转换,或者是否有几十个或几百个连接的长篇大论?这种类型的东西是任何 ETL 产品的典型组件吗?是否最好编写一个脚本来处理这个没有连接和 SQL 之外的?请原谅可能存在一些滥用或误用术语的情况;我什至不确定上述过程是否有名称。