Tôi đang tạo API RESTful. Tôi đang đấu tranh để quyết định cách tốt nhất để thiết kế các bảng cơ sở dữ liệu của mình xung quanh các tài nguyên của tôi.
Ban đầu, tôi mặc dù một bảng cho mỗi tài nguyên sẽ là một cách tốt để đi, nhưng bây giờ tôi lo lắng rằng điều này sẽ dẫn đến các bảng lớn hơn theo cấp số nhân khi tiếp tục đi xuống chuỗi tài nguyên mà bạn đi.
Ví dụ, hãy tưởng tượng tôi có ba tài nguyên - người dùng, khách hàng, bán hàng. Người dùng là người đăng ký với api của tôi, khách hàng là khách hàng của người dùng và bán hàng là các giao dịch mua của mỗi khách hàng đối với tài khoản người dùng.
Một tài nguyên bán hàng được truy cập như sau
GET /users/{userID}/clients/{clientID}/sales/{salesID}
Vì vậy, nếu có 10 người dùng, mỗi người có 10 khách hàng và với mỗi khách hàng có 10 doanh số, kích thước bảng sẽ càng lớn hơn trong chuỗi tài nguyên mà chúng tôi đi.
Tôi khá tự tin rằng SQL có thể đối phó với các bảng lớn, nhưng tôi không chắc cách đọc và viết sẽ làm mọi thứ chậm lại. Ví dụ trên có thể không minh họa điều đó, nhưng api của tôi sẽ ngày càng viết nhiều hơn và đọc tiếp theo chuỗi tài nguyên mà chúng ta đi. Do đó, tôi có kịch bản trong đó các bảng lớn nhất trong cơ sở dữ liệu của tôi, sẽ được đọc và ghi nhiều lần hơn các bảng nhỏ hơn.
Cũng cần phải tham gia các bảng trước khi chạy truy vấn. Lý do là tôi cho phép mỗi người dùng có một khách hàng có cùng tên. Để tránh nhận dữ liệu khách hàng sai, bảng người dùng và bảng khách hàng được nối bởi {userID}. Đây cũng là trường hợp để bán hàng. Sẽ tham gia các bảng lớn và chạy đọc và viết những thứ chậm hơn nữa?