数据库设计 - 用户位置应该存储在哪里

Database Design - Where should user location be stored

我正在建立一个交友网站。我遇到的问题是我应该在哪里存储用户的位置(我需要存储两个变量 [country] [state/province])。

友情站点目前有问答table存储用户属性,如用户宗教、用户眼睛颜色等...

在 userAttributes table 中再添加两个问题是否合适? (见下面的选项 1)

  1. 你是哪个国家
  2. 你所在的州/省是什么

国家和州属于自己的 table 与 userAttributes table 分开。 (见下面的选项 2)

选项 1 - 用户属性 Table

Question                    | Answer 
What is your eye color      | blue
What is your eye color      | green
What country                | Canada
What state / province       | Alberta
What state / province       | Ontario
What country                | United States
What state / province       | New York
What state / province       | Louisiana
What state / province       | Georgia 
etc ...

选项 2 - 配置文件位置 Table

Id | country       | province-state
1  | Canada        | Alberta
2  | United States | New York
3  | United States | Louisiana

注意:该网站可能有 900 - 1000 个省/州,因此这将真正填满 userAttributes Table。

您有两个问题,以及大量相互关联的答案。您应该将 answers 存储在两个 table 中,我将其称为 countriesprovincesprovinces table 链接回 countries table 因此您可以轻松提取所需的数据。

这给你

国家

id   |  Name
------------------------------
1    |  USA
44   |  United Kingdom
64   |  New Zealand

省份

id  | Country ID | Name
1   | 1          | Oregon
2   | 1          | Arizona
3   | 1          | Kentucky
4   | 44         | London
5   | 44         | Kent
6   | 64         | Waikato
7   | 64         | Wairarapa

(剩下的可以填写)

一个简单的查询将填充您网页上的 countries 下拉菜单。 AJAX 调用和第二个简单查询可以即时填充 provinces 下拉列表(或者您可以在加载页面时发送列表并使用一点 Javascript 来填充从那里下拉)。