2009-05-20 139 views

回答

9

这被标记为数据建模..所以我会解决的方面。

电话号码,不管国家,应始终以字符串形式存储(eg. "9083429876")。

我看到有人试图将这些字符串作为格式存储......这通常会导致灾难。某处,有人会希望这些数字格式不同。那么你不仅需要为它们写一个格式化函数,而且还要写一个非格式化函数。 Yowsa。

我还看到有人试图将它们存储为INT64(或BIGINT)。那很好,但是为什么?从来没有人显示过无格式的电话号码。要格式化它,你必须把它变成一个字符串。有些人试图争辩说它是为了排序的目的,但是这也不能。分类电话号码永远不是有用的操作。根据地区代码过滤数字很有用 - 但以数字排序顺序返回所有数字?从来没有用。

我看到的第三个糟糕的例子是将数字的每个分量存储在不同字段中的人。再次,不好。当你开始拨打国际电话号码时,那些领域变得毫无意义。举一个例子:你认为塞内加尔使用区号吗?

因此,作为离别的想法,我给你留下了这样的印象:由于每个国家都有自己的一组数字(真正的符号) - 应该给予思考和关注,以便如何将它们格式化以供显示。

2

所有电话号码的格式是:

  • 国家代码(1-3位数字)
  • 一个电话号码的其余部分

的位数应为15或更少。

参见wikipedia

0

始终将国家/地区代码存储起来,以便在显示时明确无误且可以正确格式化。