Saya mengembangkan 3-4 program yang saling tergantung. Sebut mereka foo bar baz dan auth. Saya ingin mereka mandiri satu sama lain. Bayangkan jika saya melisensikan setiap program ke perusahaan lain. Beberapa perusahaan mungkin menginginkan foo dan bar, yang lain mungkin hanya ingin baz, dll. Ini juga tampak seperti praktik yang baik untuk menjaga independensi juga.
Konteks: auth menjaga otentikasi untuk semua sistem. Tabel pengguna utama dalam auth memiliki user_id, email, kata sandi, pertama, terakhir
foo juga memiliki tabel pengguna yang memiliki bidang khusus untuk aplikasi: user_id, role_id, dll.
Setiap sistem memiliki database sendiri. Di masa lalu saya telah membuat kunci asing dari setiap aplikasi ke db auth. Saya menghapus izin pembaruan dari dbs lain tetapi memberikan akses pilih ke bidang tertentu yang relevan. Ini sepertinya solusi yang buruk karena menciptakan ketergantungan yang ketat, tetapi memungkinkan saya untuk menormalkan db sehingga saya tidak perlu menyimpan nama pengguna dan email di database foo, bar, atau baz.
Apakah lebih baik menyimpan informasi di semua basis data? Atau lebih baik menyimpan Auth Id di foo bar dan baz dan menggunakan api untuk mendapatkan info pengguna menggunakan authId?
Demikian pula, saya mungkin memiliki pelanggan di ketiga sistem. Tentu sepertinya buruk untuk membuat ketergantungan menjadi auth db, tapi bagaimana dengan pelanggan dbs di ketiganya?
Atau solusi terbaik untuk memiliki satu pusat db. Satu tabel pengguna.
Saran Lainnya?
foo bar
contohnya sering terlalu abstrak untuk menjadi ilustrasi yang baik.