创建一个数据库结构,其中一列有多个值?

时间:2013-09-17 16:03:45

标签: sql sql-server vb.net ms-access data-structures

我有一个SQL数据库,它使用MS Access作为前端,并用VB编码。每天从Excel电子表格导入数据,格式为:

日记帐日期,IO帐户,金额,过帐日期,行描述,用户ID,已检查日期,凭证

凭证数据在Excel电子表格中格式化为: 1111111; 2222222; 3333333

凭证可以根据需要提供尽可能多的凭证编号(通常为1到13个不同的数字),每个数字用分号分隔。而且,每个数字的物理长度可以不同。然后我需要将这些凭证号码链接到多个不同的表格。我接手这个项目时所使用的数据结构以分号分隔的形式存储了凭证,并解析了该字符串以链接到其他表。我正准备修改这个数据库,我不想存储这种格式的数据,因为我知道它违反了1NF。

我知道我应该使用外键,但我不确定如何使用不同的凭证数据。我有能力用Excel中的VB解析数据,当它来自Excel时,我只是不知道如何存储它来关联我的表。

该项目的目标是匹配与每个不同凭证相关的外包,并查看金额是否匹配。现在,该过程需要5到10分钟才能拆分凭证并比较表格中的数据。

如果您需要更多信息,请与我们联系。任何意见,将不胜感激。 谢谢!


编辑 - 让我更清楚:

以下是一个示例凭证:2988670; 2990020; 2989130; 2991597; ONL112382

表格中有多个条目(称之为T1),此凭证具有不同的金额。每个数值(不包括ONL编号)对应于另一个表(称为T2)。如果这4个数字中的每一个都在T2中,则称它们为“匹配”。如果它们匹配并且T2中的金额总和等于T1中金额的总和,则它们是“匹配无差异”。

有时优惠券如下:ED414596

在这种情况下,我必须将此值与完全不同的表(称为T3)进行比较。它包括与上述相同的匹配过程。

*我们只是说凭证以多种方式出现,需要与多个表进行比较。

1 个答案:

答案 0 :(得分:2)

您的凭证表格会有voucherIDvoucherNumber,这样可以根据需要重复voucherID次。 voucherID将是您第一个表中的外键,两列一起将是此表的PK。