Vâng, đó là chỉ khi bạn cho rằng người dùng và tiểu sử có mối quan hệ 1-1.
Nếu điều này luôn được đảm bảo, hơn lý do tách biệt có thể hoàn toàn mang tính thẩm mỹ, tuy nhiên vẫn có thể có lý do hiệu suất để tách hai.
Ví dụ, dữ liệu hồ sơ có thể được truy cập bởi người dùng khác, thường có thể được lưu trữ mà không cần xem xét nhiều cho huỷ bỏ hiệu lực nhanh chóng vv
Họ là loại khái niệm khác nhau của dữ liệu - ngay cả khi họ có 1-to-1 mối quan hệ. Tôi sẽ không bao giờ lưu trữ chi tiết đăng nhập của người dùng - nhưng sau đó tôi sẽ không tiết lộ nó theo chương trình cho các mô-đun chỉ yêu cầu dữ liệu hồ sơ.
Đó là lý do nếu mối quan hệ 1-1 có thể được đảm bảo giữ. Có thể không?
Nếu bạn cho phép nhiều thông tin xác thực đăng nhập (hoặc nhiều phương thức đăng nhập) cho mỗi người dùng, thì giờ đây nó trở nên thú vị hơn. Ví dụ, các phiên dựa trên cookie thường được lưu trữ trong một kho lưu trữ dễ bay hơi ở phía máy chủ (hiếm khi có nhu cầu lưu giữ dữ liệu đó). Bạn có thông tin đó trỏ đến đối tượng người dùng hay đối tượng cấu hình không?
Bạn có thể có mối quan hệ một chiều - có một con trỏ từ Người dùng đến Hồ sơ, nhưng không phải từ Hồ sơ đến Người dùng. Bằng cách này, các mô-đun giữ dữ liệu Tiểu sử không thể thay đổi chi tiết đăng nhập.
Cuối cùng, nếu bạn sử dụng giải pháp như facebook, cho phép nhiều email đăng nhập cho mỗi người dùng và nói thêm thông tin đăng nhập qua OpenID và thông qua ứng dụng iPhone/Android? sau đó bạn có đồng ý rằng Hồ sơ và Người dùng vẫn giống nhau không?
Tôi không đồng ý với điểm 3. Các chỉ mục đã tách biệt với dữ liệu và tách dữ liệu người dùng và hồ sơ yêu cầu đọc hai chỉ mục. –
Đúng. Bạn có thể có bảng tra cứu được tối ưu hóa với các chỉ mục nhóm tổng hợp hoặc có thể là một mô hình dữ liệu khác nhau hoàn toàn cho thông tin cơ bản. Và đối với các bảng lớn, bạn sẽ được hưởng lợi từ việc chia nhỏ dữ liệu. Tuy nhiên, hầu hết thời gian tối ưu hóa như vậy sẽ khá liên quan và rất có thể không liên quan đến người yêu cầu. Tôi nghĩ rằng hai điểm đầu tiên là những điểm quan trọng nhất. – Blixt