У меня есть пользовательская таблица, в которой есть user_id. Таким образом, весь пользовательский контент, журналы, подробные таблицы и т. Д. Имеют user_id как FK для родительской таблицы User. Это социальный сайт. Поэтому, когда пользователь регистрируется, ему назначается случайный user_id. Очевидно, что идентификатор никогда не изменится после назначения, поэтому:
1) Я предполагаю, что мне не нужно использовать «ON UPDATE CASCADE» на любой ссылке FK, потому что user_id никогда не может измениться в любом случае?
2) Нужно ли устанавливать «ON DELETE» или «SET NULL» в любом месте для FK user_ID в любом случае использования?
3) Если участник удалит свою учетную запись по большей части, я установлю флаг удаления. Но я даю пользователям повышенную конфиденциальность, чтобы удалить всю свою запись из базы данных, как будто их никогда не было, поэтому у меня есть два случая:
A) Удалить все следы пользователя (полное удаление), но сохранить содержание активным. Поэтому, если пользователь разместил фотографию, все, что я удаляю, - это мистер А., у которого есть удостоверение личности с фотографией 33445, но я сохраняю фотографию как сирота. (также г-н А будет удален из таблицы пользователя в случае жесткого удаления). Таким образом, в настоящее время существует около 16 таблиц, ссылающихся на следы пользователей, для которых необходимо установить значение NULL или значение по умолчанию user_Id 999, которое я ссылаюсь на несуществующего пользователя.
B) Удалите все отпечатки и весь контент. Таким образом, все (userID и object_iD) установлено в NULL или 999. И если я делаю жесткое удаление, тогда мне нужно физически удалить фотографию из моей файловой системы.
Я даже не уверен, обрабатывается ли все это из ограничений, триггеров или со стороны приложения? Цель состоит в том, чтобы сделать его максимально простым и быстрым с минимальными накладными расходами.
Платформа: MySQL, codeIgnitorPHP, выделенная среда хостинга.