Thiết kế mô hình cho cơ sở dữ liệu NoSql

Em có thắc mắc là các mô hình csdl quan hệ như Oracle hay SQL server…thì có nhiều mô hình thiết kế như ERD, OMT… Vậy các anh cho em hỏi là các csdl nosql như Firebase hay Mongodb thì có thể thiết kế như các mô hình kia hay không ạ.

Free style bạn nhé :wink: Thiết kế document cho phù hợp với với nhu cầu sử dụng. Nói chung là với NoSQL thì câu hỏi đặt ra khi thiết kế là: Ứng dụng của bạn cần những thông tin gì cùng lúc thì cho nó vào cùng document.

2 Likes

Dùng NoSQL chỉ quan tâm là:

  • Tôi định lưu cái gì?
  • Tôi dùng chúng khi nào?

Chẳng có rule gì hết.

2 Likes

Bạn dùng ERD cũng được :slight_smile:, nó khá tương đồng với cách lưu trữ của mongodb.

1 Like

Bác có thể cho em xin ví dụ được không ạ ?

Nosql ko có khái niệm table và relationship nên dữ liệu rất thoải mái. Nói 1 cách dễ hiểu thì nó lưu key value và value thường là json. Bạn thích put cái j vào cũng được.
Tuy nhiên cũng có 1 số tip

  • json ko nên lồng nhau quá nhiều
  • bỏ tư tưởng ràng buộc, chấp nhận dư thừa dữ liệu để đánh đổi tốc độ. Vd trong “table” Oder bạn lưu luôn thông tin customer, sau này đỡ phải join
1 Like

Lưu vậy sau này phát sinh những yêu cầu như thống kê order theo customer thì đâu có được bạn.

Ban thong ke trong bang order luon

Thống kê trong order luôn là sao mình chưa hiểu.
Theo suy nghĩ của mình là việc bạn lưu customer trong order thì về logic mỗi khi tạo 1 order thì bạn cũng tạo luôn một customer gắn với order đó, nghĩa là bạn không thể thống kê order theo customer được vì mỗi customer chỉ gắn với một order.

Sao lại ko nhỉ?
Bạn thống kê order theo customer thì trong bảng order đã có customerId rồi. Hoàn toàn có thể thống kê được. Với lại khi tạo order thì vẫn tạo customer trong bảng customer, order trong bảng order, chỉ là trong order thì có 1 số field của customer mà thôi. (ID , Name).
Giả sử bạn cần thống kê theo customer xxx
Select * from order where order.customerID = xxx hoặc
Select sum(money) from order group by customerID… (Mình viết sql cho bạn dễ hiểu)

1 Like

Ủa mình đâu thấy bạn đề cập bảng customer, mà như vậy bạn vẫn phải dùng đến join nếu có thay đổi. Vậy đâu khác gì mô hình rationship.

Mình ko hiểu ý bạn lắm. Mình làm vd đó có phải join j đâu?

vẫn join được mà b, có kiểu join 2 bảng theo mongodb :v

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