Дизайн базы данных для многих ко многим отношениям - PullRequest
0 голосов
/ 31 мая 2011

Я сейчас переписываю базу данных MS Access, и, к сожалению, нам нужно сохранить некоторые странные процессы, которые существуют в текущей БД. У меня возникли некоторые проблемы при проектировании БД, поэтому я надеюсь получить совет / направление.

Новые таблицы:

tblCurrentDayRecords
BusinessDate (PK)
Acct (PK)
ActivityDate (PK)
Type
RecordGuid

tblNotes
RecordGuid (PK)
NoteGuid (PK)
Note
NoteDate
NoteAddedBy

Данные добавляются к tblCurrentDayRecords каждое утро. Эти записи затем обрабатываются в пользовательском интерфейсе. При обработке записей добавляются заметки, которые относятся к записям с использованием 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.

Я открыт для того, чтобы изменить дизайн таблицы Notes с помощью таблицы Join, что бы это ни работало, но я не могу придумать лучший способ сделать это, не выполняя вставку или обновление каждый день, чтобы связать новый запись на предыдущие заметки. Позвольте мне уточнить и сказать, что я не могу просто обновить таблицу Notes новым RecordGuid, потому что записи все еще должны быть доступны для каждого дня записей.

Надеюсь, этого объяснения достаточно, чтобы получить отзывы или советы о том, как действовать.

1 Ответ

3 голосов
/ 31 мая 2011

Вы как бы потеряли меня в своем описании, но я могу вам сказать, что в целом для отношения «многие ко многим» вам понадобится таблица, которая связывает строки в таблице 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');
...