【问题标题】:Database design - Help desk application数据库设计 - 帮助台应用程序
【发布时间】:2011-09-09 18:10:41
【问题描述】:

我无法决定是否将帮助台应用程序与其他公司应用程序保存在同一数据库中或将其完全分开。

帮助台应用程序可以记录来自电话、电子邮件、网站的支持请求。

我们也可以收到注册客户和非注册客户发送给我们的问题。

将帮助台应用程序保留在同一个数据库中的唯一原因是我们可以共享用户群。但话又说回来,我们可以让用户创建一个新帐户以获得支持或将用户帐户与帮助台应用程序同步。

如果我们分离帮助台应用程序,我们的数据库备份也会更小。或者只是将帮助台应用程序保留在同一个数据库中,这使得开发/集成总体上更容易,也只备份 1 个数据库。 (可能更大,但仍然有 1 个数据库)

你会怎么做?

【问题讨论】:

  • 假设您将帮助台数据库放入企业应用程序数据库中。如果用户打电话给帮助台报告公司应用程序数据库服务器已经崩溃并躺在服务器机房中间的一堆比特中,你打算如何输入他的票?
  • @John R Strohm - 该死的好点。
  • 啊,好点子。好吧,在这种情况下,我们无法提供支持,这很糟糕。

标签: c# database-design application-design


【解决方案1】:

我认为这是一个主观的答案,但我会将帮助台系统作为一个单独的实体保留,除非有充分的商业理由使用相同的用户群。

这主要基于我在专业帮助台呼叫记录/票务软件中看到的内容,但我确实有另一个令人信服的原因 - 安全性 - 逻辑如下:

通常,与其他业务系统(会计、购物、CRM 等)相比,帮助台票务系统通常需要较少敏感信息。您的技术人员可能需要知道如何联系客户,但可能不需要存储完整的地址、出生日期等。以下所有内容均基于假设 - 您现有的客户数据包含敏感或个人身份数据您的票务系统不需要。

  • 原则 1:通过限制存储的数据来减少攻击面。一般来说,我同意你应该只收集你绝对需要的数据的原则。可用的敏感信息较少意味着攻击者可以窃取的信息较少。

  • 原则 2:通过最大限度地减少对现有敏感数据的攻击途径来减少表面积。假设您已经拥有庞大的用户群,并且假设您已经存储了有关您的客户的潜在有用数据,那么在该数据中添加另一个带有挂钩的应用程序只是为现有客户群增加了进一步的攻击途径。这让我...

  • 原则 3:最小权限。您为帮助台软件数据库设置的用户应该只能访问帮助台分析师绝对需要的数据。如果您在设计数据库时考虑到一组特定的需求,那么实现这一点会更容易。从维护的角度来看,必须为敏感数据设置视图和存储过程以便只允许访问非敏感数据,这比设计一个只包含您需要的数据的数据库要困难得多。

当然,我可能想多了。走这两条路还有其他令人信服的理由。我只是想给你一些思考。

【讨论】:

    【解决方案2】:

    这肯定是基于您的环境的主观答案。您必须权衡一种选择的利弊与另一种选择的利弊。但是,我的观点是分离两个数据库会带来最大的好处。我真的不喜欢一个有两个目的的数据库。相反,希望创建一个仅用于一个目的的数据库。以下是我认为这样做的好处:

    • 可移植性 - 如果您决定将帮助台移动到不同的服务器,您可以毫无问题地进行操作。如果您想将公司数据库移动到其他地方,也是如此
    • 关注点分离 - 每个数据库都是为自己的目的而设计的。一方的安全不会干扰另一方的安全。
    • 备份策略 - 目前,您只能为两个系统设置一个备份策略,因为它们位于同一个数据库中。如果您拆分它们,您可以比另一个更频繁地备份一个(并且备份会更小/更快)。

    我看到的缺点(无法轻松访问公司数据)实际上在我看来是积极的。从公司数据库访问数据听起来不错,但它可能是一个安全问题(也是一个可维护性问题)。相反,通过这种方式,您可以限制向帮助台系统授予的访问权限(以及访问类型)。数据库可以相当轻松地相互访问,因此不会那么不方便,并且可以让您在公司数据和帮助台数据之间添加一个很好的安全屏障。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-08-08
      • 2011-07-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多