数据库中的Notes系统

时间:2014-09-23 10:22:54

标签: database ms-access database-schema

我目前正致力于在Access 2013中构建ERP / CRM数据库,以涵盖运营业务的所有非财务方面,例如客户/供应商信息,联系人,订单和交付跟踪等等。< / p>

我们制造定制细木工产品(门窗等)。我发现的一件事是我需要能够在数据库的几乎每个表中写下关于记录的注释。例如,我可能想在下表中写下注释:

  • tblAccount其中包含客户和供应商信息,例如“这个客户总是有特殊的玻璃”。
  • tblDelivery - “客户要求司机在伦敦路后面的公园停车”。
  • tblQuote - “报价不包括钢材的木材覆层 - 由他人提供”。

等。等

所以目前我有tblNote,其中包含以下字段:

  • NoteID - PK
  • AccountID - FK到tblAccount
  • DeliveryID - FK到tblDelivery
  • QuoteID - FK到tblQuote
  • 还有几个FK到其他表中,其中包含我可能需要记录的内容。
  • EnteredByUsedID - 将FK输入到系统中的注释的数据库用户的tblUser
  • EntryDate - 已输入日期备忘
  • NoteText - 说明文字
  • CommTaskID - 稍后解释 - 见下文

输入新笔记时,其他桌子的大部分FK都是空白的(除了笔记实际关注的那些)。这些音符将在子表格中查看,例如浏览客户帐户时,会出现一个显示该客户备注的框。

在自己的表格中注明的原因是数据库中的每条记录(例如客户帐户)可能需要附加多个注释。

我还想实现任务分配和跟踪以及通信记录。例如,当我们接到来自潜在新客户的电话询问报价时,我们会记录收到的电话以及客户的联系方式,请注意他们已经要求报价以及他们想要引用的内容的细节,加上标记它以供特定数据库用户或指定的任何人所需的操作。它也可能被创建为

考虑到这一点,我有tblCommTaskLog,其中包含以下字段:

  • CommTaskID - PK
  • CommMethodID - FK到tblCommMethod,其中包含Phone callFaxEmailIn Person等内容。
  • AccountID - 进行联系的人(客户/供应商)的帐户记录
  • EnteredByUserID输入此记录的用户的FK。
  • EntryDate
  • IsActionRequired - 布尔
  • ActionRequiredByUser - FK到用户表以标记需要对此项目采取措施的人员(如果任何人都可以完成此操作,则可以为空白。)
  • ActionCompletedDate - 操作标记为已完成的日期。
  • ActionCompletedByUser - 完成任务的用户的另一个FK到用户表。

如上所示,注释表中有一个CommTaskID,允许您创建包含有关通信或任务的任何相关注释的注释记录。

基本上我的问题是:有没有更好的方法来解决这个问题?我错过了什么吗?这似乎是一种笨重的方式,但是我无法想出一个遵循数据库规范化规则的更好的方法。

2 个答案:

答案 0 :(得分:1)

你的概念听起来对我不错。我必须将笔记集成到现有的数据库中,你肯定只想要一个带有一个字段的Notes表,该字段指定该笔记属于哪个表,以及该表中哪个主键与该笔记绑定。

所以,我想也许你想要这个:

  • NoteID - PK
  • TableID - FK到一个新表,它存储表的名称
  • TablePK - FK到TableID中引用的表中的主键
  • 还有几个FK到其他表,其中包含我可能需要的东西 保持记录。
  • EnteredByUsedID - FK到输入的数据库用户的tblUser 请注意系统。
  • EntryDate - 输入日期备注
  • NoteText - 笔记的文字
  • CommTaskID - 稍后解释 - 见下文

这样,您就可以知道它属于哪个表,以及该表中属于哪个记录。

在查询中,您只需将TablePK加入表中的键,然后根据您要加入的表过滤TableID。

或者,如果您需要建立关系,只需在其中包含TableID的所有表中添加一个新字段。

答案 1 :(得分:-2)

只是一个想法,但是为每个想要做笔记的桌子准备一个笔记表会更有意义吗?

TblCustomer TblCustomerNotes

TblProduct TblProductNotes