在Postgres中正确存储数百万个电话号码

Sha*_*ser 4 sql database postgresql types phone-number

我正在开发一个专注于有关电话号码的元信息的项目.

使用postgres,我们将使用数百万个电话号码为数据库播种,我担心存储此信息的最佳方式.

现在我一直在考虑一个phones表格,每行代表一个字符串的电话号码.然后简单地加入......如下所示:

+-----------------------+             +-----------------------+
|     phone_numbers     |             |     phones            |
+-----------------------+             +-----------------------+
| id: integer           +-------+     | id: integer           |
| digits: string        |       |     |                       |
|                       |       +-----+ phone_number: integer |
|                       |             |                       |
|                       |             |                       |
|                       |             |                       |
+-----------------------+             +-----------------------+
Run Code Online (Sandbox Code Playgroud)

如何根据电话号码的存储设计数据库架构?

Dav*_*dge 7

您可以真正遵循国际电话号码的唯一模式是将它们分为三个部分:

  1. 国际直拨前缀(可能带有相关表格来查找国家代码:http://en.wikipedia.org/wiki/List_of_country_calling_codes)
  2. 电话号码本身.
  3. 分机号码

将它们存储为字符串以保留任何所需的格式空间或前导零,并验证它们是否遵循已批准的模式.

选择是否存储国家电话号码"0"前缀 - 最好在可能的情况下坚持E.123号码的演示:http://en.wikipedia.org/wiki/E.123