数据库中用户的全名应该是多少个字符长度?

7

可能是重复问题:
数据库字段标准长度列表

简单来说,在数据库中允许的用户“全名”应该具有典型长度是多少?

当我创建users表时,通常将其设置为varchar 31或32(根据性能)。你们使用什么,什么是标准/典型约定。


顺便说一句:我从未在电子邮件长度(因为我将其设置为254)和密码(哈希,32位长度)方面遇到问题。


将其设置为128。 磁盘和内存很便宜。 或者更好的是,使用不强制你施加大小限制的数据库。 - Bryan Oakley
1
我使用MySQL,因此需要设置限制。 - WhatIsOpenID
4个回答

7

你的平均varchar字段允许的最大长度是多少?(254?)

如果随意缩短它,你将无法获得任何好处。对数字和字符进行细粒度大小控制基本上是过去的遗物,当每个字节都很重要时,这一点可能很重要-如果你正在处理数千万行或数千个查询/秒。对于普通数据库(即其中99%),性能取决于适当的索引和查询,而不是使行变小几个字节。

只有在存在某些正式规范定义最大长度时,才限制字段的长度,例如EAN代码的13位数字或ISIN的12个字符。


3
这并不是为了节省数据库空间,而是为了让它更加整洁。正如shamittomar所说,“想象一下人们在Facebook上输入128个字符长的名称和评论时的情况。几乎整行都会被评论覆盖。” - WhatIsOpenID
2
这取决于你在哪里需要它。如果它是一个真实姓名,我建议不要在数据库中限制它,但在适当的地方截断名称以供显示(例如显示前30个字符并使用<abbr>标签)。如果它是一个用户名,只需选择一个数字,32应该就可以了。 - Martin

4

在我的设计中,全名始终是由名字、中间名、姓氏、前缀、后缀、学位、姓等计算出来的一个组合列。各个列的列表由应用程序的目标地区决定。"全名"的显示长度通常包含在应用程序设计中而不是数据库中。在SQL Server中,varchar(32)和varchar(256)之间没有空间节省。我选择使用varchar(256)。

我从不希望在会议上听到有人说"你的数据库设计无法容纳我们所有的数据"。

您总是给用户分配一个ID,以便可以使用ID进行连接和查找,而不是使用FullName,对吗?


2
我建议至少使用128个。

1
Facebook 上的长度是多少?有什么想法吗? - WhatIsOpenID
@WhatIsOpenID,我的猜测是他们不使用需要大小限制的数据库。 - jimyi
1
但这样不会占用太多空间吗?想象一下人们在 Facebook 上放置 128 个字符长的名字和评论,将会导致整行被评论所覆盖。 - shamittomar
那是一个独立的问题。 - SLaks

1

如果你想的话,可以将它放在255。 varchars是一种可变长度存储类型。这意味着有1个字节用于存储字符串的实际长度,varchars不会占用比所需更多的空间,因此从存储方面来看,它并不重要。这在mysql页面上有描述。

描述可以在这里找到 http://dev.mysql.com/doc/refman/5.0/en/char.html 它在页面中间有图表。

当VARCHAR值被存储时,它们不会填充。处理尾随空格取决于版本。从MySQL 5.0.3开始,尾随空格在存储和检索值时保留,符合标准SQL。在MySQL 5.0.3之前,当将值存储到VARCHAR列中时,尾随空格会从值中删除;这意味着检索到的值也没有空格。

结论: 从存储方面来看,您始终可以选择255,因为它不会占用额外的空间,而且您不会遇到字符串被截断的问题。

问候


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接