对于您的问题的具体答案(至少对于Oracle和其他数据库而言)是字段的长度无关紧要,仅取决于数据的长度。但是,这不应用作决定是否将字段设置为最大允许长度的决定因素。在最大化字段大小之前,还应考虑以下其他问题。
格式化
任何基于字段大小格式化数据的客户端工具都将需要特殊的格式化注意事项。例如,默认情况下,Oracle的SQL * Plus将显示Varchar2列的最大大小,即使数据只有一个字符长。比较…
create table f1 (a varchar2(4000), b varchar2(4000));
create table f2 (a varchar2(5), b varchar2(5));
insert into f1 values ('a','b');
insert into f2 values ('a','b');
select * from f1;
select * from f2;
错误数据
字段的长度提供了一种额外的机制来捕获/防止错误数据。接口不应尝试在100个字符的字段中插入3000个字符,但是如果将该字段定义为4000个字符,则可能会这样。该错误不会在数据输入阶段捕获,但是当另一个应用程序尝试处理数据并阻塞时,系统可能会进一步陷入困境。例如,如果您以后决定对Oracle中的字段建立索引,则将超出最大密钥长度(取决于块大小和串联)。看到…
create index i1 on f1(a);
内存
如果客户端应用程序使用最大大小分配内存,则该应用程序将分配比所需数量更多的内存。为了避免这种情况,必须进行特殊考虑。
文档
字段的大小提供了有关数据的文档的另一个数据点。我们可以调用所有表t1,t2,t3等,以及所有字段f1,f2,f3等,但是通过指定有意义的名称,我们可以更好地理解数据。例如,如果一家在美国有客户的公司的地址表中有一个名为“州”的字段,该字段是两个字符,则我们希望其中包含两个字符的州缩写。另一方面,如果该字段为一百个字符,我们可能期望完整的州名进入该字段。
综上所述,为变革做好准备似乎是审慎的做法。仅仅因为您今天所有的产品名称都可以包含20个字符,并不意味着它们总是会适合。不要过分提高并使其达到1000,但要为合理的扩展留出空间。