joh*_* Gu 4 sql-server-2008 datatypes sql-server-2008-r2 table
我想使用 Sql Server 2008 R2 为我们的系统构建一个数据库。但我需要知道存储这些信息的最佳数据类型是什么:-
电子邮件地址
带分机的电话号码,如+44 12345 ext 123
名
富文本编辑器。我们有一个名为“职位角色”或“主要职责”的字段,其中存储了每个员工角色的完整描述。
任何人都可以对此提出建议吗?谢谢
Aar*_*and 11
电子邮件地址:我使用NVARCHAR(320)
- 本地部分 64 个字符@
+ 域名 255个字符。您也可以考虑将 domain 规范化 away,因为hotmail.com
在一个更小INT
甚至SMALLINT
可能有能力的情况下存储500,000 次是非常浪费的(我不知道您计划支持多少个域)。我曾经反对,NVARCHAR
但该标准已扩展为支持 Unicode 字符,因此即使世界上大多数邮件服务器都会拒绝它们,但安全总比抱歉好。接下来将是强制验证 - 您可以在 Wikipedia 上阅读所有您想了解的有关有效格式的信息,然后是一些。
电话号码:可能varchar
在 25-30 范围内(这里您不需要 Unicode 支持)。除非您确定只支持来自某些地理区域的电话号码,否则您的选择要简单得多。我们很难衡量什么是“最佳” - 您是想要完美存储您现在支持的格式,还是更灵活的存储,以防您以后支持更多,或者人们在输入表单数据时马虎,而您仍然想要捕获无论他们输入什么。
名字:完全主观。可能nvarchar(50)
但我同意@kevinsky - 询问业务人员他们认为最长的名字是什么(或者,如果您在另一个系统中有源数据,请验证),然后将其加倍。因为我保证,一旦有人对长度进行了一些人为的限制,就会有人来打破规则。
角色:同样,这是非常主观的。这应该是一段文字,还是自传?您需要决定是否允许使用有限数量的字符(例如nvarchar(1000)
)或比标准格式大得多的字符(例如nvarchar(max)
,每行最多支持 2GB 的数据)。您还应该考虑总行大小 - 它可能很容易选择,nvarchar(4000)
但如果人们真的使用它,您将很快超过行大小并迫使其中一些数据的存储效率低下。如果角色与头衔相关而不是与特定的人相关,则无论如何都应该将其存储在其他地方。
确保您的表单字段设置为这些最大长度,确保任何输入都经过验证和消毒,并确保您使用参数化输入来避免 SQL 注入攻击。