THIẾT KẾ CƠ SỞ DỮ LIỆU WEBSITE BÁN HÀNG

Bài viết này tôi đã mô tả quá trình thiết kế cơ sở dữ liệu quan hệ cho một shop bán hàng trực tuyến thực hiện công nỗ lực dbdiagram.io, sau cùng sinh mã SQL vào cơ sở dữ liệu MySQL. Siêu thị b

1. Hãy đối chiếu kỹ trước khi dùng công cụ

Thiết kế quan hệ nam nữ bảng bằng công thế đôi khi đem về hưng phấn nào đó cho tương đối nhiều lập trình viên, nó cũng như hacker bắt đầu vào nghề cài đặt ngón tay gõ trên terminal vậy. Hãy bình tĩnh, chính sách chỉ là máy yếu, chúng ta hãy với mọi người trong nhà phân tích nhiệm vụ bằng lời. Một web site bán hàng trực tuyến đường có:Bảng product chứa tin tức sản phẩm. Bảng này có một vài cột luôn chắc hẳn rằng có nhưng lại id, name, description, madein, manufacturer. Phần tin tức thuộc tính sản phẩm sẽ rất rượu cồn tuỳ vào từng sản phẩm cụ thể. Truyền ảnh có kích cỡ đường chéo cánh tính theo inch, có độ phân giải HD, FullHD, 2K, 4K. Tủ lạnh lẽo thì lại có dung tích tính bằng lít, có hay là không có khả năng inverter, điều hoà thì có nhân tài diệt khuẩn bởi ion, hoặc lọc ko khí bởi màng HEPA....Bảng category để phân loại sản phẩm product. Một vài web site đơn giản và dễ dàng chỉ có 1 cấp độ phân loại. Nhưng một vài web site có danh mục sản phẩm rất lớn, rất có thể có đến 3 lever phân loại.Bảng customer lưu tin tức khách hàng. Nếu hệ thống có một bảng user để lưu tất cả thông tin người tiêu dùng đăng nhập. Thì bảng customer là 1 trong những subset của user. Mà lại nếu website site ko yêu cầu người tiêu dùng phải tạo tài khoản mà vẫn cài được sản phẩm thì chúng ta sẽ lưu lại thông tin người sử dụng trực tiếp trong phần deals order.Bảng orders lưu thông tin hiện tại của 1-1 hàng. Tôi cố ý đặt tên bảng là orders chứ không phải là order vì chưng trong câu lệnh SQL order là một trong những key word tương quan đến sắp xếp dữ liệu. Đơn sản phẩm bị huỷ thì không được xoá, mà lại đặt trạng thái huỷ.Bảng lineitem: một giao dịch có thể có không ít hơn một khía cạnh hàng.Bảng order_action: lưu lại mọi hành động của công ty liên quan lại đến solo hàng: đặt hàng, sửa giao dịch (thêm giảm mặt hàng, đổi add giao hàng), huỷ đối chọi hàng. Chú ý bảng orders chỉ là nơi lưu tin tức hiện tại sau cuối của 1-1 hàng. Nó ship hàng mục đích báo cáo.

Bạn đang xem: Thiết kế cơ sở dữ liệu website bán hàng

2. Những bài bác toán thực tiễn cần giải quyết

Nếu bạn muốn phát triển một website site bán hàng cho nhiều một số loại mặt hàng, thì bạn cần đương đầu với nhiều thách thức thì thiết kế:Bài toán 1 (No SQL): làm thế nào sản phẩm có thể lưu linh hoạt các thuộc tính thành phầm và tìm tìm được sản phẩm theo từng nằm trong tính.Bài toán 2 (Price History): Một sản phẩm có giá biến hóa theo thời gian. Khách hàng hàng đặt hàng ở thời gian nào, thì lúc giao dịch thanh toán phải theo giá lúc để hàng. Nếu dịp thanh toán, giá sản phẩm tăng, người sử dụng sẽ vui bởi vì mua được lúc giá rẻ. Tuy vậy khi giá sản phẩm có khuyến mại chắc hẳn rằng khách hàng sẽ không vui, hoàn toàn có thể chỉ thanh toán giao dịch bằng đúng giá hiện tại khi đã giảm.Bài toán 3 (Race to lớn Order): vào kho, 1 mặt hàng bán khôn cùng chạy chỉ từ 1 đơn vị. Rất nhiều người tiêu dùng cùng thực hiện đặt hàng. Từ khi để hàng, cho tới lúc thanh toán giao dịch thành công gồm một khoảng thời gian từ 2 phút (thanh toán trực tuyến) mang đến 2 ngày (chuyển khoản không giống ngân hàng vào ngày cuối tuần). Lúc quý khách đặt, kho vẫn báo còn hàng. Nhưng mà khi thanh toán giao dịch thành công, kho không đủ hàng, vậy tính sao?Sẽ còn nhiều bài toán thách thức nếu chỉ thực hiện CSDL thì không thể giải quyết và xử lý triệt để. Do đó cần an toàn với tế bào hình xây dựng database centric (mô hình hoá mọi nhiệm vụ bằng quan hệ những bảng trong cơ sở dữ liệu quan hệ).

3. Thi công CSDL bởi dbdiagram.io

