0

在特定场景中,我有一个带有 MachineNumber (Varchar) 及其 MachineID (Int) 的查找表。在我的事务表中,我使用查找表的 MachineID 来引用机器编号。

要求:我可以在事务表中将 MachineID 字段类型设置为 Varchar,而在查找表中将其类型保留为 Int 吗?原因,对于某些机器,MachinNumber 未存储在 Lookup 表中,我需要将用户提供的实际 MachineNumber 存储在 Transaction 表本身中,并且由于机器编号是字母数字,我想从 Int 更改此引用字段的类型到瓦尔查尔。

简而言之,在事务表中,MachineID 字段应包含 MachineID(从查找表中引用)和实际机器编号(由用户提供并直接存储在此处)

问题:为这些引用的字段设置不同的类型是一种好的做法,还是一种常见的做法,这对在这两个表之间使用 Join 的查询有什么影响?

谢谢, 阿林德

4

1 回答 1

0

作为一般规则,首选使用自然数据作为键,当然,如果您保证它在所有情况下都存在且唯一。

在您的情况下,如果您可以使用实际的机器 id(varchar),那么就这样做,并使其成为您查找等的关键。

我要补充一点,我曾经在一家拥有 EFTPOS 终端与我们的服务器进行交易的公司工作。我们决定使用方便的唯一 EFTPOS 终端 ID,但是当它们出现故障并被银行的维修人员换掉时,我们遇到了问题。新终端具有不同的 ID,但使用的是“相同”终端。当终端被修复并放回另一个客户位置的现场时,我们的问题变得更加复杂 - 使用相同的原始终端 ID!这最初给我们带来了无穷无尽的麻烦。我们最终使用了一个人工 id,并将当前的物理终端 id 作为一个属性。

于 2011-09-22T11:28:16.943 回答