如何在 sql 服务器中存储国家和州
How to store country and state in sql server
我正在创建一个类似于 youtube 的视频网站,但它的目标是独立游戏社区。
我正在研究 table 设计,但 运行 在位置列中遇到了一些障碍。
各大网站如何设计table存储位置?
Profile
table:
ID | username | country | state
0 | jack | US | New York
1 | ted | Canada | Alberta
或
ID | username | countryID
0 | jack | 1
1 | ted | 2
Regions
table:
ID | country | state
0 | United States | Texas
1 | United states | New york
2 | Canada | Alberta
还是我漏掉了其他设计?
我不知道 "big" 网站如何处理他们的数据,但无论如何我认为这将是一个偏好和业务需求的问题,在第一种情况下 table 没有正确规范化因为状态取决于国家,而在另一种情况下,模型 [几乎] 已正确标准化(国家可以移至另一个 table)。第一个选项在进行查找等操作时可能会更快,但由于它破坏了规范化的关系模型,因此在 inserting/updating 数据(以及额外存储)时可能会导致问题。就我个人而言,我会选择使用第二个选项(如果需要,可能会对其进行去规范化以进行分析处理——我认为这在很大程度上取决于您希望处理的数据量)
标准化模型看起来像:
profile (**username**, state)
states (**state**, country)
countries (**country**)
上面的例子没有使用代理键,只是说明了模型;该模型的数据库实现通常会使用代理键,例如 UserID、StateID 和 CountryID,但如果正确规范化,则不需要它们,因为实体应该是主键(因为它们是候选键)。
那么 :
profile Table
ID | username | stateID
0 | jack | 1
1 | ted | 2
states table
ID | countryID | state
0 | 0 | Texas
1 | 0 | New york
2 | 1 | Alberta
countries table
ID | country
0 | United States
1 | Canada
我正在创建一个类似于 youtube 的视频网站,但它的目标是独立游戏社区。
我正在研究 table 设计,但 运行 在位置列中遇到了一些障碍。
各大网站如何设计table存储位置?
Profile
table:
ID | username | country | state
0 | jack | US | New York
1 | ted | Canada | Alberta
或
ID | username | countryID
0 | jack | 1
1 | ted | 2
Regions
table:
ID | country | state
0 | United States | Texas
1 | United states | New york
2 | Canada | Alberta
还是我漏掉了其他设计?
我不知道 "big" 网站如何处理他们的数据,但无论如何我认为这将是一个偏好和业务需求的问题,在第一种情况下 table 没有正确规范化因为状态取决于国家,而在另一种情况下,模型 [几乎] 已正确标准化(国家可以移至另一个 table)。第一个选项在进行查找等操作时可能会更快,但由于它破坏了规范化的关系模型,因此在 inserting/updating 数据(以及额外存储)时可能会导致问题。就我个人而言,我会选择使用第二个选项(如果需要,可能会对其进行去规范化以进行分析处理——我认为这在很大程度上取决于您希望处理的数据量)
标准化模型看起来像:
profile (**username**, state)
states (**state**, country)
countries (**country**)
上面的例子没有使用代理键,只是说明了模型;该模型的数据库实现通常会使用代理键,例如 UserID、StateID 和 CountryID,但如果正确规范化,则不需要它们,因为实体应该是主键(因为它们是候选键)。
那么 :
profile Table
ID | username | stateID
0 | jack | 1
1 | ted | 2
states table
ID | countryID | state
0 | 0 | Texas
1 | 0 | New york
2 | 1 | Alberta
countries table
ID | country
0 | United States
1 | Canada