需要帮助来构建我的SQL DB - 分组设置

时间:2015-10-02 17:02:01

标签: sql database database-design

我正在尝试构建一个'facebook groups'样式应用程序,其中包含组,每个组都有自己的一组设置。

所以我创建了3个表:

groups - (id, name..)
settings - (id, key)
groups_settings - (group_id, setting_id, value) group_id + setting_id are a primary key

并且在单值设置(如min_age,max_age等等)上工作正常。

但是现在我遇到一个问题,当我有一个可以有多个值的设置键时,例如:“allowed_countries”,这是一个用户可以加入的允许国家列表。

我不能有多个具有相同group_id和setting_id的行,因为它们在主键约束下。

那你怎么解决这个问题呢?我应该重组我的数据库吗?

1 个答案:

答案 0 :(得分:-1)

所以你有一个多对多的关系(用户到国家。)建模的一种方法是有一个像这样的查找表:

users表有主键user_id(和其他列) countries表有主键country_id(和其他列) user_country_mapping表正好有两列:

  • user_id是用户表中的外键
  • country_id是国家/地区表中的外键

这样,您可以保持数据模型的清洁。