Điều gì sẽ là một thiết kế cơ sở dữ liệu tốt hơn cho một trang web mạng xã hội? Một bảng có nhiều cột hơn và ít hàng hơn hoặc nhiều bảng có ít cột hơn nhưng nhiều hàng hơn?
Ví dụ: Một người dùng có thể đăng một bản cập nhật trên tường của họ hoặc trong một nhóm.
Hai thiết kế cơ sở dữ liệu tôi có thể nghĩ đến là:
Thiết kế 1
UserPosts
- Tôi
- tên người dùng
- bài đăng
- ngày giờ
Nhóm người dùng :
- Tôi
- Id nhóm
- tên người dùng
- bài đăng
- ngày giờ
Vấn đề tiềm ẩn : Có thể yêu cầu tham gia, có thể (trong tương lai) là một truy vấn chậm.
Thiết kế 2
Bài viết :
- Tôi
- tên người dùng
- Id nhóm
- bài đăng
- datetime (trong đó groupid sẽ là null nếu người dùng đăng lên tường của họ)
Vấn đề tiềm ẩn : Vòng lặp trên tập dữ liệu lớn có thể mất một thời gian (dài).
Làm thế nào tôi có thể có hiệu suất tốt hơn khi dữ liệu tăng? Có cách nào khác (tốt hơn) không?