Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database design 数据库模式-作业、报价、作业状态_Database Design_Database Schema - Fatal编程技术网

Database design 数据库模式-作业、报价、作业状态

Database design 数据库模式-作业、报价、作业状态,database-design,database-schema,Database Design,Database Schema,我正在MS Access 2010中设计一个数据库,但我认为对于这个问题,存储细木工业务的报价和订单信息并不重要 这是我的第一个大型数据库项目,虽然我觉得我已经掌握了规范化的概念,但我真的很难理解如何构造报价和工作处理部分 要点: 当客户询价时,会生成一个或多个报价单。 所提供的报价可能包括相同内容的变体。例如,一个报价可能是10扇漆成白色的窗户,另一个报价可能是同一扇漆成绿色的窗户,我们对非白色的窗户收取额外费用。也可能有单独的报价,例如一个用于房屋窗户,一个用于某些门。 这是针对细木工业务,

我正在MS Access 2010中设计一个数据库,但我认为对于这个问题,存储细木工业务的报价和订单信息并不重要

这是我的第一个大型数据库项目,虽然我觉得我已经掌握了规范化的概念,但我真的很难理解如何构造报价和工作处理部分

要点:

当客户询价时,会生成一个或多个报价单。 所提供的报价可能包括相同内容的变体。例如,一个报价可能是10扇漆成白色的窗户,另一个报价可能是同一扇漆成绿色的窗户,我们对非白色的窗户收取额外费用。也可能有单独的报价,例如一个用于房屋窗户,一个用于某些门。 这是针对细木工业务,制造定制的门窗等。这意味着报价是生成的,但它们不参考产品表,因为所有内容都是一次性的。构建报价单的人只需在一个单独的字段中写下类似双窗口1200x1000-卧室1的内容和价格,这一行将添加到报价单中。 每个报价都会附带一组详细信息,这些详细信息被视为整个报价的覆盖性详细信息。大约有120个字段,其中一些用于文本,一些用于布尔值,用于存储有关作业的信息。这些都是像框架玻璃类型的文本和工作,包括滑动门布尔。这些都很重要,因为这些字段会准确记录引用的内容,我们的设计师稍后会参考它们。它们还将构成批准文件的基础,在我们制造任何产品之前,我们将该文件发送给客户以供签署。我认为应该这样设置,因为如果我们制作10扇窗户作为报价,它们几乎共享所有细节,比如油漆颜色和玻璃类型。此外,还将有一个章节/备忘录字段,用于特别说明与我们的标准规范等不同的事项。 报价的状态可以是“活的”、“死的”或“按顺序进行的”。 一个或多个报价可以进展为一个单一作业,一起处理并一次性制造。例如,我们可能会分别对一些窗户和一些门进行报价,客户决定同时向我们订购,因此我们一起处理。同样,一个客户可能对同一订单有多个阶段,例如,他们可能在一个月内收到我们的10扇窗户,3个月后,当他们房子的另一部分准备就绪时,收到我们的10扇窗户,即使他们可能在同一时间报价。 随着客户改变对他们想要什么的想法,报价通常需要修改。 我还希望每个工作,其中可能包括几个报价有一套工作的细节,这是一个为整个订单的汇总列表。 以下是我目前拥有的:

但我真的不确定我是否会用最好的方式去做,因为我没有这方面的经验

Job表还链接到一个Accounts表,该表包含客户等,但我没有显示出来,因为它与手头的问题并不完全相关

我认为,修改后的报价实际上应该创建一个新记录,从另一个报价复制数据并对其进行更改,以便创建审计跟踪,JobDetails也是如此-如果工作更改的JobDetails和/或与报价的JobDetails不同,则需要标记,因为客户可能需要支付更多的费用


有人对此有什么建议吗?

以下是一个更简洁的设计-如果关系设置正确,您有太多不需要链接的链接表:

在您的示例中,我省略了付款表,它们应该包括在上面,它们之间的关系是正确的。
此外,JobDetails表可以与实际的job表合并,因为根据您上面的描述,它们具有一对一的关系-如果您愿意,您可以将其保留在单独的表中,然后,它只需要引用作业表,而不需要引用报价表等

我可能应该让它更清楚-我想对作业详细信息进行审计跟踪。如果这项工作被引用为被涂成白色,而其中一位设计师将其改为绿色,那么我需要在向客户开具账单时,在报告中注明这一点,因为他们需要支付更多的费用!。此外,JobDetails需要同时应用于jobs和quotes。关于job details:我还希望每个可能包含多个quotes的job都有一组JobDetails,这是整个订单的汇总列表。您应该在您的报告软件/程序中总结详细信息,而不是在另一个表中-即使用Select语句。此外,在审计跟踪方面,您应该仍然能够使用不同的状态在QuoteLine表中处理此问题 然后,您可以使用替换的“u QuoteLineID”链接到带有更新详细信息的QuoteLine-这些都将通过相关的JobID链接回作业-这取决于您如何报告审计跟踪。