Đối những Codeer mới bắt đầu thì việc hiểu và khởi tạo được CSDL không phải là chuyện đơn giản. ANZ xin chia sẻ cách tạo CSDL cho 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 :
id
: khóa chính và trường dữ liệu này mình để tự tăngname
: họ tênusername
: tên đăng nhậppassword
: 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 :
id
: khóa chínhname
: họ tênemail
: email,sử dụng để đăng nhậppassword
: mật khẩu đăng nhậpaddress
: địa chỉcreated
: thời điểm đăng ký thành viên
Và kết quả sẽ được như hình phía dưới.
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 :
id
: khóa chính và trường dữ liệu này mình để tự tăngname
: tên danh mụcparent_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é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 :
id
: khóa chính và trường dữ liệu này mình để tự tăngcatalog_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 đóname
: tên sản phẩmprice
: giá của sản phẩmdiscount
: lưu chiết khấu, giảm giáprice
: giá của sản phẩmimage_link
: lưu link file ảnh minh họa cho sản phẩmimage_list
: lưu danh sách link file ảnh kèm theo cho sản phẩmcreated
: thời điểm tạo sản phẩmview
: 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.
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 :
id
: khóa chính và trường dữ liệu này mình để tự tăngstatus
: 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ánuser_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ưuuser_name
: tên của khách hànguser_email
: email của khách hànguser_phone
: số điện thoại của khách hàngamount
: 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ánpayment
: tên cổng thanh toán mà khách hàng chọn để thanh toánpayment_info
: toàn bộ thông trả về từ bên cổng thanh toán gủi cho chúng tamessage
: nội dung yêu cầu của khách hàngsecurity
: 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ậtcreated
: 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:
Và kết quả chúng ta sẽ có bẳng dữ liệu sau:
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 ; |
id
: khóa chính và trường dữ liệu này mình để tự tăngtransaction_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 đó.product_id
: id của sản phẩmqty
: 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 = 2amount
: 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édata
: lưu dữ liệu nào đó mà bạn muốnstatus
: đâ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
Và kết quả sẽ được như hình phía dưới.
– Kết thúc bài viết: 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ể downloadamount 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.
tại sao 1 giao dịch có nhiều đơn hàng nhỉ, có vd thực tế ko ạ ?
Trả lờiXóaví dụ bạn chọn mua 1 ipad, 1 iphone cùng lúc thì 2 cái đó là 2 cái đơn hàng, còn gộp 2 cái đó lại là 1 cái giao dịch của bạn
XóaLàm vớ làm vẩn đã làm thì phải làm cho nó chuẩn, nhìn cái db chán ỉa
Trả lờiXóahướng dẫn mua hàng tam thất bắc
Trả lờiXóa