我正在创建一个类似于youtube的视频网站,但它的目标是独立游戏社区。
我正在进行表格设计,在位置栏中遇到了一些绊脚石。
主要站点如何设计存储位置的表?
Profile
表:
ID | username | country | state
0 | jack | US | New York
1 | ted | Canada | Alberta
或
ID | username | countryID
0 | jack | 1
1 | ted | 2
Regions
表:
ID | country | state
0 | United States | Texas
1 | United states | New york
2 | Canada | Alberta
还是我错过了其他设计?
发布于 2015-02-13 10:58:08
那么,关于:
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
发布于 2015-02-13 10:51:59
我不知道“大型”网站如何处理他们的数据,但无论如何,我认为这将是一个偏好和业务需求的问题,在第一种情况下,由于国家取决于国家,表没有得到适当的标准化,而在另一种情况下,模型几乎完全正常化(国家可以移到另一张表)。第一个选项在执行查找等操作时可能更快,但由于它破坏了规范化的关系模型,因此在插入/更新数据(以及额外的存储)时可能会出现问题。就我个人而言,我会选择使用第二种选择(如果需要的话,也可以将其去标准化用于分析处理-我认为这在很大程度上取决于您期望处理的数据量)。
规范化模型如下所示:
profile (**username**, state)
states (**state**, country)
countries (**country**)
上面的示例不使用代理键,只说明模型;模型的数据库实现通常使用代理键,如UserID、StateID和CountryID,但如果进行了适当的规范化,则不应该需要它们,因为实体应该是主键(因为它们是候选键)。
https://stackoverflow.com/questions/28506501
复制