【问题标题】:Proper Storage of Millions of Phone Numbers in Postgres在 Postgres 中正确存储数百万个电话号码
【发布时间】:2015-05-20 20:41:03
【问题描述】:

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

使用 postgres,我们将在数据库中植入数百万电话号码,我担心存储这些信息的最佳方式。

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

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

在存储电话号码方面应该如何设计数据库架构?

【问题讨论】:

  • 一个人可以有多个电话号码,而多个人可以有同一个电话号码:您缺少一个人与电话之间的多对多关系表
  • 大家感谢您的评论。我更新了示例以更关注关系而不是表。我特别想知道如何存储可以轻松引用的电话号码......即字符串,数字,分成区号,前缀,后缀等。谢谢

标签: sql database postgresql types phone-number


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 2013-09-27
    • 1970-01-01
    • 2011-06-18
    • 1970-01-01
    • 2015-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多