30/09/2018, 23:51

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 ạ.

Khoa Nguyen viết 02:00 ngày 01/10/2018

Free style bạn nhé 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.

Pete Houston viết 01:52 ngày 01/10/2018

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.

Itachi Citus viết 01:55 ngày 01/10/2018

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

Chou Pham viết 02:00 ngày 01/10/2018

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

Le Hoai viết 01:56 ngày 01/10/2018

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
Jo Ker viết 02:05 ngày 01/10/2018

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.

Le Hoai viết 01:58 ngày 01/10/2018

Ban thong ke trong bang order luon

Jo Ker viết 02:02 ngày 01/10/2018

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.

Le Hoai viết 01:51 ngày 01/10/2018

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)

Jo Ker viết 02:02 ngày 01/10/2018

Ủ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.

Le Hoai viết 02:04 ngày 01/10/2018

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

Bài liên quan
0