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

标签 sql database postgresql types phone-number

我正在从事一个专注于电话号码元信息的项目。

使用 postgres,我们将使用数百万个电话号码作为数据库的种子,我很关心存储此信息的最佳方式。

现在我一直在考虑一个 phones 表,其中每一行都将电话号码表示为一个字符串。然后简单地加入......就像下面这样:

+-----------------------+             +-----------------------+
|     phone_numbers     |             |     phones            |
+-----------------------+             +-----------------------+
| id: integer           +-------+     | id: integer           |
| digits: string        |       |     |                       |
|                       |       +-----+ phone_number: integer |
|                       |             |                       |
|                       |             |                       |
|                       |             |                       |
+-----------------------+             +-----------------------+

关于电话号码的存储,应该如何设计数据库架构?

最佳答案

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

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

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

选择是否存储国内电话号码“0”前缀——最好尽可能坚持 E.123 号码表示:http://en.wikipedia.org/wiki/E.123

关于sql - 在 Postgres 中正确存储数百万个电话号码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29115697/

相关文章:

linux - 安装 (PostgreSQL) 9.6.2 Sabayon linux?

json - 查询从 Postgres 中的 Json 中提取

mysql - 使用联结表的查询交集

ios - 从 sqlite 表获取数据时出现问题

MySQL存储过程插入验证

sql - 如何在sql中链接where和where not in?

php - 如何添加日期时间和时间

sql - 按月考勤获取星级员工记录

sql - 函数 OBJECT_ID 的第二个参数

mysql - Node.js 图片库的数据库解决方案