我正在重写MS Access数据库,不幸的是我们需要保留当前数据库中存在的一些奇怪的进程。我在进行数据库设计时遇到了一些麻烦,所以我希望得到一些建议/方向。
新表:
tblCurrentDayRecords
BusinessDate (PK)
Acct (PK)
ActivityDate (PK)
Type
RecordGuid
tblNotes
RecordGuid (PK)
NoteGuid (PK)
Note
NoteDate
NoteAddedBy
每天早上都会将数据添加到tblCurrentDayRecords
。然后在UI中处理这些记录。处理记录时,会添加使用RecordGuid与记录相关的注释。
我在设计中遇到的问题是,每天我们都会将新记录添加到tblCurrentDayRecords
表中,但可能会显示相同的帐户,如果有,则必须将前一记录中的记录向前桥接一天一天的。所以这个过程是这样的:
Day
5/30 Acct 123456789 Note1, Note2
5/31 Acct 123456789 Note1, Note2, Note3
6/1 Acct 123456789 Note1, Note2, Note3, Note4, Note5
因此,如果每隔一天添加一个帐户,我需要将前一天的笔记移动到前一天。这些记录中的每一个都有一个新的RecordGuid,当它被添加到tblCurrentDayRecords
表时生成。
我愿意使用Join表更改Notes表的设计,无论是为了使其工作,但我无法找到最佳方法来执行此操作而无需每天运行Insert或Update来绑定新的记录到以前的笔记。让我澄清并说我不能只使用新的RecordGuid更新Notes表,因为每天的记录仍然需要访问注释。
我希望这个解释足以得到一些关于如何继续的反馈或建议。
答案 0 :(得分:3)
你在描述中丢失了我,但我可以告诉你,一般来说,对于多对多关系,你需要有一个表格,将表格1中的行与表格2中的行相关联这就是你要找的东西吗?
tblRecordNotes
BusinessDate (PK)
Acct (PK)
ActivityDate (PK)
RecordGuid (PK)
然后处理您的样本数据,您将执行以下操作:
INSERT INTO tblRecordNotes VALUES ('2011-05-30', 123456789, '2011-05-30', 'Note1');
INSERT INTO tblRecordNotes VALUES ('2011-05-30', 123456789, '2011-05-30', 'Note2');
INSERT INTO tblRecordNotes VALUES ('2011-05-31', 123456789, '2011-05-31', 'Note1');
INSERT INTO tblRecordNotes VALUES ('2011-05-31', 123456789, '2011-05-31', 'Note2');
INSERT INTO tblRecordNotes VALUES ('2011-05-31', 123456789, '2011-05-31', 'Note3');
INSERT INTO tblRecordNotes VALUES ('2011-06-01', 123456789, '2011-06-01', 'Note1');
INSERT INTO tblRecordNotes VALUES ('2011-06-01', 123456789, '2011-06-01', 'Note2');
INSERT INTO tblRecordNotes VALUES ('2011-06-01', 123456789, '2011-06-01', 'Note3');
INSERT INTO tblRecordNotes VALUES ('2011-06-01', 123456789, '2011-06-01', 'Note4');
INSERT INTO tblRecordNotes VALUES ('2011-06-01', 123456789, '2011-06-01', 'Note5');