首页 > 解决方案 > 银行数据库中的“客户ID”可以有什么样的数据类型?INT 还是 VARCHAR?

问题描述

银行数据库中的“客户ID”可以有什么样的数据类型?INT 还是 VARCHAR?
考虑到另一个具有“所有者”属性的表是“客户 ID”的外键

标签: mysqlsqlsqlite

解决方案


数据库通常有两个用于现实生活实体的唯一标识符。

  • 自然钥匙
  • 代理键

在您的情况下,自然键可能是与客户可能在银行对帐单上看到的内容相对应的字符串(varchar) 。可能包括他们的部分姓名和/或出生日期。

然后,代理键通常是由数据库创建的唯一 Integer,仅用于唯一标识数据库内的客户。因为那个代理键更小(通常是 4 个字节而不是几十个字节),它在外键和索引中的使用使用更少的磁盘空间、内存、io 等,因此通常会使数据库更紧凑,运行更流畅/更快。

这种自然/代理键组合允许代理键完成唯一标识行(客户)的角色,并且永远不会改变。因为,如果它更改,从其他表(外键)引用它的所有行也需要更改。自然键可以随时间变化,因为它只存在于客户表中,而代理键在其他任何地方都可以使用。


推荐阅读