目前喵喵CRM已经大概有四个模块了,用户、权限、客户、项目(咳咳,虽然模块都还很粗糙,但是你就说能不能用吧),为了后续的进一步拓展以及优化,今天简单梳理下后端数据库之间的关联。
简单看下目前数据库内已有的表:
- 权限管理相关的:auth_group、auth_group_permissions、auth_permission、auth_user、auth_user_groups、auth_user_user_permissions、django_content_type。
- 用户相关的:auth_user。
- 客户相关的:customer_customer。
- 项目相关的:project_activity、project_project、project_projectstage。
- 其他。

权限表是基于Django自带的,所以会比较全面细致。
- auth_group(组):id-主键、name-unique。
- auth_user(用户):id-主键、password、last_login、is_superuser、username-unique、first_name、last_name、email、is_staff、is_active、date_joined。
- auth_permission(权限):id-主键、name、content_type_id-外键、codename,content_type_id和codename组合无重复。
- auth_group_permissions(组-权限关联表):id-主键、group_id-外键、permission_id-外键,group_id和permission_id组合无重复。
- auth_user_groups(用户-组关联表):id-主键、user_id-外键、group_id-外键,user_id和group_id组合无重复。
- auth_user_user_permissions(用户-权限关联表):id-主键、user_id-外键、permission_id-外键,user_id和permission_id组合无重复。
- django_content_type(app和数据模型):id-主键、app_label、model,app_label和model组合无重复。
用户表:
- auth_user(用户):id-主键、password、last_login、is_superuser、username-unique、first_name、last_name、email、is_staff、is_active、date_joined。
客户表:
- customer:id-主键、name、email、phone、address、created_at、updated_at、owner_id-外键。
项目表:
- project_activity:id-主键、activity_type(Django里设置了可选项)、description、activity_date、created_at、updated_at、created_by_id-外键、project_id-外键。
- project_project:id-主键、name、source、description、expected_revenue、expected_close_date、actual_close_date、actual_revenue、created_at、updated_at、customer_id-外键、owner_id-外键、current_stage_id-外键。
- project_projectstage:id-主键、name-unique、order-unique、description。order大于零。
简单梳理下:

唔,似乎还能再优化,不过貌似就复杂了,比如客户和活动记录关系、客户分区域一类的细化……不管了,就这样吧,懒。
不过一些地方似乎可以增加索引,提升效率。查询用户处于某个阶段的项目、某个客户特定阶段的项目、某个项目截止日期等等。不过似乎还要再前端增加筛选……再说吧。