我有我的用户表,其中有 user_id。因此,所有用户内容、日志、详细信息表等都将 user_id 作为父用户表的 FK。这是一个社交网站。因此,当用户注册时,他们会被分配一个随机的 user_id。显然,ID 一旦分配就永远不会改变,所以:
1)我假设我不需要在任何 FK 引用上使用“ON UPDATE CASCADE”,因为 user_id 无论如何都不会改变?
2) 在任何用例中,我是否需要在任何地方为 user_ID FK 设置任何“ON DELETE”或“SET NULL”?
3) 如果会员大部分都删除了他的帐户,我将设置一个删除标志。但是我正在为用户提供增强的隐私,以便他们从数据库中删除他们的整个记录,就像他们从未存在过一样,所以我有两种情况:
A) 仅删除所有用户的足迹(硬删除),但保留内容。因此,如果用户发布了照片,我要删除的只是 A 先生拥有照片 ID 33445,但我将照片保留为孤儿。(在硬删除的情况下,A 先生也将从用户表中删除)。因此,现在大约有 16 个引用用户足迹的表需要设置为 NULL 或默认 user_Id 为 999,我指的是不存在的用户。
B)删除所有的指纹和所有的内容。所以所有内容(userID 和 object_iD)都设置为 NULL 或 999。如果我正在执行硬删除,那么我需要从我的文件系统中物理删除照片。
我什至不确定这一切是从约束、触发器还是在应用程序端处理的?目标是让它尽可能简单和快速,而且开销很小。
平台:MySQL、codeIgnitorPHP、专用托管环境。