gpt4 book ai didi

php - 数据库 : best practice countries, 国家代码,国家电话代码

转载 作者:可可西里 更新时间:2023-11-01 08:24:10 26 4
gpt4 key购买 nike

如果您将国家/地区代码存储在数据库中但找不到“这是正确的方法”,我正在寻找“最佳实践”。我想存储 2 个字符的国家代码以及国家电话代码(例如德国将是“DE”和“+49”)。

实际上我的计划如下:创建一张表countries和一张包含country_codes的表。像这样:

TABLE: countries
id INT(11)
code CHAR(2)

TABLE: country_codes
id INT(11)
country_id INT(11) FORGEIGN KEY (countries -> id)
phone_code VARHAR(6)

我想我需要将它们分开,因为有些国家有不止一个电话代码。这样一个国家可以有多个电话代码。

但我的问题是:这是做到这一点的“最佳实践”吗?如果我想在“所有”国家/地区推出我的应用程序,或者如果我想将应用程序翻译成多种语言(在这种情况下,我想使用 countries 表也适用于不同的语言。

如果您希望能够将您的应用翻译成任何语言而无需重新编码,并且您还需要应用中所有国家/地区的列表,您有什么方法可以做 taht 之类的事情?

如果重要的话:我打算为这个应用程序使用 laravel。

最佳答案

国家/地区代码标准化为 two letters by ISO 3166-1-alpha-2 , 所以以这种方式存储它们是可行的。在表中包含国家/地区名称通常很有用,这样用户就可以选择正确的国家/地区而无需了解所有代码。

电话号码远没有标准化。国际电联提供recommendation E.164用于表示实际电话号码(在电话行话中称为“目录号码”)。国家/地区代码定义为一到三位数字。北美(包括美国、加拿大和许多加勒比国家)都是 North American Numbering Plan 的一部分并分享国家代码1

目录号通常以 + 开头并以点标点。因此,例如,已发布的纽约市查号服务号码是(或者当他们仍然提供此类服务时)+1.212.555.1212。如果您从欧洲某个地方调用该号码,您会看到 + 并替换您本地的国际前缀。在NANP中,多个国籍具有相同的国家代码。

但是,英国很奇怪。从国外调用,是+44.exchange.number。但是从国内调用长途电话是 (0) exchange.number

我的观点:如果您尝试在软件中使用国家/地区代码组成目录号码,则很难做到正确。您最好让用户提供带有国际前缀的电话号码。

您绝对不应该将 E.164 国家代码与 ISO 3166 双字母国家代码联系起来,将它们作为不同的列放在表格的同一行中。您需要两个单独的表来证明 future 。标准化组织各不相同,做自己的事情,因此您的数据模型应该反射(reflect)出这一点。

阅读:Falsehoods Programmers Believe About Telephone Numbers .

关于php - 数据库 : best practice countries, 国家代码,国家电话代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50200954/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com