Đố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
CONTENTS:
Lời mở đầu về thiết kế CSDL website bán hàng
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 ; |
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
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 ; |
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
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 ; |
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
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 ; |
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

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 ; |
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
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 ; |
– Ở 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:
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
amount và status
trong bảng transaction và amount và status
trong bảng order nhé.
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