Я уверен, что дебаты по поводу удаления и флага ведутся до смерти повсюду, но мне трудно найти удовлетворительное решение, и я чувствую, что, возможно, упустил некоторые проблемы. Я оценил 3 разные школы мысли, но столкнулся с проблемами со всеми из них. В частности, я имею в виду удаление товаров / предметов продавца.
Чистое удаление Обеспечивает самую чистую базу данных, но также жертвует целостностью данных, поскольку ссылки теряются. Совершенно очевидно, что в таблице Orders не будет важной информации об истории покупок пользователя, поскольку правила нормализации диктуют, что OrderItems хранятся как отношения MM.
Создание своего рода снимка продукта по заказу Создание дубликата элемента для элемента противоречит ненужным данным, а также сталкивается с проблемой степени детализации - будь то для создания снимка для каждого заказа с базовыми c полями с названием элемента, ценой, фото или просто переместить удаленный элемент в теневую таблицу при удалении. Этот метод, кажется, увеличивает объем хранилища данных.
Добавление поля datetime для записи удаленной даты Кажется, что ломает меньше всего, но также приводит к тому, что основная таблица становится очень большой, поскольку некоторые продавцы могут неизменно в конечном итоге придется удалять и воссоздавать один и тот же элемент несколько раз.
Любой ввод приветствуется.
Спасибо!