数据库架构客户管理

时间:2014-12-26 09:46:55

标签: architecture uml software-design

我开发了一个有效的mvc asp.net应用程序(使用EF)。 我有一个与Person表有关系的Database Table Customer 人员表有一个字段AdditionalContactInfo和Demographics

以领导和前景实施一类营销系统的新功能。

我的问题: - 我是否将Leads和Prospect放在Customer Table中并使用CustomerType的标志,或者更好地创建两个新的表引线和前景?

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

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

THX

2 个答案:

答案 0 :(得分:1)

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

准确定义业务领域中的术语。 Lead何时成为客户?购买时?一个人是否可以扮演一个产品的客户角色,同时扮演一个追逐另一个更大产品的潜在客户的角色?这意味着每个角色应该是一个单独的表。如果将它们混合到一个具有可选值和类型代码的表中,则除了与空值相关的常年问题之外,稍后添加功能将更加困难。

答案 1 :(得分:0)

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

您将为ContactHistory提供某种其他表格或其他类似的表格。当您继续向客户记录您的联系人时,您将他从Lead升级到Prospect。您还有一个表格结构来跟踪您的订单,当您收到订单时,您将客户从Prospect升级到客户。

因此,您可以通过采用您联系的人是潜在客户的业务规则来简化您的设计,并且下订单的人是客户。这可能对你有用,也可能不适用;例如,它没有处理你联系的领导并发现他已去世。你想要有一些方式说,领导是一个死的"一,我即不会变成一个潜在客户。 (如果您使用CustomerType字段,您可能想要提出一个处理这种情况的类别。)