Thiết kế cơ sở dữ liệu cho website bán hàng? Chắc hẳn có rất nhiều người không biết cơ sở dữ liệu cho website bán hàng là gì? Thiết kê như nào là hợp lí nhất.

Đố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. Tôi xin chia sẻ cách tạo CSDL cho website bán hàng. Trong bài viết này tôi sẽ chia sẻ cho các bạn. Mong rằng sau khi đọc song bài viết này cac bạn có thể tạo cho 1 website bán hàng 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.
Trước tiên khi làm về cơ sở dữ liệu thì bạn cần biết vài trò quả mình là gì trong website: Quản trị viên,… Ở đây tôi sẽ đưa ra những yếu tố cơ bản cần có khi thiết kế website bán hàng: Quản trị viên, sản phẩm, danh mục sản phẩm…
Ngoài ra còn có rất nhiều những chắc năng quản lí khác nhưng bây giờ việc làm của chúng ta là xây dựng cơ sở dữ liệu:
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é.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ể download
Đây là những kiến thức mà chúng tôi muốn chia sẻ với bạn mong rằng nó sẽ giúp ích cho bạn. Nếu còn thắc mắc nào khác hãy cmt phía dưới để có câu trả lời nhanh nhất nhé.
Leave a Reply