Teradata:如何设计表以规范化为具有许多外键列



我正在 Teradata 中设计一个大约 30 列的表。 这些列将需要存储多个时间间隔样式的值,例如"每日"、"每月"、"每周"等。 将实际字符串值存储在表中是糟糕的设计,因为这将是数据的严重重复。 相反,我想做的是创建一个原始查找表。 此表将保存每日、每月、每周,并使用 Teradata 的标识列派生主键。 然后,此主键将作为外键存储在我创建的表中。

这对我的应用程序来说效果很好,因为我只需要在填充 Web 表单的下拉列表时知道原始键值。 但是,我们使用的其他应用程序将需要运行报告或通过源接收此数据。 因此,需要创建一个视图,将此表联接到基元表,以便它可以实际返回"每日"、"每月"和"每周"。

我关心的是性能。 我从未创建过包含如此大量外键字段的表,并且对 Teradata 相当陌生。 在我踏上漫长的漫长道路之前,我想得到任何关于实现目标的最佳方式的建议。

编辑:我想我应该补充一点,这个查找表将是不相关的原语的大杂烩。 它将包含与上述时间间隔相关的一组值,以及 24x7 和 8x5 等时间框架。 该表将设计如下:

标识类型值--- ------------ ------------每日 1 次间隔每月 2 间隔每周 3 间隔4 时间框架 24x75 时间框架 8x5

编辑第 2 部分:添加了一个新标签以获得更多对此问题的曝光率。

你所做的应该没问题。显然,您需要运行实际查询并在适当的情况下收集统计信息。

我可以推荐的一件事是在查找表中增加一行,如下所示:

ID  Type         Value
--- ------------ ------------
0   Unknown      Unknown

然后在主表中,不要将字段设置为 null,而是为它们指定值 0。这允许您使用内部联接而不是外联接,这将有助于提高性能。

最新更新