Practical International Data Management - Telephone numbers
Telephone numbers may consist of many elements: country dialling code, international telephone trunk code (not in all countries), national destination code (area code, not in all countries), subscriber number. Each can change independently of the other elements. In some countries all numbers have the same length, in others the lengths differ.
As each element of a telephone number can change independently of the other elements, such as area codes changing for a batch of numbers, and as these changes occur regularly in national telephone number systems, it is useful to store the national destination code and the subscriber number is separate fields so that they can be processed separately.
If a country code is known it is not necessary to store the country dialling code, as this can be derived from the country code.
Telephone numbers (if entered with each element in separate fields) need no punctuation. They are easier to manipulate without punctuation. If punctuation is required it can be added on output.
Unless you know which countries use an international trunk code, and which do not, it is best practice to always store that information, where it exists, along with the rest of the number.
As with all data, telephone numbers differ in structure and length in different countries. "Validating" numbers according to the norms of one country (e.g. limiting input to 10 characters) is bad practice when your audience is global.
Fields should be long enough to store numbers from anywhere in the world. The longest numbers known to exist on this date (30th March 2013) is 17, but as more use is made of telecommunications and more number ranges are required, numbers are likely to get longer.