Xây dựng áp dụng lớn cần bước đầu mô hình nhỏ. Trước tiên bọn họ thử nghiệm với tế bào hình nhỏ dại đủ cho một shop bán hàng online cá nhân. Tiếp đến sẽ bổ sung dần những tính năng, không độc nhất thiết phải bằng CSDL, mà sử dụng đến các công nghệ khác nhằm tránh chứng trạng database centric design (thiết kế lấy cơ sở dữ liệu làm trung tâm). Tôi sử dụng dbdiagram.io nuốm vì các công núm kéo thả xây đắp khác vì:Kiểm soát kiến tạo bằng code luôn chính xácMiễn phíThiết kế trực tiếp trên trình duyệtXuất ra PDF, PNG, MySQL, Postgresql, MSSQL ServerSản phẩm made in Việt nam. Chất lượng và trải nghiệm cực tốt.

4. Product và những bảng liên quan

Một sản phẩm được cung cấp (made in) tại một nước. Một nước sản xuất những sản phẩm.

Xem thêm: 101+ Mẫu Lan Can Sắt Mỹ Thuật Hiện Đại Được Ưa Chuộng Hiện Nay

Table sản phẩm id int name varchar description varchar madein varchar(2) country.code> price intTable country code varchar(2) name varchar

Một thành phầm cần lưu lại lại lịch sử dân tộc giá theo thời gian

Một thành phầm sẽ có danh sách bạn dạng ghi gía biến động theo thời gian. Ngôi trường product.price phản ảnh giá update lần cuối cùng.Table product_price id int product_id int product.id> price int created_at datetime

Một sản phẩm có không ít ảnh, video, file hướng dẫn áp dụng PDF

Bảng product_media vẫn chứa tin tức ảnh, video, file dạng PDF.Table product_media id int product_id int product.id> uri varchar media_type MediaTypeEnum MediaType photo video clip PDF

Một thành phầm do một công ty sản xuất

Cần riêng biệt rõ nhà thêm vào với bên phân phối. Ví dụ Tivi mi 65 inch vị Xiaomi sản xuất. Lúc nhập khẩu về VN, có thể nhiều rộng một công ty nhập khẩu - phân phối. Phía bạn mua, bọn họ chỉ quan tâm hãng sản xuất. Còn cùng với shop, cần thân thiết nhà nhập khẩu nhằm đảm báo giá giỏi nhất, bao gồm hàng khi cần và thiết yếu sách bh tốt.Nhà sản xuất thành lập và hoạt động và bao gồm trụ sở bao gồm ở một quốc gia X. Nhưng mà sản phẩm hoàn toàn có thể được chế tạo ở giang sơn Y != X.Table sản phẩm id int name varchar mô tả tìm kiếm varchar madein varchar(2) country.code> price int manufacturer int manufacturer.id>Table country code varchar(2) name varchar Table manufacturer id int name varchar country varchar(2) country.code>

Phân loại sản phẩm

Trên hình ảnh web site bán hàng, chúng ta thường thấy danh mục dạng 1 cấp cho hoặc 2, 3 cấp cho để chia bé dại danh mục hơn. Vấn đề xây dựng danh mục cực kỳ quan trọng. Hạng mục dễ hiểu, phân loại phải chăng giúp người sử dụng tìm kiếm thành phầm dễ dàng, tốn ít lần dịch rời sâu.Một thành phầm gắn với độc nhất vô nhị một phân loạiMột sản phẩm có thể nhiều phần loại. Một phân loại thì bao hàm nhiều sản phẩm.

Sản phẩm liên quan

Khi khách hàng hàng lựa chọn một sản phẩm A, web sit cần lưu ý sản phẩm B, C, D hay được thiết lập cùng, hoặc là cách đẩy hàng tốn kho, hoặc khuyến mãi.Bia --> Mực, snack nhắmTivi --> đầu phân phát Smart TiviLều --> Bàn, ghế dã ngoại, bếp nấu dã ngoạiBikini --> đồn đãi bơi, SUP, kem phòng nắngTable suggest_prodct product_id int product.id> suggest_id int product.id>

Lưu những thuộc tính rượu cồn của bảng Product

1. Sử dụng bảng giữ property name với property value

Một product sẽ có không ít product_properties tương ứng.Tủ lạnh"dung tích (lít)", integer, "400""inverter", bool, "true""điện áp (vôn)", array, "220"Tivi"kích thước (inches)", integer, "65""USB 2.0", integer, "2""Bluetooth", bool, "true""HDMI", integer, "3""OS", string, "Android""điện áp (vôn)", array, "110", "220"Ô tô"động cơ", string, "diesel""chuyển động", string, "2 cầu""cấp hộp số", integer, "6"Enum PropertyType 0 1 2 3 4 Table product_properies id int product_id int product.id> key varchar value varchar type PropertyTypeKết trái mã SQL chế tạo ra bảng làCREATE TABLE `product_properies` ( `id` int PRIMARY KEY AUTO_INCREMENT, `product_id` int, `key` varchar(255) NOT NULL, `value` varchar(255) NOT NULL, `type` ENUM ("0", "1", "2", "3", "4"));

2. Dùng dynamics column hoặc JSON column vào MySQL

Kiểu JSON trong MySQLA Practical Guide to MySQL JSON Data Type By ExampleDynamic Columns

3. Phối kết hợp MongoDB với MySQL

Chúng ta rất có thể sử dụng MongoDB để lưu thông tin động

Tham khảo

Ví dụ mẫu của dbdiagram.io

Many to lớn Many Relationship