银行数据库中的"customer id"可以具有哪种数据类型?INT还是VARCHAR?



什么样的数据类型的"客户id";银行数据库中可能有?INT还是VARCHAR
考虑到存在另一个表;所有者;属性,该属性是"的外键;客户id";

这个问题没有正确的答案。

许多组织使用字母数字序列作为客户id,因此需要使用varchar。

在其他情况下,他们不在乎软件开发人员使用什么来形成主键,所以你不妨使用一个整数来利用MySQL内置的auto_increment功能(这适用于整数,但不适用于任意字符串(。

因此,你应该了解你的银行组织要求你使用什么作为客户id,如果有的话。

或者使用一个自动递增的整数,并计划为银行自己的客户id添加一列,该列可能是某种字符串。

客户id的数据类型每隔几年就会发生变化,这也很常见,因为有人认为它除了是唯一的之外,还必须对一些信息进行编码。

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

  • 自然键
  • 代理项密钥

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

然后,代理密钥通常是由数据库创建的唯一整数,仅用于唯一标识数据库内的客户。由于代理密钥较小(通常为4个字节,而可能为数十个字节(,因此它在foriegn密钥和索引中的使用占用的磁盘空间、内存、io等较少,因此通常会使数据库更紧凑,运行更平稳/更快。

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

相关内容

  • 没有找到相关文章

最新更新