将全局系统转换为数据库中基于组织的系统

时间:2013-12-11 08:29:04

标签: ruby-on-rails database postgresql activerecord

我的系统由UserTitleTitleTypeRegionRegionType个实体/模型组成。实体的关系如下:

  

标题 - > {user_id,title_type_id,region_id}

     

TitleType - > {region_type_id}

     

地区 - > {region_type_id}

现在,我必须将Organization实体添加到系统中,以便TitleTitleTypeRegionRegionType实体与组织相关联。组织管理员应创建标题,标题类型,区域和区域类型。因此,我的第一个目的是将关系改为:

  

标题 - > {user_id,title_type_id,region_id, organization_id }

     

TitleType - > {title_type_id, organization_id }

     

地区 - > {region_type_id, organization_id }

     

RegionType - > {的organization_ID}

这是我案例的最佳解决方案吗?有很多组织ID,他们更难以工作。我不知道这是哪个概念,也不知道是否有更好的解决方案。我在rails上使用ruby,在db上使用postgresql。我能为这个问题做更好的方法吗?

注意:区域,region_types,title_types和标题适用于组织。组织可以创建区域,region_types,title_types和标题。区域不是全球性的,属于组织。

1 个答案:

答案 0 :(得分:1)

我认为您不需要将组织ID添加到所有其他表中。如果我理解正确,组织只能拥有 TitleTypes。因此,唯一需要更改的表是TitleTypes。

所以:

用户拥有标题

标题有一个 TitleType (belongs_to)

每个 TitleType 属于组织

标题本身不需要组织ID,它们属于标题类型,属于组织。地区也是如此。如果区域类型属于组织,则区域不需要organization_ids,因为它们属于区域类型。