sql-server - 字符串数据字段大小的最佳实践是什么?

标签 sql-server database database-design data-structures

对于常用的字符串数据存储类型,是否有推荐的字段大小?例如 FirstName、LastName、AddressLine1、AddressLine2、City、State、PostalCode、EmailAddress 等。我相信任何创建了表来存储这些常用数据字段的人都必须决定要使用的最大大小.

您的值(value)观基于什么?

您是否有某种用于做出决定的公式(例如所有字段大小都是 8 的倍数)?

贵公司是否制定了所有包含这些字段的表格都是统一的指南?

这只是个人的事情吗?

我知道如果我有一个固定的标准,我就不必停下来思考它并最终得到不同大小的字段。在 UI 上工作时,这种统一性也会很好,因为在输入字段和任何数据验证代码上设置最大长度会更容易。

最佳答案

请记住,美国邮政局只允许 40 个字符的行。因此,173438 Martin Luther King Memorial Parkway SE, Suite 1124 将由 CASS 应用程序转换为如下内容:

173438 Martin Luther King Pkwy SE
Suite 1124

对于地址,我将从 USPS 准则开始,然后如果您计划支持国际客户,请查看这些国家/地区的邮政标准。如果永远不会查询、过滤、排序或在实际字母上使用地址,那么您不妨将单个列键入为 nvarchar(max)(顺便说一句,这种情况永远不会结束,因此我总是结束up 需要为城市、州、邮政编码等单独的列)。

最近,我已经改掉了使用单独的列来表示街道地址行的习惯。相反,我使用单个 nvarchar(max) 并在换行符处拆分(\r\n 或只是\n)。这样,当一个用户想要一个不包括城市、州和邮政编码的五行地址时,我不必添加新列。

我通常使用 nvarchar(25) 作为名称。我还没有遇到过姓名的一部分超过 25 个字符的人。我并不是说这不可能,我只是从未在现场环境中见过它。

关于sql-server - 字符串数据字段大小的最佳实践是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2336294/

相关文章:

sql - 从一个表中选择列,按另一表中的列排序

sql - 如何根据会计年度动态获取数据

sql - 使用条件设置行安全性

mysql - 合并具有不同列的两个表并在输出中显示 null

mongodb - 在 MongoDB 中存储国家/地区城市

sql-server - sp_tables 调用花费更多时间导致阻塞

database - 游标与重复代码/逻辑

mysql - 获取主键在范围内的行

mysql - 有没有办法在 SQL 中使用 json 对象

mysql - 2 auto_increment 字段,其中 1 重置