Anda akan memerlukan pemicu untuk "secara otomatis" memasukkan catatan ke dalam tabel terpisah.
Menyisipkan catatan ke UserPrivacy dengan kueri terpisah akan menjadi cara paling umum untuk menerapkan ini.
Jika ini adalah hubungan satu-ke-satu, meletakkannya di tabel yang sama memungkinkan kueri yang lebih sederhana (tidak perlu bergabung).
Keputusan, Keputusan ...
Dengan hubungan satu-ke-(nol ke satu), ada lebih banyak faktor yang perlu dipertimbangkan.
Jika tabel UserPrivacy berukuran besar, mungkin masuk akal untuk meletakkannya di tabel terpisah untuk menghemat ruang. Ini juga akan lebih dinormalisasi.
Jika Anda sering menanyakan sesuatu seperti "Beri saya semua Pengguna yang tidak memiliki PrivacyData", mungkin masuk akal untuk meletakkannya di tabel terpisah. Karena indeks tidak menyertakan nilai NULL (secara default), akan lebih cepat untuk melakukan GABUNG ke tabel terpisah. Tentu saja, solusinya adalah menggunakan nilai selain NULL untuk mewakili "tidak ada pengaturan privasi", tetapi kardinalitas rendah juga memengaruhi kinerja secara negatif. Tabel terpisah adalah yang terbaik untuk kasus ini.
Juga, jika data privasi sering diperbarui, tetapi bukan data Pengguna, tabel terpisah akan mencegah kunci baris pada tabel Pengguna, dan pembaruan lebih cepat pada tabel yang lebih kecil, yang mungkin meningkatkan kinerja.
Jika Anda sering membutuhkan data UserPrivacy tanpa UserData, atau sebaliknya, Anda mungkin ingin memisahkannya.
Namun, ini mungkin optimasi prematur. Anda mungkin ingin memisahkannya jika lebih cocok dengan model Anda. Pertimbangkan kesederhanaan menyimpannya di tabel yang sama versus masalah kinerja, ukuran, dan keterbacaan.
Jika hubungannya adalah satu-ke-(nol ke banyak), Anda tentu menginginkan tabel terpisah, tetapi untuk satu-ke-(nol ke satu), itu opsional.
Akhirnya...
Jangan takut untuk memisahkannya, selama ada alasannya.