数据库设计 - 帮助台应用程序

时间:2011-06-07 03:17:21

标签: c# database-design application-design

我无法决定天气是否将帮助台应用程序保留在与其他公司应用程序相同的数据库中,或者将其完全分开。

帮助台应用程序可以通过电话,电子邮件,网站记录支持请求。

我们也可以向注册客户和非注册客户发送问题。

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

如果我们将帮助台应用程序分开,我们的数据库备份也会更小。或者只是将帮助台应用程序保存在同一个数据库中,这使整个开发/集成变得更加容易,也只备份1个数据库。 (可能更大,但仍有1个数据库,包含所有内容)

你会做什么?

2 个答案:

答案 0 :(得分:2)

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

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

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

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

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

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

当然,我可能会过度思考它。这两条路线还有其他令人信服的理由。我只想给你一些思考的东西。

答案 1 :(得分:1)

根据您的环境,这绝对是一个主观的答案。你必须权衡一种选择的利弊与另一种选择的利弊。但是,我的意见是,在分离两个数据库时会发现最好的好处。我真的不喜欢有一个有两个目的的数据库。相反,只想创建一个只有一个目的的数据库。以下是我看到的好处:

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

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