Câu hỏi này có thể thích hợp hơn với lập trình viên.stackexchange. Nếu có, vui lòng di chuyển.Có bao nhiêu tham gia khả thi trong thực tế
Tôi hiện đang cân nhắc sự phức tạp của các mô hình dữ liệu điển hình. Mọi người đều biết rằng các mô hình dữ liệu nên được chuẩn hóa, tuy nhiên mặt khác, một mô hình dữ liệu chuẩn hóa sẽ yêu cầu một vài tham gia để tập hợp lại dữ liệu sau này. Và tham gia là các hoạt động có khả năng tốn kém, tùy thuộc vào kích thước của các bảng có liên quan. Vì vậy, câu hỏi tôi đang cố gắng tìm ra, là một trong những thường sẽ đi về sự cân bằng này? I E. trong thực tế có bao nhiêu tham gia bạn sẽ tìm thấy chấp nhận được trong các truy vấn điển hình khi thiết kế một mô hình dữ liệu? Điều này đặc biệt thú vị khi đếm nhiều lần tham gia trong các truy vấn đơn lẻ.
Ví dụ: giả sử chúng tôi có người dùng, những người sở hữu nhà ở, trong đó có các phòng, trong đó có ngăn kéo có chứa các vật phẩm. Bình thường hóa điều này với các bảng cho người dùng, nhà ở, phòng, ngăn kéo và vật phẩm theo nghĩa được giải thích ở trên, sau đó yêu cầu tôi tham gia năm bảng, khi nhận tất cả các mục thuộc về một người dùng nhất định. Điều này có vẻ như một sự phức tạp khủng khiếp với tôi.
Rất có thể kích thước của các bảng cũng sẽ được tham gia. Tham gia năm bảng với ít dữ liệu không phải là xấu như ba bảng với hàng triệu hàng. Hay việc xem xét này sai?
5 bảng chỉ là 4 lần tham gia. Không thực sự nhiều. Và bạn sẽ không cần dữ liệu từ tất cả 5 bảng trong tất cả các truy vấn. Nếu bạn có ít bảng hơn (không chuẩn hóa), bạn sẽ có các bảng lớn hơn để xử lý trong tất cả các truy vấn. –
Giống như ypercube nói, 5 bảng không nhiều. (Tôi thường cố gắng giới hạn các bảng tham gia trong một truy vấn để phù hợp trực quan trên màn hình - nó có nghĩa là khoảng 20 bảng hoặc hơn :)) Nhưng nếu trong ứng dụng ví dụ của bạn tải trọng nhất đến từ các truy vấn của người dùng, thì bạn có thể cân nhắc thêm một số dự phòng, thêm id người dùng vào bảng mục - chắc chắn làm cho các truy vấn cụ thể của bạn nhanh hơn nhiều. Tất nhiên bạn phải cẩn thận thiết kế chèn bản ghi của bạn và cập nhật logic để không tạo ra dữ liệu xung đột. Như thường lệ, không có giải pháp "một kích thước phù hợp với tất cả". – Arvo