Hướng dẫn thiết kế cơ sở dữ liệu website bán hàng

Đối những Coder mới bắt đầu thì việc hiểu và khởi tạo được cơ sở dữ liệu (CSDL) không phải là chuyện đơn giản. Taowebsite hôm nay xin chia sẻ cách thiết kế CSDL cho website bán hàng

Lời mở đầu về thiết kế CSDL website bán hàng

Bạn đang có ý định muốn làm 1 website bán sản phẩm mà chưa có định hướng làm thế nào, cơ sở dữ liệu của nó gồm những gì và làm cái gì trước? Qua bài này viết mình muốn các bạn có thể trả lời phần nào có những thắc mắc trên. Và đây là bài đầu tiên trong series hướng dẫn làm website bán hàng và thanh toán trực tuyến của mình. Các bạn hãy xem các bài trong series này để có thể tự làm được 1 website bán hàng và thanh toán trực tuyến nhé.
– Với mình để làm 1 website bất kỳ nào đó điều đầu tiên mình quan tâm đó chính là chức năng chính của website làm về cái này,quy trình nghiệp vụ và xử lý sẽ thế nào?Trước tiên chúng ta cần trả lời được những câu hỏi đó thì mới bắt tay vào thiết kế website được.Nếu các bạn hiểu sai yêu cầu hoặc chức năng của website sẽ dẫn tới tình trạng làm sai dẫn tới phải chỉnh sửa nhiều hoặc làm chức năng không được tối ưu.
– Và bước tiếp theo của chúng ta sẽ phải làm gì đây?Đối với những công ty lập trình thì thường phân biệt rõ công việc cho từng người,từng bộ phận ví dụ người chuyên về bên phân tích thiết kế hệ thống,người chuyển làm giao diện và người chuyên code…Ở phương diện chúng ta là lập trình viên không những cần biết code mà còn biết phân tích thiết kế hệ thống cũng như biết 1 chút về làm giao diện (html và css).Và nhất là đối với các bạn đang nghiên cứu về lập trình website thì tất nhiên tất cả công việc trên các bạn cần tự làm rồi.Hôm nay mình sẽ hướng dẫn cho các bạn về phần đầu tiên đó chính là làm cơ sở diệu (CSDL) cho website bán hàng ở mức độ đơn giản nhất (sau này quen rồi các bạn có thể tự phát triển lên).
– Trước tiên vào làm về cơ sở dữ liệu thì các bạn cần biết website của chúng ta quản lý gì? mình xin đưa ra những yêu cầu cơ bản nhất cần có ở 1 website bán sản phẩm đó chính là:
Quản trị viên
Danh mục sản phẩm
Sản phẩm
Đơ hàng
Giao dịch
Thành viên
….
Ngoài ra còn rất nhiều các chức năng khác cần quản lý,nhưng ban đầu chúng ta cứ xây dựng 1 cơ sở dữ liệu ở mức độ đơn giản đã.
– Các bạn có thể sử dụng lệnh hoặc vào trực tiếp phpMyadmin để tạo các bảng và các trương dữ liệu
Chú ý: nếu bạn nào theo dõi loạt series hướng dẫn làm website bán hàng này thì cần chú ý kỹ các bảng,chức năng và các trường dữ liệu này,vì trong tất cả các bài hướng dẫn mình đều sử dụng tới 1 trong các bảng này.

Hướng dẫn tạo cơ sở dữ liệu(CSDL) cho web bán hàng

1. Xây dựng bảng quản trị website (admin)

1
2
3
4
5
6
7
CREATE TABLE IF NOT EXISTS `admin` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(32) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
  `password` varchar(32) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
  `name` varchar(128) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=6 ;
– Với bảng quản trị này chúng ta cần lưu các trường thông tin :
  1. id : khóa chính và trường dữ liệu này mình để tự tăng
  2. name: họ tên
  3. username: tên đăng nhập
  4. password: mật khẩu
Và kết quả sẽ được như hình phía dưới.

2. Xây dựng thành viên (user)

