【问题标题】:Database architecture customer management数据库架构客户管理
【发布时间】:2015-02-23 15:56:08
【问题描述】:

我开发了一个工作 mvc asp.net 应用程序(使用 EF)。 我有一个与人员表有关系的数据库表客户 Person 表有一个字段 AdditionalContactInfo 和 Demographics

一个新功能,用于实施某种具有潜在客户和潜在客户的营销系统。

我的问题: - 我是否将 Leads 和 Prospect 放入 Customer 表并为 CustomerType 使用标志,还是创建两个新表 Leads 和 Prospects 更好?

  • 如果是第二种选择,如何将潜在客户/潜在客户转换为客户

也许有一个我没有想到的更好的选择。 一些客户管理的 UML 或数据库图也会很棒

谢谢

【问题讨论】:

    标签: architecture uml software-design


    【解决方案1】:

    最好避免用于确定何时使用它们的可选字段和类型代码。这会导致错误和不同的解释。 (例如,在报告、创建和更新的程序代码中。)

    准确定义业务领域中的术语。潜在客户何时成为客户?何时进行购买?一个人可以扮演一个产品的客户角色,同时扮演另一个更大的产品的潜在客户角色吗?这意味着每个角色都应该是一个单独的表。如果您将它们混入一个带有可选值和类型代码的表中,那么除了与空值相关的长期问题之外,以后添加功能将更加困难。

    【讨论】:

    • 关于单个客户实例可以扮演的不同角色的要点。
    【解决方案2】:

    根据您在此处的描述,您无需将潜在客户和潜在客户放在单独的表格中。客户是否与您开展业务是客户实体的属性。所以是的,在 Customer 表中为 CustomerType 或其他任何内容放置一个字段。 (然而,它不是一个“标志”:一个标志是一个属性,它要么是真要么是假。)

    您将有一些其他表格用于 ContactHistory 或类似的表格。随着您继续记录与客户的联系,您会将他从潜在客户升级为潜在客户。您还将有一个表结构来跟踪您的订单,当您收到订单时,您会将客户从 Prospect 升级为 Customer。

    因此,您也许可以通过采用您联系的人是潜在客户、下订单的人是客户的业务规则来简化您的设计。这可能对您有用,也可能不会;例如,它不涉及您联系并发现他已故的潜在客户。你会想用某种方式说领导是“死”的,即。 e.不会变成前景。 (如果您使用 CustomerType 字段,您可能想提出一个处理这种情况的类别。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-10-19
      • 1970-01-01
      • 1970-01-01
      • 2012-05-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多