Vấn đề về xây dựng database

Hiện tại em muốn xây dựng một ứng dụng quản lý sinh viên sử dụng NoSQL, gồm 2 đối tượng là SinhVien và LopHoc, em đang phân vân việc xây dựng database cho 2 thằng theo kiểu nào để tối ưu quá trình đọc ghi dữ liệu:

  • kiểu 1: SinhVien chứa danh sách lớp học mà SinhVien đó tham gia
  • kiểu 2: LopHoc chứa danh sách SinhVien học trong lớp học đó
  • kiểu 3: SinhVien chứa danh sách LopHoc, LopHoc chứa danh sách SinhVien

Nếu theo kiểu 1 thì khi hiển thị SinhVien theo LopHoc, ta phải duyệt từng SinhVien để kiểm tra có học lớp đó hay không, nếu chỉ có 20 SinhVien trong lớp đó nhưng có tổng cộng 1000 SinhVien thì vẫn phải duyệt 1000 lần, theo kiểu 2 thì ngược lại.

Nếu theo kiểu 3 thì lấy dữ liệu nhanh, nhưng ghi thì phải phải ghi ở 2 bảng, cộng thêm việc trùng lặp dữ liệu

Mọi người cho em hỏi còn cách nào tối ưu hơn không ạ

1 Like

Bạn đã sử dụng NoSQL thì nên chấp nhận trùng lặp dữ liệu. Còn về mặt thiết kế, nếu 2 dữ liệu trỏ đến nhau thì nên dùng RMDB, dùng NoSQL là lấy kéo để gọt hoa quả rồi :))

10 Likes

Cảm ơn bạn nhá!!!

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?