Teradata:如何设计要使用许多外键列进行规范化的表?

osc*_*tin 5 performance foreign-key primary-key teradata

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

该表将设计如下:

ID 类型值
--- ------------ ------------
每天 1 次间隔
2 间隔每月
3 间隔每周
4 时间帧 24x7
5 时间帧 8x5

这对我的应用程序很有效,因为我需要知道的只是填充 Web 表单下拉列表时的原始键值。但是,我们使用的其他应用程序需要运行报告或通过提要接收这些数据。因此,需要创建一个视图,将这个表连接到基元表,以便它可以实际返回 Daily、Monthly 和 Weekly。

我关心的是性能。

我从未创建过包含如此大量外键字段的表,并且对 Teradata 还相当陌生。在我走上漫长的道路以艰难的方式弄清楚这一切之前,我希望获得任何建议,以实现我的目标的最佳方式。

Con*_*lls 4

免责声明:我从未构建过 Teradata 系统,因此我无法从第一手经验中得出这一结论,但我会解释原因。

我认为 Teradata 将能够有效地生成此视图。从你所说的来看,它似乎只是将一些非常小的维度表与事实表连接起来。连接操作将相对有效。除非我误解了您的要求,否则这些列允许您的应用程序从多粒度事实表中选择各种数据汇总。

尽管 Teradata 是一个无共享系统,但我看不到视图有任何要求跨节点推送大型半连接或类似的东西。

除此之外,我只能建议你去看看。如果您没有地方可以进行实验,您可以从他们的网站下载 Teradata 的快速版本,看看是否可以构建此结构的原型,以了解查询计划的实际情况。