- vừa được xem lúc

Thiết kế NoSQL ecommerce: Schema website ForCat Shop - Viblo

0 0 25

Người đăng: Bunny Kitty

Theo Viblo Asia

Giới thiệu:

MongoDB là một hệ quản trị cơ sở dữ liệu NoSQL phổ biến được sử dụng để lưu trữ dữ liệu phi cấu trúc và linh hoạt. Nó cung cấp khả năng mở rộng cao, hiệu suất tốt và dễ sử dụng, khiến nó trở thành lựa chọn lý tưởng cho nhiều ứng dụng hiện đại. Bài viết này sẽ hướng dẫn bạn cách xây dựng cơ sở dữ liệu NoSQL cho MongoDB, bao gồm thiết kế schema đầy đủ và sơ đồ schema. Chúng ta sẽ lấy ví dụ về website bán hàng thương mại điện tử, bạn có thể tham khảo website tại: https://www.forcatshop.com/ image.png

1. Các bước Thiết kế Schema:

B1: Xác định các yêu cầu:

Bước đầu tiên là xác định các yêu cầu của ứng dụng của bạn. Điều này bao gồm các loại dữ liệu bạn cần lưu trữ, các mối quan hệ giữa các dữ liệu và các truy vấn bạn cần thực hiện.

B2. Xác định các collection:

MongoDB sử dụng các collection để lưu trữ dữ liệu. Mỗi bộ sưu tập tương tự như một bảng trong cơ sở dữ liệu quan hệ, nhưng nó có thể lưu trữ dữ liệu phi cấu trúc.

B3. Thiết kế fields:

Mỗi fields trong bộ sưu tập là một đối tượng JSON lưu trữ dữ liệu cho một thực thể duy nhất. Cấu trúc của tài liệu nên phù hợp với các yêu cầu của ứng dụng của bạn.

B4. Xác định các mối quan hệ:

MongoDB hỗ trợ các mối quan hệ nhúng và tham chiếu để liên kết các tài liệu với nhau.

2. Thiết kế Schema:

Hầu hết với những trang thương mại điện tử sẽ có 3 collection chúng ta cần quan tâm như sau.

2.1. Schema Product

Xét 1 Product cần các yêu cầu sau:

Yêu cầu Cách giải quyết
Các thông tin cơ bản như: Name,... Để các trường như bình thường
Thông tin chi tiết kỹ thuật: chiều dài, rộng, cao,xuất sứ, chất liệu,... Để trường là một mảng chứa các object. Mỗi object sẽ có hai thuộc tính là {name, value}
Danh sách các bình luận: mongoDB chỉ cho phép 1 collection có tối đa 16Mb, việc chứa hết toàn bộ review trên collection Product là không thể Tham khảo từ trang web chính thức của mongoDB, để tránh One to Squillions, tức là danh sách bình luận là mảng vô hạn, nó luôn tăng dần theo thời gian, nên chúng ta cần tạo 1 collection Reviews để chứa được các bình luận của sản phẩm
Cần có 1 truy vấn nhanh có thể hiển thị ra 10 bình luận gần nhất trong một lần tải trang Chúng ta có thể nghĩ sẽ truy vấn trên collection Reviews để lấy dữ liệu bình luận cho sản phẩm, đây là một cách, nhưng nó không tối ưu. Cho dù chúng ta truy vấn bằng Id, hay limit dữ liệu trả về là một con số nào đó (ví dụ 10) nhưng mongoDB vẫn phải truy vấn hết toàn bộ dữ liệu trên collection. Hãy tưởng tượng có 1 triệu dữ liệu trên collection Reviews, thời gian truy vấn sẽ rất là lâu. Cách để giải quyết đó chính là tạo một trường currentReviews chứa 10 reviews gần nhất, khi người dùng tải trang sản phẩm thì họ cx có thể thấy các bình luận một cách nhanh nhất. Nếu như người dùng muốn tìm các bình luận lâu hơn thì bắt buộc phải chờ :<<

Ta có thiết kê Schema Product như sau: image.png

2.2. Schema User

Xét 1 User cần các yêu cầu sau:

Yêu cầu Cách giải quyết
Các thông tin cơ bản như: Username, password, name, age, ... Để các trường như bình thường
Thông tin địa chỉ: Tỉnh, huyện, xã, ... Để các trường là object
Phân quyền: admin/customer Tạo một thuộc tính role để xác tđịnh người dùng
Giỏ hàng: Danh sách các sản phẩm Với noSQL ta có thể cho các danh sách sản phẩm trong giỏ hàng của người dùng ngay trong collection User, thay vì tạo một table Cart như SQL
Đơn hàng gần đây: Cần truy vấn nhanh để ra được danh sách các đơn hàng gần đây Tạo một biến currentOrder để chứa các đơn hàng gần nhất, phục vụ cho truy vấn

Ta có thiết kê Schema User như sau: image.png

2.3. Schema Order

Tương tự với collection Order, ta có thiết kê Schema User như sau: image.png

2.4. Bảng thiết kế đầy đủ

Bảng thiết kế cho một website thương mại điển tử đơn giản như sau: image.png

3. Kết luận

Các phương pháp thiết kế trên đây chỉ mang tính chất tham khảo, hãy lựa chọn phương pháp tổ chức thật tốt để phục vụ cho website của bạn nhé. Nếu như bạn có cách thiết kế tốt hơn, hãy chia sẻ nhé!!!

Bình luận

Bài viết tương tự

- vừa được xem lúc

TÌM HIỂU VỀ MONGODB

. 1. Định nghĩa về MongoDB. . MongoDB là một cơ sở dữ liệu mã nguồn mở và là cơ sở dữ liệu NoSQL(*) hàng đầu, được hàng triệu người sử dụng.

0 0 44

- vừa được xem lúc

Mongo DB cho người mới bắt đầu !

Lời nói đầu. Gần đây, mình mới bắt đầu nghiên cứu và sử dụng mongo db nên có chút kiến thức cơ bản về Mongo muốn share và note ra đây coi như để nhở (Biết đâu sẽ có ích cho ai đó).

0 0 36

- vừa được xem lúc

Áp dụng kiến trúc 3 Layer Architecture vào project NodeJS

The problem encountered. Các framework nodejs phổ biết như Express cho phép chúng ta dễ dàng tạo ra Resful API xử lí các request từ phía client một cách nhanh chóng và linh hoạt.

0 0 80

- vừa được xem lúc

Mongo DB cho người mới bắt đầu ! (P2)

Lời nói đầu. Gần đây, mình mới bắt đầu nghiên cứu và sử dụng mongo db nên có chút kiến thức cơ bản về Mongo muốn share và note ra đây coi như để nhở (Biết đâu sẽ có ích cho ai đó).

0 0 183

- vừa được xem lúc

Xây dựng CRUD RESTful API sử dụng Node, Express, MongoDB.

Introduction. Trong phạm vi bài viết này chúng ta sẽ cùng tìm hiểu về cách tạo restful api với Node, Express và MongoDB. . Xử lý các hoạt động crud.

0 0 226

- vừa được xem lúc

MongoDB là gì? Cơ sở dữ liệu phi quan hệ

Bài viết này mình sẽ giúp các bạn có cái nhìn tổng quan về MongoDB. Chúng ta không lạ gì với cơ sở dữ liệu quan hệ, còn với cơ sở dữ liệu phi quan hệ thì sao? MEAN stack (MongoDB, Express, AngularJS,

0 0 53