Tôi đang phát triển 3-4 chương trình phụ thuộc lẫn nhau. Gọi họ là foo bar baz và auth. Tôi muốn họ độc lập với nhau. Hãy tưởng tượng nếu tôi cấp phép cho mỗi chương trình cho các công ty khác. Một số công ty có thể muốn foo và bar, những công ty khác có thể chỉ muốn baz, v.v ... Nó cũng có vẻ giống như thực hành tốt để giữ auth độc lập là tốt.
Bối cảnh: auth đang chăm sóc xác thực cho tất cả các hệ thống. Bảng người dùng chính trong auth có user_id, email, mật khẩu, đầu tiên, cuối cùng
foo cũng có một bảng người dùng có các trường cụ thể cho ứng dụng: user_id, role_id, v.v.
Mỗi hệ thống có cơ sở dữ liệu riêng. Trong quá khứ tôi đã tạo một khóa ngoại từ mỗi ứng dụng cho db auth. Tôi đã xóa quyền cập nhật từ các dbs khác nhưng được cấp quyền truy cập vào một số trường có liên quan. Đây có vẻ là một giải pháp tồi vì nó tạo ra sự phụ thuộc chặt chẽ, nhưng nó cho phép tôi bình thường hóa db để tôi không phải lưu tên người dùng và email trong cơ sở dữ liệu foo, bar hoặc baz.
Sẽ tốt hơn để lưu trữ thông tin trong tất cả các cơ sở dữ liệu? Hoặc sẽ tốt hơn nếu lưu trữ Id Auth trong thanh foo và baz và sử dụng api để lấy thông tin người dùng bằng authId?
Tương tự, tôi có thể có khách hàng trong cả 3 hệ thống. Chắc chắn việc tạo ra một phụ thuộc vào một auth db có vẻ không tốt, nhưng còn các dbs khách hàng trên cả 3 thì sao?
Hoặc là giải pháp tốt nhất để có một db trung tâm. Một bảng người dùng.
Gợi ý khác?
foo bar
ví dụ thường quá trừu tượng để được minh họa tốt.