您用于常见数据库字段的大小,例如firstName,lastName,Email,密码等?我在很多博客,论坛,电子商务等数据库中都看到了这些常见的字段.但是我不知道是否有一些参考或默认的公共字段的大小.所以,我想知道您用于选择公共字段大小的方法/参考/基础.
解决方法
部分地,它取决于您的DBMS.有些像
MySQL 5一样关心VARCHAR(n)列的长度而不是无限长度的TEXT列;其他像Postgresql一样,将TEXT和VARCHAR(n)视为内部相同,但在VARCHAR(n)列上检查长度除外.在Postgresql中写一些类似VARCHAR(65536)的东西很傻;如果你想要一个无限长的列,选择TEXT并完成它.
当然,有时试图存储太长的值会破坏您的布局,或者允许某人通过选择没有空格的长名称来滥用系统(例如).通常我对这样的用户名字段做的只是选择一个较长的长度,这样任何想要更长用户名的人都会试图造成麻烦; 64个字符是一个很好的圆值,似乎运作良好.对于真实姓名和地址(不经常向用户显示,如用户名),你会想要更长的时间.你想要一个足够大的值,它可以接受任何有效的输入,但不要太大,以至于有人可能会在字段中填充一个长达数GB的字符串,只是为了攻击你的系统. 1024个字符是非常合理的:1k是一个足够小的文本,可以轻松使用,一个圆数,并且比任何理智的地址行或名称都大.
根据相关的RFC,电子邮件地址可以不超过320个字符.所以这是你的电子邮件字段长度.事实证明,SMTP将字段长度限制为256个字符;由于电子邮件地址必须放在括号内,因此最长的有效电子邮件地址实际上是254个字符. (This page详细介绍.)所以这是你的电子邮件字段长度.
密码永远不应该以明文形式存储,因此密码字段应该是字节数组或BLOB类型,其长度足以存储您正在使用的散列函数的输出(或者正在使用的加密组的最大元素,用于更高级的方案,如SRP-6A).