什么是查找表?

Abe*_*ler 37 database database-design terminology

我刚刚给我们的头数据库人员创建了一个DB数据库图表,并在其上放了一堆注释,建议我重命名某些表,因此很清楚它们是查找表(在表的开头添加"lu")名称).

我的问题是这些不符合我认为查找表的定义.我一直认为查找表基本上是一组没有定义任何关系的选项.例:

luCarMake
-----------
id    Make
--    ---------
1     Audi
2     Chevy
3     Ford
Run Code Online (Sandbox Code Playgroud)

我工作的数据库人员建议我重命名几个表,这些表只是将一个表作为查找表的一个表.示例(下面的Location_QuadMap):

Location
----------
LocationId
name
description

Location_QuadMap <-- suggesting i rename this to luLocationQuad
----------------
QuadMapId
LocationId

luQuadMap
---------
QuadMapId
QuadMapName
Run Code Online (Sandbox Code Playgroud)

假设她误读了图表还是有其他我不知道的定义,这是安全的吗?

Mar*_*ers 38

你在那里所谓的联结表.它也被称为:

  • 交叉引用表
  • 桥牌桌
  • 加入表
  • 地图表
  • 交叉表
  • 链接表
  • 链接表

但我从未见过用于此目的的"查找表"一词.

  • 我的上一任经理经常将他们称为查找表.这是我在看到布局之前知道桌子是什么的唯一原因. (6认同)

OMG*_*ies 23

选择你的战斗,但是我要求这个人澄清命名惯例,看他们建议对一对多和多对多的关系使用相同的约定.看起来任何外键关系意味着涉及"查找"表.

如果那是其他数据库的命名约定,那么我就不会推动我的运气.

  • 非常同意你的“选择你的战斗”的评论。 (3认同)
  • 虽然这其中有一些智慧,但文字意味着事物,滥用“查找表”来描述连接表会令人困惑。毫无疑问,如果我坚持称所有的猫为“老鼠”,我在现实世界中的交流就会有困难。我会努力在默许之前进行巧妙的教育。尽管如此,“在罗马……入乡随俗”。 (3认同)
  • 说得好。还有更重要的事情需要你去关注。 (2认同)

Pat*_*and 13

查找表通常是一个表,作为某个东西的"主列表",您可以使用它在exachange中查找业务键值(如"Make"),以获取其他一些用于其标识符的标识符(如id列) table的外键列.

基本上,你会有一些东西要"查找"并将其换成其他东西.

另一方面,location_quadmap是一个桥表,正如其他人已经说过的那样,当你在两个实体之间存在多对多关系时,会使用它.如果你称之为查找表,那么我会说任何表都可以称为查找表.这些表只包含其他表的标识符,因此您必须首先在一个表上查找id,查找桥表中匹配的id,然后在中查找匹配的行.第3桌?似乎对这个术语有点过分了.


Bla*_*ise 6

查找表的一种用途是存储其他enum值。

说,我们有一个Status枚举。

我们没有在数据库中的每条记录中保存“未开始”、“进行中”、“已完成”、“发回”……,而是只保存整数 1、2、……。

在编程方面,像实体框架这样的 ORM 可以轻松地将底层整数转换为 Enum 类型。

这种方式的缺点是无法从数据库端读取整数值。在解决这个问题时,我们添加了一个查找表,

Id   Status
1    Not Started
2    In Progress
...
Run Code Online (Sandbox Code Playgroud)

这样我们的 DBA 就可以有一个字典来“查找”,通过加入这个查找表来显示状态文本。

  • OP 标题是一回事(“什么是查找表?”),而他们的实际问题是另一回事(“这个看起来像直通/连接/映射表的东西也被某些人称为查找表吗?”)。v 有助于回答标题中所述的问题。 (3认同)

Jus*_*ner 5

有些人将术语“查找表”用作位于多对多关系中间的表。


Cer*_*rvo 5

马克·拜尔斯对该表有正确的定义。基本上是一个相交表。请参阅任何数据库教科书。

但实际上,我曾与许多 DBA/架构师合作过,大多数人都发明了自己的做事风格,并且不愿意听到其他任何内容。像缩进规则、SQL 语句的大小写、表的命名约定(甚至是非常糟糕的)、归档策略等……如果它们控制着数据库,你基本上别无选择。您可以提到它是一个相交表,指向适当的文献,但最终如果她想将其称为 MyStupidlyLongAndPointlessPrefixForTablesBecauseICan_Lookup_Location_Quadmap 并坚持那么您无能为力。

所以试着向她指出这一点,但如果她不同意,就不要太当真......

我只是想到了别的事。查找表(我们的定义)通常也称为代码表。所以她可能会调用相交表查找表和查找表代码表。在这种情况下,你可能必须学习说她的语言......