1
2
3
4
5
6
7
8
9
10
CREATE TABLE IF NOT EXISTS `user` (
  `id` int(255) NOT NULL AUTO_INCREMENT,
  `name` varchar(50) COLLATE utf8_unicode_ci NOT NULL,
  `email` varchar(50) COLLATE utf8_unicode_ci NOT NULL,
  `phone` varchar(15) COLLATE utf8_unicode_ci NOT NULL,
  `address` varchar(128) COLLATE utf8_unicode_ci NOT NULL,
  `password` varchar(40) COLLATE utf8_unicode_ci NOT NULL,
  `created` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=19 ;
– Bảng này để lưu các thành viên của website,với bảng thành viên này chúng ta cần lưu các trường thông tin :
  1. id : khóa chính
  2. name: họ tên
  3. email: email,sử dụng để đăng nhập
  4. password: mật khẩu đăng nhập
  5. address: địa chỉ
  6. created: thời điểm đăng ký thành viên

3. Xây dựng bảng danh mục sản phẩm (catalog)

1
2
3
4
5
6
7
CREATE TABLE IF NOT EXISTS `catalog` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(128) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  `parent_id` int(11) NOT NULL DEFAULT '0',
  `sort_order` tinyint(4) NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=24 ;
– Với bảng danh mục sản phẩm này chúng ta cần lưu các trường thông tin :
  1. id : khóa chính và trường dữ liệu này mình để tự tăng
  2. name: tên danh mục
  3. parent_id: id của danh mục cha,vì danh mục sẽ được phân theo nhiều cấp,tạm thời mình gọi là cha con nhé ?
  4. sort_order: vị trí sắp xếp(hiển thị),cái này không quan trong mấy
Và kết quả sẽ được như hình phía dưới.

4. Xây dựng bảng sản phẩm (product)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
CREATE TABLE IF NOT EXISTS `product` (
  `id` int(255) NOT NULL AUTO_INCREMENT,
  `catalog_id` int(11) NOT NULL,
  `name` varchar(100) COLLATE utf8_unicode_ci NOT NULL,
  `price` decimal(15,4) NOT NULL DEFAULT '0.0000',
  `content` text COLLATE utf8_unicode_ci NOT NULL,
  `discount` int(11) NOT NULL,
  `image_link` varchar(50) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
  `image_list` text COLLATE utf8_unicode_ci NOT NULL,
  `created` int(11) NOT NULL DEFAULT '0',
  `view` int(11) NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`),
  FULLTEXT KEY `name` (`name`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=16 ;
– Với bảng sản phẩm này chúng ta cần lưu các trường thông tin :
  1. id : khóa chính và trường dữ liệu này mình để tự tăng
  2. catalog_id: id của danh mục sản phẩm,vì 1 sản phẩm phải thuộc 1 danh mục nào đó
  3. name: tên sản phẩm
  4. price: giá của sản phẩm
  5. discount: lưu chiết khấu, giảm giá
  6. price: giá của sản phẩm
  7. image_link: lưu link file ảnh minh họa cho sản phẩm
  8. image_list: lưu danh sách link file ảnh kèm theo cho sản phẩm
  9. created: thời điểm tạo sản phẩm
  10. view: lượt xem sản phẩm này
….Ngoài ra còn rất nhiều các trường dữ liệu hoặc các bảng khác liên quan tới việc lưu thông tin sản phẩm như,quà tặng,khuyến mãi,thuộc tính…Những phần này các bạn có thể phát triển thêm
Và kết quả sẽ được như hình phía dưới.
Xây dựng bảng lưu thông tin sản phẩm

5. Xây dựng bảng giao dịch (transaction)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
CREATE TABLE IF NOT EXISTS `transaction` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `status` tinyint(4) NOT NULL DEFAULT '0',
  `user_id` int(11) NOT NULL DEFAULT '0',
  `user_name` varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  `user_email` varchar(50) COLLATE utf8_bin NOT NULL,
  `user_phone` varchar(20) COLLATE utf8_bin NOT NULL,
  `amount` decimal(15,4) NOT NULL DEFAULT '0.0000',
  `payment` varchar(32) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  `payment_info` text COLLATE utf8_bin NOT NULL,
  `message` varchar(255) COLLATE utf8_bin NOT NULL,
  `security` varchar(16) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  `created` int(11) NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=7 ;
– Đây là bảng rất quan trọng và không thể thiếu trong 1 website thương mại điện tử thanh toán trực tuyến,bảng này có chức năng lưu thông tin của toàn bộ giao dịch trên website. Với bảng giao dịch này chúng ta cần lưu các trường thông tin :
  1. id : khóa chính và trường dữ liệu này mình để tự tăng
  2. status: lưu trạng thái của giao dịch,dựa vào trạng thái này để biết giao dịch đã thanh toán thành công chưa,ví dụ 1 là thành công,0 là chưa thanh toán
  3. user_id: id của thành viên mua hàng,nếu khách không có tài khoản thì trương này không cần lưu
  4. user_name: tên của khách hàng
  5. user_email: email của khách hàng
  6. user_phone: số điện thoại của khách hàng
  7. amount: tổng số tiền cần thanh toán,và đây chính là tổng số tiền chúng ta gửi sang bên cổng thanh toán
  8. payment: tên cổng thanh toán mà khách hàng chọn để thanh toán
  9. payment_info: toàn bộ thông trả về từ bên cổng thanh toán gủi cho chúng ta
  10. message: nội dung yêu cầu của khách hàng
  11. security: mã bảo mật cho giao dịch,1 số cổng thanh toán ta cần gửi mã bảo mật
  12. created: thời điểm tạo giao dịch,dựa vào trường này mà chúng ta hoàn toàn có thể làm thống kê cáo cáo doanh thu theo thời gian
Khi sang chức năng mua hàng và thanh toán trực tuyến hoặc thống kê báo cáo chúng ta sẽ phải làm việc nhiều với bảng này.
Và kết quả chúng ta sẽ có bẳng dữ liệu sau:
Bảng lưu thông tin giao dịch của website

6. Xây dựng bảng đơn hàng (order)

1
2
3
4
5
6
7
8
9
10
CREATE TABLE IF NOT EXISTS `order` (
  `transaction_id` int(255) NOT NULL,
  `id` int(255) NOT NULL AUTO_INCREMENT,
  `product_id` int(255) NOT NULL,
  `qty` int(11) NOT NULL DEFAULT '0',
  `amount` decimal(15,4) NOT NULL DEFAULT '0.0000',
  `data` text COLLATE utf8_bin NOT NULL,
  `status` tinyint(4) NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=6 ;

– Ở trên chúng ta đã có bảng giao dịch rồi vậy còn bảng đơn hàng ở đây để làm gì nhỉ?đây chính là bảng lưu chi tiết của giao dịch,1 giao dịch có thể có nhiều đơn hàng,ví dụ trong giỏ hàng của bạn mua 2 loại sản phẩm là 1 cái tivi và 2 cái điện thoại,lúc này trong bảng giao dịch chỉ có 1 dòng dữ liệu duy nhất,nhưng trong bảng đơn hàng này sẽ có thêm 2 đong dữ liệu.Và chi tiết các thông tin trong bảng này cần lưu như sau:

  1. id : khóa chính và trường dữ liệu này mình để tự tăng
  2. transaction_id: id của giao dịch,1 giao dịch có thể có nhiều đơn hàng và 1 đơn hàng phải thuộc 1 giao dịch nào đó.
  3. product_id: id của sản phẩm
  4. qty: số lượng sản phẩm trong đơn hàng,như ví dụ trên thì với tivi thì qty = 1,và điện thoại thì qty = 2
  5. amount: số tiền của đơn hàng,các bạn lưu ý là số tiền(amount) trong bảng giao dịch sẽ bằng tổng số tiền trong bảng đơn hàng tương ứng nhé
  6. data: lưu dữ liệu nào đó mà bạn muốn
  7. status: đây chính là trạng thái của đơn hàng,và trạng thái này cho chúng ta biết sản phẩm của đơn hàng này đã được gửi cho khách chưa,ví dụ status = 1 là đã gửi,status = 0 là chưa gửi hàng cho khách
….Các bạn cần phân biệt chính xác amount và status trong bảng transaction và amount và status trong bảng order nhé.
Và kết quả sẽ được như hình phía dưới:
Bảng lưu thông tin đơn hàng

Kết luận

Qua bài này mình đã hướng dẫn các bạn làm cơ sở dữ liệu(CSDL) ở mức độ cơ bản nhất đối với website bán hàng.Các bạn có thể phát triển thêm các bảng khác như bảng liên hệ,tin tức…CSDL của bài hướng dẫn các bạn có thể download

Viết một bình luận

0 Shares
Share
Tweet
Pin