Saya melihat ini dari sudut pandang yang berbeda.
Dalam situasi Anda, satu meja mungkin cukup baik. Tapi ada pertimbangan lain.
1) Volume. Di tabel kecil, pemfilteran pada bendera tidak akan memengaruhi kinerja secara signifikan. Dalam tabel besar (jutaan baris), Anda harus meletakkan bendera di file index. Menempatkan flag kardinalitas rendah dalam indeks tabel besar dapat menurunkan performa.
2) Cacat. Memiliki bendera di tabel mengharuskan hampir setiap kueri menggunakan bendera. Untuk sistem yang cukup besar, atau cukup kompleks, seseorang akan kehilangan bendera itu. Menentukan risiko bergantung pada biaya karena secara tidak sengaja memilih pengguna yang tidak diaktifkan.
Salah satu cara untuk mengurangi risiko adalah dengan menggunakan tampilan. Jika Anda menerapkan solusi dua tabel, gunakan tampilan (All_Users) menggunakan UNION ALL. Jika Anda menerapkan solusi satu tabel, buat tampilan hanya untuk pengguna yang diaktifkan dan gunakan tabel itu sebagai gantinya. Hanya fungsi pemeliharaan yang perlu memodifikasi tabel inti.