您需要触发器才能“自动”将记录插入单独的表中。
使用单独的查询将记录插入UserPrivacy中将是实现此记录的最常见方法。
如果是一对一关系,则将其放在同一表中可以进行更简单的查询(无需联接)。
决定,决定…
对于一对(零对一)关系,有更多因素需要考虑。
如果UserPrivacy表很大,则可以将其放在单独的表中以节省空间。这也将更加规范化。
如果您经常查询“给我所有没有PrivacyData的用户”之类的信息,那么将其放在单独的表中可能是有意义的。由于索引不包含NULL值(默认情况下),因此对单独的表执行JOIN操作会更快。当然,解决方法是使用非NULL的值表示“无隐私设置”,但是低基数也会对性能产生负面影响。在这种情况下,最好使用单独的表。
另外,如果隐私数据(而不是用户数据)经常更新,则单独的表将防止用户表上的行锁定,并且在较小的表上更新速度更快,这可能会提高性能。
如果您经常需要不带UserData的UserPrivacy数据,反之亦然,则可能需要将它们分开。
不过,这可能是过早的优化。如果它们与您的模型更好地匹配,您可能只想将它们分开。考虑将其保存在同一张表中的简单性,而不是性能,大小和可读性的问题。
如果关系是一对一(零对多),显然您需要一个单独的表,但是对于一对一(零对一),它是可选的。
最后…
只要有理由,不要害怕将它们分开。



