【发布时间】:2014-09-23 10:22:54
【问题描述】:
我目前正致力于在 Access 2013 中构建 ERP/CRM 数据库,以涵盖经营业务的所有非财务方面,例如客户/供应商信息、联系人、订单和交货跟踪等。
我们生产定制的细木工产品(窗户、门等)。我发现的一件事是,我需要能够为数据库中几乎每个表中的记录编写注释。例如,我可能想在以下表格上写笔记:
-
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 call、Fax、Email和In Person等内容。 -
AccountID- 联系人(客户/供应商)的账户记录 -
EnteredByUserID输入此记录的用户的 FK。 EntryDate-
IsActionRequired- 布尔值 -
ActionRequiredByUser- FK 到用户表以标记需要对此项目采取操作的人员(如果此操作可由任何人完成,则可以为空白)。 -
ActionCompletedDate- 操作标记为完成的日期。 -
ActionCompletedByUser- 完成任务的用户的用户表的另一个 FK。
如上所示,notes 表中有一个CommTaskID,它允许您创建包含有关通信或任务的任何相关注释的注释记录。
基本上我的问题是:有没有更好的方法来解决这个问题?我错过了什么吗?这似乎是一种笨拙的处理方式,但我无法想出一个更好的遵循 DB 规范化规则的方式。
【问题讨论】:
-
为什么不将外键存储在notes表中,为什么不反过来将notes中的主键NoteID存储为所有可以有notes的表中的可为空的外键,例如tblAccount?
-
我在问题中解决了这个问题:“在他们自己的表中有注释的原因是数据库中的每条记录(例如客户帐户)可能需要附加多个注释” .我需要一对多,以便在必要时为每条记录添加许多注释。
-
哦,我错过了。那么我认为你是在正确的轨道上。
标签: database ms-access database-schema