我在一家制造工厂工作,在那里我们组装了10种不同的产品。每种产品的功能相似,但需要测试不同的参数。最初我创建了一个Access数据库来存储我们构建的每个单元的测试结果。我通过为每个产品提供一个表来布局数据库。这个表存储了生产ID以及测试参数(压力,温度,通过/失败信息等等)。我觉得这是一个很难接近的方法,但它似乎是我使用访问绑定表单的唯一方法便于数据输入。我的问题是,现在每当我需要添加新的测试参数时,我必须更改表格设计以及表格。
很快我将能够在mySQL中重新创建这个系统,我希望有更好的方法来存储这些测试结果。任何见解都会非常有用。
感谢。
答案 0 :(得分:1)
我认为您正在考虑需要使用多对多表。
一个存储产品的表,一个存储每个唯一测试的表,然后是第三个M2M表,它将产品A链接到需要的多个测试。您M2M还可以存储(通用)您的测试结果。
答案 1 :(得分:1)
查找“数据库规范化。”
最极端的是,您可以将其拆分为4个表格:
理论上你可以不使用第一个和第三个表,而只是在每个记录中保存名称(即产品条目:id = 12345,type =“chair”)。这种方式的检索速度要快得多,但它也不能很好地防止人们拼错东西(即从type =“chair”的产品中选择*会错过type =“chiar”的条目),并且因为你占用了更多的存储空间“一遍又一遍地保存文字名称。
无论如何,这是多对一关系的基本模式,这正是您所寻求的:一个产品,多个测试(或者,所有四个表,多对多:许多产品,许多测试类型)。您需要在单独的表中,每个产品都有一个id,然后是一个外键,用于将每个测试结果链接到它适用的产品。
现在,我们来谈谈约束。
我可能会想到的一个问题是测试结果表上的一个唯一键,它会对产品id 和测试类型进行索引,然后一定要使用“ON DUPLICATE KEY”更新“以便旧值被新的值覆盖。这样,您确定每个产品的每个测试只有一个结果。如果你想保留旧记录,请忽略这一段。
您肯定会失去的一件事是能够要求对给定产品进行所有测试。这一点必须在数据库之外完成。如果您想要为每个产品填写所有列,那么您必须按照您的方式进行操作(在每个测试中,每个测试都有一列,每个产品都有NOT NULL约束)测试列),因为现在测试结果和对象id在功能上相互依赖(没有另一个就不存在)。
答案 2 :(得分:1)
我会使用(至少)以下表格:
<强>产品强>
Id,Name,TestSchedule
分析例如使用具有1开尔文容错的正常操作参数测量温度
身份证,姓名,说明,指示
测试例如产品p中的温度测量,预期结果为300-360开尔文。
Id,ProductId,AnalysisId,LowerLimit,UpperLimit
TestResult 批次X的测试结果,例如 342 Kelvin,传递
Id,BatchId,TestId,结果,状态(通过/失败)
同时具有Analysis
表和Test
表的原因是规范化。 analysis
是通用的,指定方法。 test
指定对特定产品执行分析时可接受的限制。
答案 3 :(得分:0)
创建具有唯一ID /产品的产品表。然后创建一个测试表,其中包含唯一的测试ID和适用产品的列。加入这些以查找适用于哪些产品的测试。您可以随时添加新测试。
如果您想存储测试历史记录,结果等,还可以拥有“测试版本”列。