数据库存储 : pure or encoded?

标签 database storing-data storing-information

一个简单的问题。我应该如何在数据库中存储电话号码和电子邮件地址?只是像 email@email.com 这样的纯文本(或数字),还是用 key 对其进行编码更好(有点像密码在数据库中的保存方式)。在那种情况下,除非您知道 key ,否则它将变得不可读(并且更长)。

唯一的原因是如果有人破解了数据库,假设数据库中有许多重要的电子邮件和电话号码。

例如,linkedIn 和 facebook 如何保存所有这些数据?

最佳答案

电话号码是半唯一的 ID。它们不是数字量或计数。它们可以是数字,在某些情况下可以是字母数字,例如。 1-(800)-花。

将电话号码存储为文本,因为您不想对它们进行加减乘除。如果需要按国家或地区代码搜索,您可以将数字归一化为县代码、地区代码和号码。另一种方法是提供一个函数来访问电话号码文本字符串并导出县代码和区号。

另一个重要方面是存储数字“(123) 456-7890”的格式代码(圆括号、空格符号或破折号),还是剥离这些代码并仅存储数字。如果您想具有半唯一性或能够搜索相等性,则只需存储数字。有些数字是 像“*82”这样的特殊代码是否也想允许这些作为数字?

如果您希望从电话号码中获取任何情报,那么您应该将号码的结构基于基于北美编号计划 https://en.wikipedia.org/wiki/North_American_Numbering_Plan 的文本字段。

关于数据库存储 : pure or encoded?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16690189/

相关文章:

java - ORA-28040 : No Authentication protocol

c# - 使用交易范围和查询

php - 将 html 页面存储到 php 变量中

php - 处理具有 1000~ 个变量的数据,最好使用 SQL

html - 如何在数据库中处理用户内容的 Markdown 存储?

C# 加密文本输出

database - 在数据库中存储和索引二进制字符串

php - 在数据库中有一个大表安全吗?

Android:如何在连续的服务调用中存储一个对象?

arrays - 存储 Bash 关联数组