Пользователи нашего приложения участвуют в форумах и создают разные объекты. В схеме вы помещаете ссылки из этих таблиц обратно в таблицу User в качестве ссылок на внешние ключи. Мы не можем удалить эту запись пользователя из базы данных, так как она имеет несколько ограничений внешнего ключа, которые можно удалить.Как вы справляетесь с удалением пользователей
Одним из способов адресации было бы сделать поле пользователя в других таблицах равным нулю, чтобы вы могли пометить эти значения как обнуляемые до удаления пользовательской записи. Удаление информации из других таблиц вовсе не является вариантом, так как это приведет к несогласованности (например, удалить сообщение в форуме, принадлежащее пользователю, вызовет проблему).
Другим вариантом было просто отметить запись пользователя как съемную и не сделать ее доступной как часть пользовательских запросов. Это теоретически означает, что ни один пользователь не может быть удален из системы и может быть проблемой, если кто-то захочет использовать аналогичный loginid как удаленный пользователь.
Хотели бы узнать, как другие решают эту проблему?
+1 всегда мягкое удаление пользователей. Кроме того, часто в целях аудита имя пользователя сохраняется, а не идентификатор пользователя FK, на всякий случай, если тупой администратор воскрешает неактивного пользователя и переназначает идентификатор новому сотруднику. – StuartLC
С этим могут возникнуть некоторые проблемы с защитой данных, поэтому запустите его мимо адвоката или кого-то, кто по крайней мере похож на адвоката. –
Обычно я устанавливаю удаленный столбец в true, когда пользователь удаляется, а для рабочих запросов выбирают только пользователей с удаленным = false – KoolKabin