2010-05-20 2 views
4

Скажем, у меня есть простое приложение службы поддержки, которое регистрирует вызовы, сделанные пользователями.Обработка отсутствующих данных

Я бы обычно имел такие поля в таблице, относящейся к вызову, например. CallID, описание, CustomerID и т.д.

Я бы также таблицу клиентов, включая CustomerID, имя пользователя, пароль и т.д. ПолноеИмя

Теперь, когда пользователь удаляется из таблицы клиентов, то внутреннее соединение между вызовами таблицу и таблицу пользователей, чтобы исторически выяснить, какой пользователь зарегистрировал вызов, не даст никаких результатов.

Как люди обычно справляются с этим?

  • Есть отдельный клиент и UserAccount таблицы
  • Просто отключить учетные записи, так что данные по-прежнему доступны
  • Запишите имя клиентов в таблице вызовов в отдельном поле.

или любые другие методы/предложения?

ответ

0

Удаление записей редко является хорошей идеей. Обычно вы хотите включить флаг isActive, даты явной даты действия или что-то в этих строках.

0

Я бы рекомендовал использовать один из этих инструментов в «мягких Удалить» записи пользователя: http://www.ruby-toolbox.com/categories/activerecord_soft_delete.html

Или просто придумать свое собственное решение, которое обеспечивает ту же функциональность, «отключение» счета или что-то.

0

Предполагая, что вы правильно нормализировали данные, вы не должны удалять запись клиента, поскольку у вас есть 1 клиент совершает много звонков, а клиент pk ссылается на вызов fk, это то, что целостность данных - это все. Я считаю, что дата в клиенте - единственный способ пойти, не удаляя также звонок. Денормализация данных, безусловно, не путь.

1

Как указано в других ответах, общим решением является просто отметить запись клиента как «удаленную», «истекшую» или аналогичную с использованием флага.

Помните, что вам может потребоваться фактически удалить личную информацию (имя, адрес, ...) из соображений конфиденциальности/законов о конфиденциальности. Затем вам нужно будет очистить некоторые поля в записи, заменив их значениями-заполнителями.

Другим подходом было бы исключить запись клиента и иметь одну «фиктивную» запись клиента для удаленных клиентов. Затем вы можете переназначить все зависимые записи клиента в dummmy. Это, конечно, теряет информацию, но это единственный способ, если все личная информация должна быть удалена. Если вы сохраняете запись клиента, вы можете видеть, какие зависимые данные принадлежат кому (удаленному) клиенту, чего иногда бывает достаточно, чтобы угадать идентификация удаленного клиента.

Вам необходимо будет решить, основываясь на требованиях и положениях.

Смежные вопросы