Основываясь на том, что вы сказали, и каких-то gueses относительно того, что еще/что вам нужно, я придумал схему структуры таблицы (таблицы в ALLCAPS, столбцы в CamelCase, столбцы, заканчивающиеся на Id, являются идентификаторами или подходящими натуральными ключами , где имя ColumnId соответствует этому имени таблицы, это первичный ключ, в противном случае это внешний ключ в родительской таблице): записи
-- CUSTOMER ----
CustomerId
-- QUOTE ----
QuoteId
CustomerId
Data1Id
-- QUOTEREVISION ----
QuoteRevisionid
QuoteId
CreatedAt
Data2Id
Data3Id
-- DATA1 ----
Data1Id
-- DATA2 ----
Data2Id
-- DATA3 ----
Data3Id
клиент, который может сделать котировки.
QUOTE отслеживает ценовые котировки клиентов. Одна строка для каждого заданного [независимо], для которого они вводят кавычки.
QUOTEREVISION записывает каждую ревизию котировки, в которую они входят. Когда сначала создается котировка, будет создано первое QuoteRevision. CreatedAt был бы датированным, чтобы отслеживать, когда они произошли. QuoteId + CreatedAt - это естественный ключ для таблицы, поэтому вам может не понадобиться QuoteRevisionsId.
DATA1, DATA2, DATA3 и другие при необходимости содержат дополнительную информацию. Я сконфигурировал Data1 для хранения информации, относящейся к уровню котировки, т. Е. Тот же факт применим к каждой ревизии котировок. Data2 и Data3 будут содержать данные, которые могут варьироваться от пересмотра до пересмотра.
У меня нет сомнений, что здесь есть вещи, которые не относятся к вашей проблеме, но, надеюсь, это дает вам некоторые идеи для возможных решений.
В чем заключаются изменения, которые необходимо поддерживать? Все или некоторая комбинация столбцов или только одна, в частности? –
Все столбцы необходимы для каждой ревизии –