当我创建视图时,我可以基于来自不同表的多个列。当我想要创建一个查找表时,我需要从一个表中获取信息,例如订单表的外键,以从另一个表中获取客户详细信息。我可以创建具有参数的视图,以确保它将获取我所需的所有数据。根据我所读到的,我也可以创建一个查找表。在这种情况下,有什么区别,应该选择哪种方式?希望这不是一个坏问题,我还不太了解数据库。
创建视图可以让您在查询时获得数据的“实时”表示。这样做的代价是服务器负载增加,因为它必须确定每个查询的值。这可能很昂贵,具体取决于表大小、数据库实现和视图定义的复杂性。另一方面,查找表通常是“手动”填充的,即不会针对它的每个查询导致从多个表中获取值的昂贵操作。相反,您的程序必须负责更新查找表,如果底层数据发生更改。通常,查找表适用于很少更改但经常读取的内容。而视图则更贵,但更具实时性。
我认为你对“查找表”的使用有些错误。在正常的说法中,查找表是一种代码或参考数据表。它可能包含一个代码和一个描述或者一个代码扩展。这些表的目的是为受限制的列提供允许值的列表,例如CUSTOMER_TYPE或PRIORITY_CODE等。这类表通常被称为“静态数据”,因为它们很少甚至根本不会改变。定义此数据的价值在于可以将其用于外键和填充下拉列表和值列表。你所描述的是稍微不同的情况:“我需要从一个表中获取信息,例如订单表的外键,以获取另一个表中的客户详细信息。”这两个表都是应用程序数据表。客户和订单记录是动态的。现在显然可以从客户表中检索额外的数据以与订单数据一起显示,并且在这个意义上客户是一个“查找表”。更重要的是,它是Order表的“父”表,因为它具有Order表上的外键引用的主键。可以构建一个视图来捕获Order和Customer之间的连接逻辑。当构建在几个地方使用相同的连接表的应用程序时,这样的视图可能非常有用。
这是一个查找表的示例。我们有一个跟踪陪审员的系统,其中之一的表是JurorStatus。此表包含陪审员有效的所有状态码:代码:值 WS:将服务 PP:推迟 EM:军事请假 IF:不合格罪犯这是一个有效代码的查找表。视图就像查询。