SQL静态数据/查找列表IDENTIFIER

van*_*van 1 sql sql-server static relational

关于静态数据表设计.在表中显示静态数据:

  • 货币(代码,名称).行示例:美元,美元
  • 国家(代码,名称).行示例:DE,德国
  • XXXObjectType(代码,名称,...其他属性)
  • ...

将另一个(INTEGER)列作为主键是否有意义,以便所有外键引用都可以使用它?

可能的解决方案:

  1. 使用额外的INTEGER作为PK和FK
  2. 使用代码(通常是CHAR(N),其中N很小)作为PK和FK
  3. 仅在小于一定尺寸时才使用代码......尺寸是多少?
  4. 其他 _______

你的建议是什么?为什么?

我通常使用INT IDENTITY列,但通常使用短代码足以在UI上向用户显示,在这种情况下查询将少一个JOIN.

Dav*_*kle 7

这里绝对不需要INT IDENTITY.使用2位或3位数字助记符代替.如果您的实体没有小的唯一属性,则应考虑使用合成密钥.但货币代码和国家代码不是时候做的.

我曾经在一个系统上工作,其中有人实际上有一个年表,每年都有一个YearID.而且,真正形成,2001年是3年,至2000年呈逐年4.在对系统所做的一切,从而更难理解和查询,这是白白.