db视图和查找表之间的区别

时间:2010-03-10 14:11:15

标签: sql database lookup-tables

当我创建一个视图时,我可以将它基于不同表中的多个列。 当我想创建一个查找表时,我需要来自一个表的信息,例如订单表的外键,以从另一个表中获取客户详细信息。我可以创建一个具有参数的视图,以确保它将获得我需要的所有数据。我也可以 - 从我一直在阅读的内容 - 制作一个查找表。在这种情况下有什么区别,我何时应该选择查找表?我希望这不是一个糟糕的问题,我还没有深入到db中;)。

5 个答案:

答案 0 :(得分:2)

创建视图会为您提供查询时数据的“实时”表示。这是以服务器上的更高负载为代价的,因为它必须确定每个查询的值。 这可能很昂贵,具体取决于表大小,数据库实现和视图定义的复杂性。

另一方面,查找表通常是“手动”填充,即。即并非每个针对它的查询都会导致昂贵的操作从多个表中获取值。相反,如果基础数据发生变化,您的程序必须负责更新查找表。

通常,查找表适用于很少变化但经常阅读的内容。另一方面,观点 - 虽然执行成本更高 - 更新。

答案 1 :(得分:2)

我认为你对“查询表”的使用有点不对劲。用通常的说法,查找表是代码或参考数据表。它可能包含CODE和DESCRIPTION或代码扩展。这些表的目的是为受限制的列提供lsit允许值,例如CUSTOMER_TYPE或PRIORITY_CODE。这类表通常被称为“常设数据”,因为它很少发生变化。在Lookup表中定义此数据的值是它们可以在外键中使用,并填充Dropdown和Values of Values。

您所描述的情况略有不同:

  

我需要一张桌子上的信息   例如订单的外键   表,从中获取客户详细信息   另一张桌子

这两个表都是应用程序数据表。客户和订单记录是动态的。现在,从Customer表中检索附加数据以显示Order数据旁边显然是有效的,从这个意义上说,Customer是一个“查找表”。更有针对性的是Order的 parent 表,因为它具有Order上外键引用的主键。

一定要构建一个视图来捕获Order和Customer之间的连接逻辑。在构建在多个位置使用相同连接表的应用程序时,此类视图非常有用。

答案 2 :(得分:0)

阅读本教程,您可能会在需要查找表时找到有用的信息:

SQL: Creating a Lookup Table

答案 3 :(得分:0)

这是一个查找表的示例。我们有一个跟踪陪审团的系统,其中一个表是JurorStatus。此表包含陪审团的所有有效StatusCodes:

代码:价值
WS:Will Serve
PP:推迟了 EM:借口军人 如果:不合格的Felon

这是有效代码的查找表。

视图就像一个查询。

答案 4 :(得分:0)

只需学习编写SQL查询即可获得所需内容。无需创建视图!在许多情况下使用视图并不好用,特别是如果你开始将它们放在其他视图上,那么它们会破坏性能。不要将视图用​​作查询编写的简写。