Возможно, одна из возможных реализаций покупательского карта - это один класс Карт , в котором вы сохраняете различные атрибуты покупательского карт.Если у него есть определенные свойства, которые не изменятся со временем, то одним из вариантов является создание класса для сохранения идентификатора покупательской карты вместе с атрибутами, которые не меняются, а затем в отдельном классе есть указатель на исходный класс, которыйпредставляет торговый карта (с указателем на строку в Kart ) и остальные свойства, которые меняются (например, общее количество или элементы).
В этом отдельном классе SepKart хорошая идея иметь атрибуты validSince и validUntil и иметь в триггере beforeSave - функция, которая устанавливает атрибут validUntil другой строки в SepKart , который указывает на тот же торговый карта в Kart и не имеет validUntil set.
В случае элементов и их порядка, список объектов, которые указывают на элементы, сделает это, потому что тогда, если порядок изменится, тогда просто сохранится новый экземплярэто сохранит новый заказ, и вы сможете увидеть историю доставки картов за время A , просто запросив в SepKart строку, указывающую наКарта покупок Карта имеет validSince времени до A и validUntil после A (или validUntil не задано).