人员"姓名"字段的合理长度限制是多少?

时间:2020-03-05 18:43:56  来源:igfitidea点击:

我有一个简单的Web表单,它将允许未经身份验证的用户输入他们的信息,包括姓名。我给name字段提供了50个字符的限制,以使其与数据库表中的字段为varchar(50)一致,但是后来我开始怀疑。

使用诸如"文本"列类型之类的内容是否更合适,还是应该将名称的长度限制为合理的范围?

我正在使用SQL Server 2005,以防在响应中很重要。

编辑:关于类似问题,我没有看到这个更广泛的问题。

解决方案

回答

我们用50

回答

如果在一个字段中使用全名,那么我通常会将128 64/64用作我们永远不知道的单独字段中的第一个和最后一个。

回答

我通常使用varchar(255)(255是MySQL中varchar类型的最大长度)。

回答

平均名字约为6个字母。剩下43个姓氏。 :)似乎可以根据需要缩短它。

主要问题是我们认为将拥有几行?我认为varchar(50)不会杀死我们,直到我们获得数百万行。

回答

英国政府数据标准目录建议给定的姓名和姓氏每个35个字符,或者单个字段保留全名的70个字符。

回答

@伊恩·尼尔森(Ian Nelson):我想知道其他人是否在那里看到问题。

假设我们有多个字段。总共70个字符,名字35个,姓氏35个。但是,如果我们有一个字段,则可以忽略将名字和姓氏分开的空格,只需将字符更改为1个字符即可。当然,它只是"一个"字符,但这可能会导致输入全名的人与不输入全名的人有所区别。因此,我将该建议更改为"给定名称和姓氏各35个字符,或者单个字段保留全名71个字符"。

回答

请注意,许多文化都有"第二姓氏",通常被称为姓氏。例如,如果我们要与西班牙人打交道,他们会很喜欢将姓氏与"姓氏"分开。

最好的选择是为名称组件定义数据类型,为姓氏使用数据类型,并根据语言环境进行调整。

回答

我们真正要问的是一个相关但又截然不同的问题:我想多久截断一次名称以使其适合数据库?答案取决于名称不同长度的频率以及所选择的最大长度。这种担忧可以通过对数据库使用的资源的担忧得到平衡。考虑到varchar字段的不同最大长度之间的开销差异很小,我通常会犯错误,永远不会被迫截断名称并使该字段尽可能大。

回答

我知道我在这方面迟到了,但是无论如何我都会添加此评论,因为将来其他人很可能会提出类似的问题。

当心调整列的大小取决于语言环境。首先,它为我们进行了一场维护噩梦,抛开了人们迁移并随身携带自己的名字这一事实。

例如,具有这些额外姓氏的西班牙人可以搬到并居住在英语国家/地区,并可以合理地期望使用其全名。俄国人除了姓氏外还有其他名字,一些非洲名字可能比大多数欧洲名字长很多。

考虑到潜在的行数,使每列尽可能地宽。我的名字,其他给定的名字和姓氏每个都使用40个字符,但从未发现任何问题。