zoukankan      html  css  js  c++  java
  • 内部系统中的关系模型

    最近在做的内部系统,因为关系模型问题已经纠结了很久了。公司的性质比较特殊,需求也比较的交叉繁杂,建立起一套完善的体系来,绝对是一件比较让人纠结的事情。

    需求源自于目前我们业务的一部分,举个例子说项目与人的关系吧。

    一、基础模式

    通常来说,一个项目的信息,是由AE部门创建的,比如报价、服务内容等信息,均是由AE部门同时来完成的,每位AE只能看到自己创建或者管理的项目,每个客户组有一位Leader管理,可以查看本组的项目。

    那么,其模型应该是这样的:

    二、跨人员模式

    要求来了,部分比较大的项目,一个AE无法对其完善服务,此时需要指定2-3名AE人员,那么上面的人员就有问题了,从权限上来看,A看得见B就看不见,B看得见A就看不见,那么我们就要按如下方式扩展模型

    此模型,断开了S(Staff)和P(Project)的直接关联,创建了一个单独的表Relation来单独管理S和P之间的关系,RelationType用来表示关联类型,比如C(Create)、B(Belong)、A(Assistant),这样一来,每个成员都可以通过自己所拥有的权限来对项目进行管理。

    三、跨部门模式

    上一个模型,基本了更多一点的要求,但是新的需求又来了,客户群总监可以管理多个客服部门;部分项目没有AE,直接由销售接入,PM部门进行项目的信息导入等,那么上一种模型,就又不合适了。因此又产生了下面的一套模型。

    根据需求,又创建了一个名为CrossManage的表格,来管理跨部门的关联,其中S(StaffID)表示成员编号,D(DepartmentID)表示该成员可以跨越管理的部门;同时去除了Staff表中的IsMaster字段,对于本部门的领导,可以在CrossManage表中创建自身与所在部门的关联。

    经过再三考虑,暂时确定了以上的模型关联,接下来是要实践以上模型的正确性,过程中还需要不断的修正改善。

    我在这里,期待着目标的实现。

    曾经我以为我是个程序员攻城狮,,现在我发现,必须要要前面加上“广告公司”四字。
  • 相关阅读:
    创建数据库的那些事
    同步、异步、阻塞、非阻塞我的理解
    Openfire MultiUserChat 多用户聊天 消息发送
    JAVA 随机字符串
    OF 同步异步问题的改进
    Openfire S2S 监听与消息处理
    MySQL FEDERATED 存储引擎
    一个S2S通信中的同步、异步问题的解决
    Openfire Monitoring/jinglenodes plugin error
    Java Cache System JCS(一) 使用方法
  • 原文地址:https://www.cnblogs.com/bashenandi/p/3317014.html
Copyright © 2011-2022 走看看