TRÖÔØNG ÑAÏI HOÏC VOÕ TRÖÔØNG TOAÛN KHOA CÔNG NGHỆ THÔNG TIN
LUẬN VĂN TỐT NGHIỆP SO SÁNH MONGODB VÀ MYSQL
ỨNG DỤNG VÀO XÂY DỰNG WEBSITE
BÁN SÁCH TRỰC TUYẾN
Giáo viên hướng dẫn: Thạc sĩ Bùi Thị Hồng Phúc
Sinh viên thực hiện: Lê Hoàng Khánh MSSV: 0951190693 Lớp: ĐH-CNTT Khóa: 2 Hậu Giang – Năm 2013
LỜI CAM ĐOAN
Tôi xin cam đoan đây là công trình nghiên cứu và thực hiện đồ án tốt nghiệp của
riêng tôi, không sao chép từ các đồ án khác, nếu sai tôi xin chịu hoàn toàn trách nhiệm
của khoa và nhà trường đề ra.
Sinh viên thực hiện
Lê Hoàng Khánh
i
LỜI CẢM TẠ
Để hoàn thành được luận văn này, tôi đã nhận được sự giúp đỡ rất nhiều từ gia đình,
bạn bè và các thầy cô giáo. Tôi xin gởi lời cảm ơn chân thành đến tất cả mọi người.
Xin cảm ơn giáo viên hướng dẫn Bùi Thị Hồng Phúc-Giảng viên khoa CNTT trường
ĐH Võ Trường Toản đã nhiệt tình hướng dẫn, động viên và định hướng cho tôi thực
hiện toàn bộ luận văn. Xin gởi lời cám ơn đến tất cả các thầy cô giáo đã truyền dạy cho
tôi những kiến thức quý báo trong suốt những năm học vừa qua. Cảm ơn những người
thân, bạn bè đã ủng hộ, tạo điều kiện cho tôi có đủ thời gian và nghị lực đề hoàn thành
luận văn đúng thời hạn.
Sinh viên thực hiện
Lê Hoàng Khánh
ii
BẢN NHẬN XÉT LUẬN VĂN TỐT NGHIỆP
__________________________________________
Họ và tên người hướng dẫn: Bùi Thị Hồng Phúc Học vị: Thạc sĩ Chuyên ngành: Hệ Thống Thông tin Cơ quan công tác: Trường Đại Học Võ Trường Toản Họ và tên Mã số sinh viên Chuyên ngành Tên đề tài : Lê Hoàng Khánh : 0951190693 : Công Nghệ Thông Tin : So Sánh MongoDB và MySQL Ứng Dụng Vào Xây Dựng Website Bán Sách Trực Tuyến
NỘI DUNG NHẬN XÉT
1. Tính phù hợp của đề tài với chuyên ngành đào tạo: ............................................................................................................................. ............................................................................................................................. 2. Về hình thức: ............................................................................................................................. ............................................................................................................................. 3. Ý nghĩa khoa học, thực tiễn và tính cấp thiết của đề tài: ............................................................................................................................. ............................................................................................................................. 4. Độ tin cậy của số liệu và tính hiện đại của luận văn: ............................................................................................................................. ............................................................................................................................. 5. Nội dung và các kết quả đạt được: ............................................................................................................................. ............................................................................................................................. 6. Các nhận xét khác: ............................................................................................................................. ............................................................................................................................. 7. Kết luận: ............................................................................................................................. ............................................................................................................................. .............................................................................................................................
iii
………., ngày…… tháng …… năm… Người nhận xét (Ký và ghi rõ họ tên)
NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN
____________________________________________
........................................................................................................................ ........................................................................................................................ ........................................................................................................................ ........................................................................................................................ ........................................................................................................................ ........................................................................................................................ ........................................................................................................................ ........................................................................................................................ ........................................................................................................................ ........................................................................................................................ ........................................................................................................................ ........................................................................................................................ ........................................................................................................................ ........................................................................................................................ ........................................................................................................................ ........................................................................................................................ ........................................................................................................................ ........................................................................................................................ ........................................................................................................................ ........................................................................................................................ ........................................................................................................................ ........................................................................................................................ ........................................................................................................................ ........................................................................................................................ ........................................................................................................................ ........................................................................................................................ ........................................................................................................................ ........................................................................................................................
Hậu Giang, ngày …. tháng …. năm …
Giáo viên phản biện
iv
(Ký và ghi rõ họ tên)
MỤC LỤC
Trang
CHƯƠNG 1. TỔNG QUAN ................................................................................................ 1
1.1. ĐẶT VẤN ĐỀ ......................................................................................................... 1 1.2. LỊCH SỬ GIẢI QUYẾT VẤN ĐỀ......................................................................... 2 1.3 PHẠM VI ĐỀ TÀI.................................................................................................. 3 1.4 PHƯƠNG PHÁP NGHIÊN CỨU .......................................................................... 3
CHƯƠNG 2. CƠ SỞ LÝ THUYẾT..................................................................................... 4
2.1.1 2.1.2
2.2.1 2.2.2 2.2.3 2.2.4
2.3.1 2.3.2
2.5.1 2.5.2
2.1 GIỚI THIỆU VỀ NOSQL...................................................................................... 4 Giới thiệu...................................................................................................... 4 Đặc điểm....................................................................................................... 5 2.2 GIỚI THIỆU VỀ MONGODB............................................................................... 6 Giới thiệu...................................................................................................... 6 Các khái niệm............................................................................................... 7 Các đặc trưng............................................................................................... 9 Xây dựng hệ thống với MongoDB ............................................................... 9 2.3 TỔNG QUAN VỀ PHP ........................................................................................ 13 Giới thiệu.................................................................................................... 13 Các tính năng ............................................................................................. 13 2.4 PHP VÀ MONGODB ........................................................................................... 14 2.5 MYSQL................................................................................................................. 14 Giới thiệu.................................................................................................... 14 Tính năng ................................................................................................... 14 2.6 SƠ LƯỢC VỀ PHÂN TÍCH THIẾT KẾ HỆ THỐNG HƯỚNG ĐỐI TƯỢNG 17 Sơ đồ hoạt vụ.............................................................................................. 17 Sơ đồ lớp..................................................................................................... 20 Sơ đồ tương tác .......................................................................................... 23 Chuyển sơ đồ lớp sang các bảng trong cơ sở dữ liệu ................................ 27
2.6.1 2.6.2 2.6.3 2.6.4
CHƯƠNG 3. NỘI DUNG VÀ KẾT QUẢ NGHIÊN CỨU ............................................... 29
3.3.1 3.3.2
3.1. QUÁ TRÌNH TÌM HIỂU VÀ KHÁI QUÁT HỆ THỐNG.................................. 31 Tìm hiểu hoạt động trang web bán sách trực tuyến ................................. 31 3.1.1. 3.1.2. Khái quát hệ thống .................................................................................... 32 3.2 MÔ HÌNH HÓA ................................................................................................... 34 3.2.1 Mô hình trên MySQL ................................................................................ 34 3.2.2 Mô hình trên MongoDB............................................................................. 50 3.3 CHƯƠNG TRÌNH................................................................................................ 59 Sơ đồ tổng quan. ........................................................................................ 59 Giao diện và một số chức năng của trang web.......................................... 60 3.4 KẾT QUẢ ĐẠT ĐƯỢC........................................................................................ 64
KẾT LUẬN, ĐỀ NGHỊ VÀ HƯỚNG PHÁT TRIỂN..................................................... 65
1. KẾT LUẬN........................................................................................................... 65 2. HẠN CHẾ ............................................................................................................. 66 3. HƯỚNG PHÁT TRIỂN ....................................................................................... 66
v
DANH MỤC HÌNH
Trang
Hình 1. Biểu đồ so sánh hiệu suất hoạt động của MongoDB và SQL ................................. 2 Hình 2. Mô hình lưu trữ trên MongoDB ............................................................................. 6 Hình 3. Mô hình lưu trữ trên MySQL ................................................................................. 7 Hình 4. Các kí hiệu trong sơ đồ hoạt vụ. ........................................................................... 17 Hình 5. Quan hệ bao hàm................................................................................................... 18 Hình 6. Quan hệ mở rộng................................................................................................... 18 Hình 7. Quan hệ tổng quát hóa. ......................................................................................... 19 Hình 8. Quan hệ giữa các tác nhân. ................................................................................... 19 Hình 9. Kí hiệu lớp. ............................................................................................................ 20 Hình 10. Kí hiệu quan hệ liên kết giữa các lớp.................................................................. 22 Hình 11. Kí hiệu tính bội. ................................................................................................... 22 Hình 12. Ví dụ liên kết có ràng buộc.................................................................................. 23 Hình 13. Kí hiệu các dạng thông báo. ................................................................................ 25 Hình 14. Sơ đồ Use case tác nhân Khách hàng.................................................................. 34 Hình 15. Sơ đồ Use case tác nhân Quản trị viên................................................................ 35 Hình 16. Sơ đồ lớp Sách và quá trình đặt mua sách ......................................................... 39 Hình 17. Sơ đồ Quản lý khách hàng và Hóa đơn thanh toán............................................ 40 Hình 18. Sơ đồ lớp MongoDB ............................................................................................ 50 Hình 19. Lưu đồ giải thuật Đăng nhập .............................................................................. 54 Hình 20. Lưu đồ giải thuật Đăng ký thành viên. ............................................................... 55 Hình 21. Sơ đồ tuần tự đăng nhập. .................................................................................... 56 Hình 22. Sơ đồ tuần tự xóa giỏ hàng.................................................................................. 57 Hình 23. Sơ đồ tuần tự tìm kiếm theo tên sách.................................................................. 58 Hình 24. Sơ đồ tổng quan trang web.................................................................................. 59 Hình 25. Hướng trình bày trang web................................................................................. 60 Hình 26. Tổng thể trang web.............................................................................................. 61 Hình 27. Trang thông tin sách............................................................................................ 62 Hình 28. Trang đăng ký tài khoản. .................................................................................... 63 Hình 29. Trang quản lý giỏ hàng. ...................................................................................... 63
vi
DANH MỤC BẢNG
Trang
vii
Bảng 1. CÁC KHÁI NIỆM TRONG MONGODB VÀ MYSQL ...................... 7 Bảng 2. VÍ DỤ 1 ...................................................................................................... 10 Bảng 3. VÍ DỤ 2.1 ................................................................................................... 10 Bảng 4. VÍ DỤ 2.2 ................................................................................................... 10 Bảng 5. VÍ DỤ 3 ...................................................................................................... 11 Bảng 6. VÍ DỤ 4 ...................................................................................................... 12 Bảng 7. ĐÁNH GIÁ MONGODB VÀ MYSQL ................................................. 29 Bảng 8. KẾT QUẢ ĐO ĐƯỢC TRÊN MONGODB VÀ MYSQL.................. 30 Bảng 9. MÔ HÌNH VẬT LÝ KHÁCH HÀNG TRÊN MYSQL ....................42 Bảng 10. MÔ HÌNH VẬT LÝ NGƯỜI DÙNG TRÊN MYSQL....................43 Bảng 11. MÔ HÌNH VẬT LÝ HÓA ĐƠN TRÊN MYSQL ...........................44 Bảng 12. MÔ HÌNH VẬT LÝ GIỎ HÀNG TRÊN MYSQL .........................45 Bảng 13. MÔ HÌNH VẬT LÝ SÁCH TRÊN MYSQL...................................46 Bảng 14. MÔ HÌNH VẬT LÝ NHÀ XUẤT BẢN TRÊN MYSQL................47 Bảng 15. MÔ HÌNH VẬT LÝ DỊCH GIẢ TRÊN MYSQL ...........................47 Bảng 16. MÔ HÌNH VẬT LÝ DẠNG SÁCH TRÊN MYSQL ......................48 Bảng 17. MÔ HÌNH VẬT LÝ TÁC GIẢ TRÊN MYSQL ............................. 48 Bảng 18. MÔ HÌNH VẬT LÝ THỂ LOẠI TRÊN MYSQL ..........................48 Bảng 19. MÔ HÌNH VẬT LÝ ĐƠN HÀNG TRÊN MYSQL ........................49 Bảng 20. MÔ HÌNH VẬT LÝ SÁCH TRÊN MONGODB .............................. 51 Bảng 21. MÔ HÌNH VẬT LÝ ĐƠN HÀNG TRÊN MONGODB ................... 52 Bảng 22. MÔ HÌNH VẬT LÝ GIỎ HÀNG TRÊN MONGODB .................... 52 Bảng 23. MÔ HÌNH VẬT LÝ HÓA ĐƠN TRÊN MONGODB ...................... 53 Bảng 24. MÔ HÌNH VẬT LÝ KHÁCH HÀNG MONGODB ......................... 53 Bảng 25. MÔ HÌNH VẬT LÝ NGƯỜI DÙNG MONGODB........................... 54
TÓM TẮT
Ngày nay, công nghệ ngày càng phát triển, đặc biệt là các trang web trực tuyến. Các
trang mạng xã hội, trang web cá nhân và các trang web mua bán được phát triển một
cách nhanh chóng, đi cùng với vấn đề lưu trữ và xây dựng hệ thống cơ sở dữ liệu.
Hiện tại có rất nhiều lựa chọn để xây dựng hệ thống cơ sở dữ liệu, mỗi một công
nghệ đều có điểm mạnh và yếu khác nhau. Trong số đó cơ sở dữ liệu không ràng buộc
được nhiều người quan tâm và nghiên cứu bởi các ưu điểm vượt trội của nó so với cơ
sở dữ liệu quan hệ truyền thống. Đề tài “So sánh MongoDB và MySQL ứng dụng vào
xây dựng website bán sách trực tuyến” xoáy sâu vào phân tích cách xây dựng hệ
thống dữ liệu của hai hệ quản trị cơ sở dữ liệu MongoDB và MySQL, từ đó tìm ra
những ưu thế và những cách lưu trữ tiến bộ hơn. Website bán sách sẽ là nền tảng để
làm cán cân so sánh giữa hai hệ quản trị cơ sở dữ liệu với các chức năng đăng nhập,
tìm kiếm sách, quản lý giỏ hàng,…
Trong suốt quá trình nghiên cứu và thực hiện, tôi đã vận dụng các kiến thức tích lũy
được trong những năm học và kinh nghiệm thực hiện các sơ đồ hệ thống thông tin
hướng đối tượng, lập trình PHP, JavaScript trên nền tảng cơ sở dữ liệu MySQL và
MongoDB.
Tôi hy vọng sẽ nhận được nhiều ý kiến đóng góp để đề tài nghiên cứu được hoàn
viii
thiện hơn!
ABSTRACT
Nowadays, information technology is development, special is online websites.
Social networking website, Persional website and Business website growing very fast,
with problems in store and database system building.
Currently, there are numerous methods to building database system, each of these
methods has different advantages and weaknesses. Non-Relational SQL is interesting
and researching by many companies and groups because its advantages more than
others. My thesis, “Comparing MongoDB and MySQL, applications on construction
sites selling books online” focus on the method to build database system between
MongoDB and MySQL. Building a website to sell book online is a practical
illustration for comparing between MongoDB and MySQL. The website has some
functions such as login, searching and manage cart…
With the knowledge I had from my school, experiences in building system module
by Object Information System Analysis Method and programing with PHP on MySQL
and MongoDB database though my thesis.
ix
I hope to get more comments to complete this thesis better!
CHƯƠNG I
TỔNG QUAN
1.1. ĐẶT VẤN ĐỀ
Ngày nay, sự phát triển của Internet và nhu cầu sử dụng tài nguyên ảo của con
người ngày càng cao, đặc biệt là nhu cầu lưu trữ thông tin. Từ những trang web cá
nhân đến các hệ thống mạng xã hội toàn cầu đều cần lưu trữ và khai thác thông tin một
cách tối ưu.
Với những hệ thống nhỏ như các trang web cá nhân hay các dịch vụ mua bán trực
tuyến thì hệ thống dữ liệu lưu trữ cần phải toàn vẹn, logic và đảm bảo ổn định. Còn
với các hệ thống mạng xã hội toàn cầu hay các hệ thống thông tin quốc gia, khi mà dữ
liệu lưu trữ khổng lồ cần một tài nguyên rộng lớn thì việc đảm bảo độ bảo mật và tốc
độ xử lý luôn được đề cao hàng đầu.
Đến đây, người ta yêu cầu một giải pháp có thể vừa đảm bảo sự linh hoạt trong việc
lưu trữ, vừa đảm bảo tốc độ truy xuất nhanh chóng. Có thể thấy, mô hình cơ sở dữ liệu
quan hệ đã giải quyết tốt các yêu cầu lưu trữ của hệ thống. Thế nhưng, liệu nó đã đáp
ứng được hết nhu cầu người dùng khi các thông tin ngày càng phức tạp và rời rạc
nhau? Và người ta đã bắt đầu nghiên cứu một cách lưu trữ thông tin mới – mô hình dữ
liệu không ràng buộc NoSQL(Not Only SQL).
Đề tài nghiên cứu về MongoDB, một trong những hệ quản trị cơ sở dữ liệu đặc
trưng của NoSQL, so sánh những đặc điểm của hệ quản trị mới này với hệ quản trị cơ
sở dữ liệu MySQL để xây dựng trang web bán sách trực tuyến. Quá trình nghiên cứu
sẽ tìm ra các điểm nổi bật, vượt trội của MongoDB, những điểm mới mà MySQL chưa
có. Đề tài sẽ so sánh MongoDB và MySQL trên các phương diện phân tích, thiết kế hệ
1
thống, xây dựng cơ sở dữ liệu và cách thức truy xuất dữ liệu trên trang web.
1.2. LỊCH SỬ GIẢI QUYẾT VẤN ĐỀ
Chúng ta có thể thấy, ngày nay càng có nhiều hệ thống sử dụng cơ sở dữ liệu không
ràng buộc thay thế cho phương pháp lưu trữ truyền thống. Điều này đã nói lên phần
nào lợi thế của nó.
NoSQL đặc biệt phổ dụng trong thời kì Web 2.0 bùng nổ, nơi các mạng dịch vụ
cộng đồng cho phép người dùng tạo ra hàng tỉ nội dung trên web, đánh dấu sự trưởng
thành của thế hệ database mới trong khi những sản phẩm phần mềm có thể đã được
phát triển trước đó từ rất lâu.
Với các trang web giao dịch trực tuyến, trước đó đã có rất nhiều phương pháp để
xây dựng và thiết kế hệ thống dữ liệu, nhưng vẫn còn những vấn đề phát sinh.
MongoDB đã được sử dụng vào các website mua bán nhưng vẫn chưa được phổ biến.
Đa số những trang web vẫn sử dụng cơ sở dữ liệu truyền thống.
2
Hình 1. Biểu đồ so sánh hiệu suất hoạt động của MongoDB và SQL
Kết quả nghiên cứu cho chúng ta thấy những mặt ưu điểm vượt trội của NoSQL.
Thế nhưng các kết quả được thực hiện trên các hệ thống lớn, phức tạp với lượng mẫu
tin lên đến hàng triệu. Liệu với những hệ thống vừa và nhỏ, với những dữ liệu có tính
toàn vẹn cao thì NoSQL có thể thay thế được cho cơ sở dữ liệu thông thường?
1.3 PHẠM VI ĐỀ TÀI
Chính những vấn đề phát sinh trong việc lựa chọn giữa NoSQL và cơ sở dữ liệu
quan hệ cùng với sự hấp dẫn của phương pháp lưu trữ mới nên em đã chọn và xây
dựng đề tài “So sánh MongoDB và MySQL ứng dụng vào xây dựng website bán sách
trực tuyến”. Đề tài nghiên cứu và so sánh MongoDB và MySQL ở các phương diện
phân tích và thiết kế hệ thống, xây dựng cơ sở dữ liệu cho trang web bán sách trực
tuyến. Trang web sẽ xây dựng trên cơ sở một nhà sách vừa và nhỏ, chủ yếu xoáy sâu
và hệ thống lưu trữ, truy xuất và tìm kiếm thông tin, về các phương thức thanh toán
sách cũng như các tiêu chí phân loại người dùng vẫn chưa được triển khai.
1.4 PHƯƠNG PHÁP NGHIÊN CỨU
Dựa trên quá trình nghiên cứu và phân tích hệ thống, cũng như tham khảo các hệ
thống bán sách của những nhà sách lớn để xây dựng trang web bán sách trên nền của
hai hệ quản trị cơ sở dữ liệu MongoDB và MySQL. Đồ án tập trung vào các điểm
mạnh của MongoDB để triển khai trên hệ thống trang web, tìm hiểu các phương thức
lưu trữ và truy xuất dữ liệu, từ các kết quả nghiên cứu sẽ rút ra được những điểm khác
3
nhau của MongoDB và MySQL.
CHƯƠNG 2
CƠ SỞ LÝ THUYẾT
2.1 GIỚI THIỆU VỀ NOSQL
2.1.1 Giới thiệu
Với sự phát triển ngày càng nhanh của các mạng xã hội Facebook, Google
Plus… kèm theo đó sẽ là lượng dữ liệu phát sinh ngày càng lớn và cập nhật liên tục,
cấu trúc dữ liệu tổ chức lưu trữ và mối quan hệ giữa chúng trở nên cồng kềnh, phức
tạp. Chính việc kiểm tra và đảm bảo các ràng buộc toàn vẹn trên dữ liệu, việc thực
hiện phép kết nối dữ liệu giữa quá nhiều bảng trên khối lượng dữ liệu khổng lồ đó
làm cho hiệu suất thực hiện của hệ thống không đáp ứng với kỳ vọng. Đội ngũ phát
triển mạng xã hội hay các hệ thống lớn tương tự, giờ đây đang đòi hỏi các hệ quản
trị cơ sở dữ liệu nhiều ở khả năng giảm thiểu tối đa các phép tính toán, các tác vụ
đọc-ghi liên quan, kết hợp với khả năng xử lý theo lô (batch processing). Bên cạnh
đó các thiết bị di động, các máy tính bảng,… với bộ nhớ và tốc độ xử lý thấp, còn
khi cần xử lý lượng dữ liệu lớn thì các hệ quản trị cơ sở dữ liệu quan hệ đòi hỏi cao
về phần cứng, do đó cũng có 1 đòi hỏi khác là các hệ quản trị cơ sở dữ liệu có thể
triển khai được trên các thiết bị di động và chỉ đòi hỏi về tài nguyên thấp. Xuất phát
từ các yêu cầu chính đó nên mô hình cơ sở dữ liệu NoSQL được ra đời và phát
triển.
Như tên gọi của nó, NoSQL (None-Relational SQL) là mô hình cơ sở dữ liệu
không quan hệ nên nó sẽ giảm thiểu được các phép tính toán, các kiểm tra ràng
buộc trên dữ liệu… do đó tốc độ đọc ghi nhanh, và yêu cầu thấp về phần cứng. Hiện
nay, các hệ quản trị cơ sở dữ liệu theo mô hình NoSQL này có thể kể
đến Cassandra của FaceBook, Dynamo của Amazon và BigTable của Google,
4
CouchDB, Hbase, MongoDB và Redis.
2.1.2 Đặc điểm
Looser consistency: NoSQL tổ chức lưu trữ và truy xuất dữ liệu theo cơ chế
“thoáng hơn trong đảm bảo tính nhất quán của dữ liệu” so với mô hình dữ liệu quan
hệ tryền thống nhằm cải thiện hiệu suất, đảm bảo dữ liệu luôn được đáp ứng tốt hơn
Eventual consistency: NoSQL không yêu cầu phải đảm bảo tính nhất quán của dữ
dữ liệu ngay tức thì mà sẽ hiện thực tính nhất quán của dữ liệu theo cơ chế lan
truyền. Ví dụ: Khi bạn đổi đổi avartar trên Facebook thì hình ảnh trên trang cá nhân
của bạn được đổi tức thì, còn trong danh sách bạn bè và trên trang chủ chưa được
cập nhật ngay.
Distributed storage: hay còn gọi là lưu trữ phân tán là thay vì dữ liệu được lưu
trữ trên một máy chủ duy nhất thì hệ thống sẽ lưu dữ liệu trên nhiều máy khác nhau.
Horizontal scalable: hay còn gọi là khả năng mở rộng chiều ngang. Bình thường,
với các hệ quản trị cơ sở dữ liệu quan hệ , khi mà dữ liệu quá lớn phương pháp tăng
khả năng lưu trữ là sẽ phải mở rộng (nâng cấp máy chủ), còn đối với NoSQL thì chỉ
cần bổ sung thêm máy chủ khác vì hệ thống hỗ trợ lưu trữ phân tán trên nhiều máy.
NoSQL là mã nguồn mở: điều này có nghĩa là bạn sẽ dễ dàng phát triển một ứng
dụng có sử dụng NoSQL mà không phải tốn chi phí license. Tuy nhiên, đây cũng
chính là nhược điểm của NoSQL.
Dễ mở rộng quy mô: NoSQL đã thay thế cách mở rộng quy mô truyền thống của
các hệ quản trị cơ sở dữ liệu quan hệ bằng hình thức “mở rộng ra ngoài”. Với hình
thức mở rộng đặc biệt này, thay vì phải bổ sung thêm các máy chủ lớn hơn vào hệ
thống khi dữ liệu lớn lên, thì NoSQL lại hỗ trợ doanh nghiệp phân tán dữ liệu qua
nhiều máy chủ khi dữ liệu gia tăng.
Hỗ trợ các mô hình dữ liệu khác nhau tuỳ mục đích và cách thức lưu trữ dữ liệu
5
như lưu kiểu key-value, BigTable, lưu Document hay lưu thông tin Graph
2.2 GIỚI THIỆU VỀ MONGODB
2.2.1 Giới thiệu
MongoDB là một hệ quản trị cơ sở dữ liệu mã nguồn mở “document-oriented”
NoSQL. Thay vì cách thức lưu trữ dữ liệu trong các bảng được thực hiện trong các
cơ sở dữ liệu quan hệ cổ điển thì MongoDB lưu trữ dữ liệu theo cấu trúc JSON với
đặc tính “shcemaless” (MongoDB gọi với định dạng là BSON), làm cho việc tương
tác với dữ liệu trong một số loại ứng dụng trở nên dễ dàng và nhanh hơn.
MongoDB được bắt đầu phát triển từ năm 2007 bởi 10Gen, và ngày nay đã trở
thành một hệ quản trị cơ sở dữ liệu phong phú về tính năng dành cho người dùng.
MongoDB được sử dụng bới MTV Networks, Craigslist, Foursquare… và đã có sẵn
trên các hệ điều hành Windows, Linux, OS X và Solaris. Phiên bản mới nhất của
MongoDB hiện tại là bản 2.4, tải về tại địa chỉ www.mongodb.org/downloads/.
MongoDB là một CSDL có khả năng mở rộng, hiệu suất cao, mã nguồn mở và
hướng văn bản. Với các ứng dụng có lượng ghi dữ liệu lớn thì MongoDB lại càng là
lựa chọn hợp lý.
Một ví dụ về cách thức lưu trữ trên MongoDB và MySQL.
6
Hình 2. Mô hình lưu trữ trên MongoDB
Hình 3. Mô hình lưu trữ trên MySQL
Tương tự như MySQL và các hệ quản trị cơ sở dữ liệu khác, MongoDB cũng có
các khái niệm như bảng(Collection), dòng dữ liệu(Documents)…
2.2.2 Các khái niệm
Bảng 1. CÁC KHÁI NIỆM TRONG MONGODB VÀ MYSQL
MongoDB MySQL
Database Database
Collection Table
Documents Rows
Fields Columns
Database bao gồm nhiều Collection, những mã nhúng javascript và một số thành
7
phần khác.
Mẫu tin (Document) là đơn vị cơ bản của dữ liệu trong MongoDB, nó tương
đương với một dòng trong cơ sở dữ liệu quan hệ.
Bộ sưu tập (Collection) có thể được coi như tương đương với một bảng.
MongoDB có thể lưu trữ nhiều CSDL độc lập, mỗi CSDL này có các bộ sưu tập
và điều khoản riêng của mình. MongoDB đi kèm với một trình tiện ích JavaScript
đơn giản nhưng mạnh mẽ, nó hữu ích trong quản trị và thao tác dữ liệu.
Mỗi văn bản có một khóa đặc biệt, đó là “_id”, nó là duy nhất trong bộ sưu tập
của văn bản.
Document là một khái niệm quan trọng trong MongoDB. Văn bản bao gồm tập
hợp các khóa với các giá trị tương ứng.
Ví dụ: {"TenSach" : "Van Hoc"}.
Văn bản trên gồm một khóa là “TenSach”, với giá trị là “Van Hoc”. Các văn bản
có thể chứa nhiều cặp khóa/giá trị.
Ví dụ: {"TenSach" : "Van Hoc", "Gia" : 30000}
Một số lưu ý:
Các cặp khóa/ giá trị trong văn bản được sắp xếp. Văn bản trên sẽ khác với văn
bản sau:
{"Gia" : 30000, "TenSach" : "Van Hoc"}
Khóa trong văn bản là một chuỗi. MongoDB phân biệt chữ hoa chữ thường.
Văn bản trong MongoDB không được chứa những khóa giống nhau. Ví dụ văn
bản sau là không hợp lệ
8
{"TenSach" : "MongoDB", "TenSach" : "Van Hoc"}
Bộ sưu tập là một nhóm các văn bản. Nếu văn bản tương đương với dòng trong
CSDL quan hệ thì bộ sưu tập tương đương với bảng.
Bộ sưu tập là một Schema-Free, nghĩa là các văn bản có hình dạng khác nhau có
thể cùng được lưu trữ trong 1 bộ sưu tập.
Ví dụ các văn bản sau có thể cùng được lưu trong một bộ sưu tập:
{"TenSach" : "Van Hoc"}
{"Gia" : 30000}
Bộ sưu tập được xác định bởi tên của nó là một chuỗi UTF-8.
2.2.3 Các đặc trưng
- Lưu trữ hướng tài liệu (document): document theo định dạng JSON với những
lược đồ lưu trữ linh hoạt.
- Hỗ trợ chỉ mục đầy đủ: chỉ mục trên bất kỳ các thuộc tính.
- Tính sẵn có của dữ liệu: mở rộng.
- Auto-sharding: mở rộng theo chiều ngang mà không ảnh hưởng đến chức năng.
- Truy vấn: đa dạng, truy vấn dựa trên văn bản.
- Cập nhật nhanh: Map/Reduce.
- GridFS: lưu trữ file với bất kỳ kích cỡ nào mà không làm phức tạp ngăn xếp.
- Hỗ trợ thương mại: hỗ trợ doanh nghiệp, đào tạo, tư vấn.
2.2.4 Xây dựng hệ thống với MongoDB
2.2.4.1 Cấu trúc dữ liệu
Ví dụ: Ta có một dòng dữ liệu muốn chèn vào với các thuộc tính chưa biết
trước. MongoDB sẽ tự động sinh bảng ứng với các cột là các thuộc tính thêm
vào.
doc=
9
{_id: "4c4b1476238d3b4dd5003981",
name: "le hoang khanh",
age:"22",
job: "Student"
}
Với ví dụ trên, ta đã có một bảng với định dạng tương ứng với cơ sở quan hệ
như sau:
Bảng 2. VÍ DỤ 1
id name age job
4c4b1476238d3b4dd5003981 le hoang 22 Student
khanh
Như đã trình bày, tính năng mở rộng của MongoDB rất hữu dụng. Giả sử ta có
một bảng dữ liệu về sách và có 4 trường thuộc tính là mã sách, tên, giá bán và
dịch giả. Vấn đề phát sinh là có những sách có dịch giả(sách nước ngoài) nhưng
một số lại không. Nếu trên cơ sở dữ liệu quan hệ, chúng ta phải tách ra như sau:
Bảng 3. VÍ DỤ 2.1
Mã sách Tên sách Giá bán
123 Tin học 10000
654 Kinh tế 15000
Bảng 4. VÍ DỤ 2.2
Mã dịch giả Mã sách Tên dịch giả
789 123 Nguyễn Văn A
Như vậy hệ thống sẽ trở nên phức tạp hơn khi lượng dữ liệu lớn và không
đồng nhất với nhau. Nhưng với MongoDB, vấn đề này được giải quyết một cách
10
đơn giản vì mỗi mẫu tin có thể chứa một mảng các giá trị. Ví dụ như:
Bảng 5. VÍ DỤ 3
Mã sách Tên sách Giá bán Dịch giả
123 Tin học 10000 Nguyễn Văn A
654 Kinh tế 15000
Ứng với Bảng 5, ta có câu lệnh chèn dữ liệu như sau:
doc=
{_id: "123",
Tensach: "Tin học",
Giaban:"10000",
Dichgia: "Nguyễn Văn A",
}
{_id: "654",
Tensach: "Kinh tế",
Giaban:"15000",
}
2.2.4.2 Các kiểu dữ liệu
- Kiểu chuỗi String: tất cả các chuỗi gửi đến cơ sở dữ liệu phải là UTF-8,
những chuỗi không hợp lệ sẽ không được lưu. Trong trường hợp muốn lưu chuỗi
không phải UTF-8, chúng ta có thể lưu dưới dạng nhị phân. Nếu muốn bỏ thiết
lập khi giải mã các chuỗi, chúng ta có thể dùng lệnh:
$MongoDB::BSON::utf8_flag_on = 0;
- Kiểu mảng Array: kiểu mảng phải được lưu dưới dạng tham khảo, ví dụ như
\@mang.
Ví dụ như:
11
{_id: "1238461247",
Ten: "Khanh",
Lop:"DHCNTT",
Ketquahoctap: {
_id: "2134873435",
Mon: "Toan",
Diem: "8"
}
{
_id: "2134555712",
Mon: "Van",
Diem: "5"
}
}
Bảng 6. VÍ DỤ 4
_id Ten Lop Ketquahoctap
1238461247 Khanh DHCNTT _id Mon Diem
2134873435 Toan 8
2134555712 Van 5
Trong ví dụ trên ta thấy, với mô tả như thế ta phải chia bảng ra để lưu trữ thì
12
MongoDB có thể thực hiện trên cùng một Document.
- Kiểu ngày Datetime: gói hỗ trợ Datetime sẽ được sử dụng khi truy vấn dữ
liệu dạng ngày tháng, và cơ sở dữ liệu sẽ lưu lại định dạng chuẩn. Lưu ý kiểu dữ
liệu datetime được khởi tạo khá chậm, do đó nên chuyển đổi và lưu dưới dạng số
để tiết kiệm thời gian hơn trong trường hợp các giá trị lớn.
- Kiểu Boolean: sẽ trả về 1 hoặc 0 tương ứng với true và false. Để sử dụng gói
hỗ trở kiểu boolean, chúng ta dùng câu lệnh boolean::true. Lưu ý là cơ sở dữ liệu
vẫn lưu dưới dạng boolean, như khi trả về là dạng integer 0 hoặc 1. Để thiết lập
kiểu trả về là boolean ta dùng câu lệnh: $MongoDB::BSON::use_boolean.
-Kiểu số: các dữ liệu có chứa số thập phân sẽ lưu dưới dạng double(64bit),
không chưa dấu chấm thập phân sẽ lưu dạng integer(32bit). Những giá trị
integer(64bit) sẽ được lưu dưới dạng double. Miền giá trị của kiểu số(ứng với 64
bit) là từ -9,223,372,036,854,775,808 đến +9,223,372,036,854,775,807.
2.3 TỔNG QUAN VỀ PHP
2.3.1 Giới thiệu
PHP-Personal Home Page là một ngôn ngữ lập trình cho phép chúng ta xây dựng
ứng dụng trên mạng internet tương tác với mọi cơ sở dữ liệu. Nói đơn giản hơn,
PHP là một ngôn ngữ dạng script thực thi trên webserver nhằm tạo ra trang web
động.
2.3.2 Các tính năng
- Mở rộng mạnh mẽ: dễ dàng phát triển và mở rộng module.
- Tốc độ xữ lý cao.
- Hỗ trợ nhiều máy chủ web, tương tác hầu hết các cơ sở dữ liệu.
13
- Bảo mật và cung cấp nhiều cấu trúc ngôn ngữ mới.
2.4 PHP VÀ MONGODB
Để có thể dùng ngôn ngữ PHP thao tác trên cơ sở dữ liệu MongoDB, chúng ta cần
phải cài đặt các gói hỗ trợ thêm. PHP Driver là gói hỗ trợ để giúp chúng ta tương tác
được trên MongoDB bằng ngôn ngữ PHP.
2.5 MYSQL
2.5.1 Giới thiệu
Với phạm vi của đề tài, chúng ta vẫn xây dựng website trên hệ quản trị cơ sở dữ
liệu MySQL.
MySQL là một hệ quản trị cơ sở dữ liệu nguồn mở được các nhà phát triển ưa
chuộng trong quá trình phát triển ứng dụng. MySQL là cơ sở dữ liệu có tốc độ cao,
ổn định và dễ sử dụng, rất thích hợp cho các ứng dụng có truy cập cơ sở dữ liệu trên
internet.
MySQL miễn phí hoàn toàn và chúng ta có thể tải về tại trang chủ MySQL.com
Thế nhưng để tiện lợi hơn trong quá trình thiết kế và lập trình PHP cho trang web
bán sách, chúng ta sẽ sử dụng WampServer.
2.5.2 Tính năng
- Tính linh hoạt:
Máy chủ cơ sở dữ liệu MySQL cung cấp đặc tính linh hoạt, có sức chứa để xử lý
các ứng dụng được nhúng sâu với dung lượng chỉ 1MB để chạy các kho dữ liệu đồ
sộ lên đến hàng terabytes thông tin. Sự linh hoạt về flatform là một đặc tính lớn của
MySQL với tất cả các phiên bản của Linux, Unix, và Windows đang được hỗ trợ.
Và dĩ nhiên, tính chất mã nguồn mở của MySQL cho phép sự tùy biến hoàn toàn
theo ý muốn để thêm vào các yêu cầu thích hợp cho database server.
- Tính thực thi cao:
Kiến trúc storage-engine cho phép các chuyên gia cơ sở dữ liệu cấu hình máy
chủ cơ sở dữ liệu MySQL đặc trưng cho các ứng dụng đặc thù. Dù ứng dụng là một
hệ thống xử lý giao dịch tốc độ cao hay web site dung lượng lớn phục vụ hàng triệu
yêu cầu mỗi ngày, MySQL có thể đáp ứng khả năng xử lý những đòi hỏi khắt khe
14
nhất của bất kì hệ thống nào. Với các tiện ích tải tốc độ cao, đặc biệt bộ nhớ caches,
và các cơ chế xử lý nâng cao khác, MySQL đưa ra tất cả các vũ khí cần phải có cho
các hệ thống doanh nghiệp khó tính ngày nay.
- Hỗ trợ giao dịch mạnh:
MySQL đưa ra một trong số những engine giao dịch cơ sở dữ liệu mạnh nhất trên
thị trường. Các đặc trưng bao gồm hỗ trợ giao dịch ACID hoàn thiện ( Atomic – tự
động, Consistent – thống nhất, Isolated – độc lập, Durable – bền vững), khóa mức
dòng không hạn chế, khả năng giao dịch được phân loại, và hỗ trợ giao dịch đa dạng
(multi-version) mà người đọc không bao giờ gây trở ngại cho người viết và ngược
lại. Tính toàn vẹn của dữ liệu cũng phải được bảo đảm trong suốt quá trình server
có hiệu lực, các mức giao dịch độc lập được chuyên môn hóa, và phát hiện khóa
chết ngay lập tức.
- Chế độ bảo mật:
Vì bảo mật dữ liệu cho một công ty là công việc số một của các chuyên gia về cơ
sở dữ liệu, MySQL đưa ra tính năng bảo mật đặc biệt chắc chắn dữ liệu sẽ được bảo
mật tuyệt đối. Trong việc xác nhận truy cập cơ sở dữ liệu, MySQL cung cấp các kĩ
thuật mạnh mà chắc chắn chỉ có người sử dụng đã được xác nhận mới có thể truy
nhập được vào server cơ sở dữ liệu, với khả năng này để chặn người dùng ngay từ
mức máy khách là điều có thể làm được. SSH và SSL cũng được hỗ trợ để chắc
chắn các kết nối được an toàn và bảo mật. Một đối tượng framework đặc quyền
được đưa ra mà người sử dụng chỉ có thể nhìn thấy dữ liệu, các hàm mã hóa và giải
mã dữ liệu mạnh chắc chắn rằng dữ liệu sẽ được bảo mật. Cuối cùng, tiện ích
backup và recovery cung cấp bởi MySQL và các hãng phần mềm thứ 3 cho phép
backup logic và vật lý hoàn thiện cũng như recovery toàn bộ hoặc tại một thời điểm
nào đó.
-Sự phát triển ứng dụng hỗn hợp:
Một trong số các lý do khiến cho MySQL là cơ sở dữ liệu mã nguồn mở phổ biến
nhất thế giới là nó cung cấp hỗ trợ hỗn hợp cho bất kì sự phát triển ứng dụng nào
cần. Trong cơ sở dữ liệu, hỗ trợ có thể được tìm thấy trong các stored procedure,
trigger, function, view, cursor, ANSI-standard SQL, và nhiều nữa. Với các ứng
15
dụng nhúng, thư viện plug-in có sẵn để nhúng vào cơ sở dữ liệu MySQL hỗ trợ
trong bất kì ứng dụng nào. MySQL cũng cung cấp các bộ kết nối như: ODBC,
JDBC, … để cho phép tất cả các form của ứng dụng sử dụng MySQL như một
server quản lí dữ liệu được ưu tiên.
- Dễ dàng quản lý:
MySQL trình diễn khả năng cài đặt nhanh đặc biệt với thời gian ở mức trung
bình từ lúc download phần mềm đến khi cài đặt hoàn thành chỉ mất chưa đầy 15
phút. Điều này đúng cho dù flatform là Microsoft Windows, Linux, Macintosh hay
Unix. Khi đã được cài đặt, tính năng tự quản lý như tự động mở rộng không gian, tự
khởi động lại, và cấu hình động sẵn sàng cho người quản trị cơ sở dữ liệu làm việc.
MySQL cũng cung cấp một bộ hoàn thiện các công cụ quản lý đồ họa cho phép một
DBA quản lý, sửa chữa, và điều khiển hoạt động của nhiều server MySQL từ một
máy trạm đơn. Nhiều công cụ của các hãng phần mềm thứ 3 cũng có sẵn trong
MySQL để điều khiển các tác vụ từ thiết kế dữ liệu và ETL, đến việc quản trị cơ sở
dữ liệu hoàn thiện, quản lý công việc, và thực hiện kiểm tra.
- Nơi lữu trữ Web và Data đáng tin cậy:
MySQL là nhà máy chuẩn cho các web sites phải trao đổi thường xuyên vì nó có
engine xử lý tốc độ cao, khả năng chèn dữ liệu nhanh ghê gớm, và hỗ trợ mạnh cho
các chức năng chuyên dụng của web như tìm kiếm văn bản nhanh. Những tính
năng này cũng được áp dụng cho môi trường lưu trữ dữ liệu mà MySQL tăng cường
đến hàng terabyte cho các server đơn. Các tính năng khác như bảng nhớ chính, cây
B và chỉ số băm, và bảng lưu trữ đã được cô lại để giảm các yêu cầu lưu trữ đến
80% làm cho MySQL trở thành lựa chọn tốt nhất cho cả ứng dụng web và các ứng
16
dụng doanh nghiệp.
2.6 SƠ LƯỢC VỀ PHÂN TÍCH THIẾT KẾ HỆ THỐNG HƯỚNG ĐỐI
TƯỢNG
Ngày nay, khi ngành công nghệ phần mềm phát triển nhanh chóng, các hệ thống
cũng sẽ dần trở nên phức tạp hơn rất nhiều. Khả năng nắm bắt và kiểm soát sự phức
tạp đó của chúng ta đi kèm với khả năng trình bày hệ thống một cách toàn diện- một
sự trình bày vượt ra ngoài giới hạn của những dòng lệch thô. Sự trình bày trực quan
luôn mang tính cốt yếu đối với quá trình phát triển của những hệ thống phức tạp.
2.6.1 Sơ đồ hoạt vụ
Các trường hợp sử dụng được gom lại trong các sơ đồ hoạt vụ, nhằm chỉ ra mối
liên hệ giữa các trường hợp sử dụng và các tác nhân. Những sơ đồ này cũng cho
phép biểu diễn sự phụ thuộc giữa các trường hợp sử dụng lẫn nhau hoặc giữa các
tác nhân lẫn nhau.
Hình 4. Các kí hiệu trong sơ đồ hoạt vụ.
a. Quan hệ giữa các trường hợp sử dụng trong sơ đồ hoạt vụ
17
- Quan hệ bao hàm:
Trường hợp sử dụng B được coi là “bao hàm” trường hợp sử dụng A nếu hành vi
mô tả B bao hàm hành vi mô tả A.
Hình 5. Quan hệ bao hàm.
- Quan hệ mở rộng:
Nếu hành vi của trường hợp sử dụng B có thể được mở rộng bởi hành vi của
trường hợp sử dụng A, ta nói A mở rộng B.
Một sự mở rộng thường phải chịu một điều kiện, điều kiện này được biểu diễn
dưới dạng một ghi chú (note) . Phải cho biết chính xác ở điểm nào của trường hợp
đang xét thì mở rộng nó.
Hình 6. Quan hệ mở rộng.
18
- Quan hệ tổng quát hóa:
Một trường hợp sử dụng A là một sự tổng quát hóa trường hợp sử dụng B nếu B
là một trường hợp đặc biệt của A.
Mối quan hệ tổng quát hóa sẽ được diễn dịch thành khái niệm thừa kế trong các
ngôn ngữ hướng đối tượng.
Ký hiệu: biểu diễn bằng mũi tên khối rỗng về trường hợp sử dụng tổng quát hơn.
Hình 7. Quan hệ tổng quát hóa.
- Quan hệ giữa các tác nhân:
Mối quan hệ duy nhất có thể có giữa các tác nhân là sự tổng quát hóa.
Một tác nhân A là một sự tổng quát hóa của B nếu A có thể được thay thế bởi B
trong mọi trường hợp sử dụng (chiều ngược lại không đúng).
Hình 8. Quan hệ giữa các tác nhân.
b. Một vài nguyên tắc mô tả sơ đồ hoạt vụ.
- Xác định tác nhân: Các tác nhân là những người sử dụng hệ thống. Không nên
quên những người sử dụng có trách nhiệm khai thác và bảo trì hệ thống thông tin.
Không kể đến những kỹ sư phần mềm cài đặt và tham số hóa phần mềm trước khi
19
sử dụng. Để dễ tìm các tác nhân,nên hình dung ra trước các biến của hệ thống. Tất
cả những ai, những gì sử dụng hệ thống và có tương tác với hệ thống là một tác
nhân.
- Các trường hợp sử dụng: Không có nguyên tắc duy nhất, cần đứng trên quan
điểm người sử dụng và xác định tác nhân đó được hệ thống phục vụ như thế nào?
Trong trường hợp nào tác nhân đó được sử dụng? Chức năng nào của hệ thống mà
tác nhân đó truy cập đến. Cần tránh dư thừa và cần có sự trừu tượng hóa hợp lý để
giảm bớt số trường hợp, ví dụ không nên cho một trường hợp chỉ sử dụng một thao
tác.
2.6.2 Sơ đồ lớp
Được xem là mô hình quan trọng nhất trong phân tích hệ thống hướng đối tượng,
dùng để mô tả cấu trúc bên trong, tĩnh của hệ thống.
Không dùng để chỉ ra cách thức làm thế nào sử dụng các tác tử(operation). Trách
nhiệm đó sẽ do sơ đồ tương tác thực hiện.
a. Lớp
Lớp là sự mô tả các đối tượng có cùng các đặc tính: cùng một ngữ nghĩa, có
chung các thuộc tính, các phương thức và các quan hệ.
Hình 9. Kí hiệu lớp.
b. Thuộc tính
Các thuộc tính biểu diễn các dữ liệu được bao gói trong các đối tượng của lớp
20
đang xét.
Một thuộc tính có thể được khởi tạo lúc khai báo. Ngữ pháp đầy đủ của thuộc
tính như sau:
tạo>] Trong dó: tương ứng. : các chỉ số tối thiểu và tối đa cho một mảng của kiểu vừa nói ở trên. c. Phương thức Hành vi của một đối tượng được mô hình hóa bằng một tập các phương thức. Người ta phân biệt đặc tả(specification, header) của phương thức với cài đặt (implementation) của nó. Tương ứng với mỗi đặc tả, có thể có nhiều cài đặt, nhưng với mỗi cài đặt chỉ tương ứng với một đặc tả duy nhất. Đặc tả còn được gọi là “operation”, còn cài đặt cụ thể được gọi là “method”. d. Quan hệ giữa các lớp - Liên kết: 21 Một liên kết biểu diễn mối liên hệ ngữ nghĩa bền vững giữa 2 lớp. Hình 10. Kí hiệu quan hệ liên kết giữa các lớp. Mũi tên để chỉ ý nghĩa chính xác của tên liên kết từ lớp bên trái sang lớp bên phải. “Vai trò” phía một lớp dùng để chỉ vai trò của lớp đó trong liên kết đối với lớp kia. Vai trò, mũi tên có thể được bỏ qua. - Tính bội: Ở hai đầu mối liên kết, phải có chỉ số để biểu diễn tính bội của liên kết, chính xác hơn là bản số(cardinality) của mỗi lớp tham gia vào liên kết. Chú ý: bản số của một lớp ở đầu này của liên kết được ký hiệu ở lớp đầu kia của liên kết. Hình 11. Kí hiệu tính bội. - Liên kết có ràng buộc: Việc thêm vào ràng buộc cho một hoặc nhiều liên kết mang lại nhiều thông tin hơn vì nó cho phép mô tả chính xác hơn tầm ảnh hưởng và chiều của liên kết.Các ràng buộc dược đặt trong dấu móc “{}” và có thể biểu diên bằng bất kỳ ngôn ngữ 22 nào. Hình 12. Ví dụ liên kết có ràng buộc. - Lớp liên kết: Khi phân tích, ta thấy có những thuộc tính không thể đặt vào được trong lớp thuần túy nào, mà phụ thuộc đồng thời vào nhiều lớp nối nhau qua một liên kết. Vì trong phân tích hệ thống hướng đối tượng, chỉ có lớp mới có thể chứa được thuộc tính nên liên kết này trở thành một lớp, gọi là lớp-liên kết. - Liên kết do suy diễn: Liên kết do suy diễn là liên kết được đặt điều kiện hoặc được suy diễn từ ít nhất một liên kết khác. Mặc dù nó tạo ra sự dư thừa, nhưng thực tế lại có ích nếu phải sử dụng nhiều liên kết mới có được kết quả như mong muốn. Ký hiệu: có dấu slash (“/”) trước tên liên kết. - Liên kết nhiều chiều: Trong UML, ít khi dùng liên kết nhiều chiều, mà thường giới hạn ở 2 chiều, đôi khi 3 chiều. Lý do là vì để xác định bản số của mỗi lớp khá khó khăn. Thường thì các liên kết nhiều chiều được chuyển sang dùng lớp-liên kết, hoặc nhiều liên kết 2 chiều. 2.6.3 Sơ đồ tương tác a. Định nghĩa -Tương tác: một tương tác định nghĩa hành vi của một hệ có cấu trúc (một hệthống con, một trường hợp sửdụng, một lớp, một thành tố, …) bằng cách đặc biệt chú trọng đến việc trao đổi các thông tin giữa các thể hiện (instances) của nó. - Sinh tuyến: một sinh tuyến biểu diễn một thành phần duy nhất (có thể tương ứng với một người ngoài thế giới thực, hoặc một đối tượng trong lớp dữ liệu) 23 tham gia vào một tương tác. - Sơ đồ tương tác: các sơ đồ tuần tự và sơ đồ liên lạc biểu diễn các tương tác giữa các sinh tuyến. Một sơ đồ tuần tự chỉ ra các tương tác dưới góc độ thời gian, đặc biệt là các chuỗi thông báo (messages) trao đổi nhau giữa các sinh tuyến, trong khi một sơ đồ liên lạc biểu diễn về mặt không gian của các sinh tuyến. Còn có dạng thứ ba của sơ đồ tương tác là sơ đồ thời gian nhằm mô hình hóa các hệ thống được khai thác dưới những điều kiện nghiêm ngặt về thời gian, chẳng hạn các hệ thống thời thực. Tuy nhiên, các sơ đồ tuần tự hoàn toàn có thể thực hiện chức năng này. b. Các dạng thông báo Các thông tin chủ yếu chứa trong sơ đồ tuần tự là các thông báo. Một thông báo định nghĩa một liên lạc giữa các sinh tuyến. Có nhiều dạng thông báo trong đó phổ biến nhất là dạng: - Gửi một tín hiệu: thông báo khởi động một phản ứng nơi đối tượng nhận một cách không đồng bộ và không cần đợi trả lời. - Kích hoạt thực hiện một thao tác trong một phương thức: đây là dạng thông báo được sử dụng nhiều nhất tronglập trình hướng đối tượng. Trong thực tế, đa số thông báo loại này là đồng bộ. Cũng có thể thực hiện thông báo dạng này một cách không đồng bộ qua các thread. 24 - Tạo hoặc hủy một thể hiện (đối tượng). Hình 13. Kí hiệu các dạng thông báo. c. Thông báo và sự kiện. UML phân biệt việc gửi với nhận các thông báo, cũng như phân biệt việc bắt đầu với việc kết thúc thực hiện một phản ứng. Các sự kiện (event) được dùng để đánh dấu từng giai đoạn. Dựa vào các sự kiện gửi và nhận, UML định nghĩa 3 kiểu thông báo: - Thông báo đầy đủ: các sự kiện gửi và nhận đều được biết. - Thông báo bị lạc: sự kiện gửi có được biết, nhưng sự kiện nhận thì không. - Thông báo tìm được: ngược lại, sự kiện nhận có được biết, nhưng sự kiện gửi thì không. d. Ngữ pháp của thông báo. - Thông báo gửi: Thông báo gửi có ngữ pháp sau đây: 25 Trong đó, danh sách các tham số cách nhau bởi dấu phẩy, và mỗi tham số có ngữ pháp như sau: Với thể sửa được (đọc/ghi). - Thông báo trả lời: Thông báo trả lời có ngữ pháp dưới đây: [ - Ràng buộc trên các sinh tuyến: Các sinh tuyến của một tương tác Ký hiệu: + Một ràng buộc được biểu diễn trên một sinh tuyến bằng một văn bản giữa dấu ({}). + Một ràng buộc cũng có thể được chứa trong một ghi chú gắn với thể hiện của sự kiện liên quan. e. Các kiểu phân đoạn của tương tác. - Rẽ nhánh: Có 2 từ khóa là : + « alt » (alternative)và “else’: rẽ nhánh 1 nếu điều kiện đúng và rẽ nhánh 2 nếu ngược lại. + « opt » (optional) : thực hiện hành vi tiếp theo nếu điều kiện đúng. - Vòng lặp: Sử dụng 2 từ khóa : + « loop » : có 3 trường hợp : Loop : lặp mãi đến khi có lệnh « break » 26 Loop <điều kiện> : còn lặp lại khi điều kiện còn thỏa Loop [ bước lặp theo chỉ số nhận trị từ Lưu ý : các biến trong điều kiện và các chỉ số phải được gán trị trước khi đặc tả loop. + « break » : để thoát ra khỏi vòng lặp. - Xử lý song song: Dùng từkhóa « par » (parallel). f. Các toán tửassert, ignore và consider. Các phép ignore và consider cho phép tập trung chú ý để mô hình hóa một số thông báo có thể được gửi trong một tương tác. ignore định nghĩa các thông báo có thể bỏ qua, còn consider định nghĩa các thông báo cần phải chú ý đến. Ngữ pháp: Các toán tử assert, ignore và consider được đặt sau tên của sơ đồ tuần tự, với ngữ pháp như sau : ignore { danh sách thông báo} consider { danh sách thông báo} g. Phân rã một sinh tuyến. Đôi khi, một tương tác quá phức tạp để có thể đưoc mô tả trong một sơ đồ thôi, nên ta có thể cắt một sinh tuyến ra trên nhiều sơ đồ. Một phần của sinh tuyến được phân rã ra sẽ được thay thế bằng một hình chữ nhật với từ khóa ref, và được trình bày ở sơ đồ khác. 2.6.4 Chuyển sơ đồ lớp sang các bảng trong cơ sở dữ liệu Chúng ta có các quy tắc sau: - Quy tắc 1: Một lớp chuyển thành một bảng. - Quy tắc 2: Một thuộc tính của một lớp sẽ chuyển thành một thuộc tính của một bảng. Đặc biệt một khóa trong một lớp sẽ chuyển thành khóa của bảng. - Quy tắc 3: Nếu trong một liên kết hai chiều, bản số về phía lớp thứ nhất là 1 thì 27 lớp đó sẽ được chuyển thành bảng thứ nhất theo quy tắc 2, còn lớp kia sẽ chuyển thành bảng thứ hai theo quy tắc 2 cộng thêm thuộc tính khóa của bảng thứ nhất làm khóa ngoài cho bảng thứ hai. - Quy tắc 4: Một liên kết hoặc một lớp liên kết giữa các lớp mà các bảng số không phải là 1 biến thành một bảng gồm tất cả các khóa của các lớp tham gia và các thuộc tính của lớp liên kết đó (nếu có). Các khóa này kết hợp lại thành khóa của bảng vừa được tạo ra.Mỗi lớp tham gia sẽ chuyển thành một bảng theo quy tắc 2. - Quy tắc 5: Một liên kết tự thân sẽ biến mất hay trở thành một bảng, tùy theo các bảng số của quan hệ đó. Nếu có một bản số là 1 thì xem quan hệ tự thân như quan hệ giữa hai lớp và áp dụng quy tắc 3.Nếu không có bản số nào là 1 thì áp dụng quy 28 tắc 4. Dựa trên các nghiên cứu và tìm hiểu về hai hệ quản trị cơ sở dữ liệu MongoDB và MySQL, chúng ta tổng kết được các điểm tương đồng cũng như khác biệt giữa hai hệ quản trị. Sau đây là bảng so sánh và đánh giá các điểm giống và khác nhau giữa MongoDB và MySQL: Bảng 7. ĐÁNH GIÁ MONGODB VÀ MYSQL MongoDB MySQL Về cấu trúc dữ liệu Không có khái niệm tạo bảng, bảng dữ Khi bắt đầu làm việc, người dùng sẽ tạo liệu sẽ được tự động sinh ra khi người và thiết kế các bảng dữ liệu theo cấu trúc dùng thêm dữ liệu vào, và cấu trúc của định trước bảng tùy vào các kiểu và thuộc tính của dữ liệu thêm. Trong MongoDB, các khóa chính được tự Truy xuất thông tin giữa các Bảng dữ liệu động thiết lập và liên hệ với nhau thông phải có các mối quan hệ thông qua các qua giá trị _id khóa chính và khóa ngoại. Không toàn vẹn dữ liệu Toàn vẹn dữ liệu Khả năng mở rộng bảng theo chiều ngang Mở rộng bảng theo chiều ngang giới hạn mà không làm ảnh hưởng đến cấu trúc trong cấu trúc bảng hoặc mở rộng thuộc bảng. tính giá trị bằng cách tạo các bảng liên kết mới. Việc thay đổi số node đơn giản, không Việc thay đổi số node phức tạp, phải làm ảnh hưởng đến hệ thống shutdown cả hệ thống Hỗ trợ bảng mã Unicode, tìm kiếm fulltext, Secondary index, Composite keys, Geospatial Indexs và không hỗ trợ biểu đồ cấu trúc cho bảng dữ liệu(Graph Support). Kích cỡ giá trị lớn nhất của một Kích cỡ lớn nhất của một dòng dữ liệu: 29 document: 16MB không xác định MongoDB MySQL Về các tính năng Hoàn toàn miễn phí sử dụng, được phát triển trên các hệ điều hành Windows, Mac OS, Linux. Hỗ trợ các loại ngôn ngữ lập trình: Java, Hỗ trợ các loại ngôn ngữ lập trình: Java, PHP, Ruby, C#, Python, JavaScript, C, C#, PHP, Ruby. Haskell, Perl, C++, Erlang, Scala, C, Go. Hỗ trợ lập bản đồ đối tượng-quan Không hỗ trợ hệ(ORM) Tính năng sao lưu dữ liệu cơ bản Hỗ trợ sao lưu dữ liệu tốt hơn với tính năng Snapshot Backup Hiệu suất đọc ghi tốt với mô hình xử lý lô Hiệu suất đọc ghi kém do thiết kế đảm và những tối ưu về đọc ghi dữ liệu bảo sự vào ra liên tục của dữ liệu Đòi hỏi cao về phần cứng Đòi hỏi thấp hơn về giá trị và tính đồng nhất của phần cứng Phù hợp với các cơ sở dữ liệu trung bình Phù hợp với những cơ sở dữ liệu tầm và lớn trung có quan hệ dữ liệu chặt chẽ. Với số lượng bảng dữ liệu lớn, cấu hình Cấu hình máy sẽ cung cấp một lượng máy chủ sẽ phân bố một lượng RAM hợp RAM có sẵn để truy xuất dữ liệu. Nếu cấu lý để truy xuất dữ liệu. hình MySQL không đúng có thể không đủ bộ nhớ RAM có sẵn. Một nghiên cứu thực hiện việc thêm dữ liệu vào MongoDB và MySQL trên 9 máy con sử dụng bộ vi xử lý ADM tốc độ 3.2GHz và máy chủ trung tâm có bộ xử lý ADM với 64GB RAM. Kết quả đo được: Bảng 8. KẾT QUẢ ĐO ĐƯỢC TRÊN MONGODB VÀ MYSQL DB/Matrix 128 256 512 Sizes Avg(ms) Total(s) Avg(ms) Total(s) Avg(ms) Total(s) 2.44 40 5.89 286 1.94 508 MySQL 30 0.18 3 0.31 20 0.53 140 MongoDB Trong chương này, chúng ta sẽ xây dựng sơ đồ use case, sơ đồ lớp, thiết kế các bảng dữ liệu dựa trên cơ sở lý thuyết đã trình bày và kết quả đã nghiên cứu. Trang web bán sách trực tuyến được xây dựng và thiết kế theo các mô hình này. 3.1. QUÁ TRÌNH TÌM HIỂU VÀ KHÁI QUÁT HỆ THỐNG 3.1.1. Tìm hiểu hoạt động trang web bán sách trực tuyến Đối với hệ thống các trang web bán hàng trực tuyến nói chung và trang web bán sách nói riêng, quá trình hoạt động sẽ xoay quanh các tiến trình sau: - Trình bày sản phẩm: sách sẽ được trình bày theo từng chỉ mục, thể loại hoặc giá bán để khách hàng có thể dễ dàng trong việc chọn lựa trước khi quyết định mua. Tùy theo từng cách trình bày có thể ảnh hưởng đến tâm lý người mua. Các hình ảnh minh họa và thông tin kèm theo cũng vô cùng quan trọng khi mà phương thức mua bán là trực tuyến và khách hàng chỉ dựa trên những thông tin cung cấp mà quyết định chọn mua hay không. - Các chức năng hỗ trợ: trong quá trình trình bày và chọn lựa sách, trang web sẽ hỗ trợ khách hàng tối đa các nhu cầu tìm kiếm, phân loại hoặc đề xuất các đầu sách tham khảo. Các tính năng hỗ trợ trực tuyến, hướng dẫn mua sách và chương trình ưu đãi là những phần quan trọng để thu hút người mua trong thời đại cạnh tranh công nghệ. - Thanh toán hàng hóa: đây là phần quan trọng của những trang web bán hàng. Khách hàng sẽ phải bắt buộc đăng kí làm thành viên để có tài khoản đăng nhập vào trang web thực hiện chức năng mua sản phẩm. Nếu chưa là thành viên, sẽ có chức năng đăng kí để khách hàng đăng kí làm thành viên. Có nhiều phương thức thanh toán trực tuyến hiện nay như thanh toán qua tài khoản tích lũy trên trang web, thanh toán qua thẻ tín dụng, thanh toán qua các tài khoản trực tuyến( Paypal, …). Một số các trang web thanh toán trực tiếp khi giao hàng. Phương thức vận chuyển cũng được nhiều khách hàng quan tâm. Có các phương thức vận chuyển như chuyển phát nhanh, vận chuyển hàng trong ngày hoặc giao hàng tận nơi. - Cập nhật hệ thống: quản trị viên sẽ là người trực tiếp can thiệp vào hệ thống 31 trang web. Các thông tin sản phẩm, nhập xuất hàng hóa, hóa đơn, thống kê, quản lý khách hàng và các chương trình ưu đãi,… sẽ được cập nhật thường xuyên nhằm duy trì hoạt động của trang web. Các thay đổi về nội dung bên trong hoặc hình thức trang trí bên ngoài cũng là một trong những yếu tố thu hút được khách hàng đến với website. Tùy theo quy mô hệ thống mà số lượng khách hàng và quản trị viên ít hay nhiều. Ngoài ra, các hoạt động bảo mật hệ thống, bão trì nâng cấp sẽ được đề cao hàng đầu. 3.1.2. Khái quát hệ thống a. Mục tiêu và đối tượng sử dụng Mục tiêu: giúp khách hàng dễ dàng trong việc tìm kiếm, lựa chọn và đặt mua các quyển sách với những thông tin và hình ảnh cụ thể, trực quan. Tạo một môi trường thuận lợi để khách hàng có thể lựa chọn theo từng đầu mục, thể loại, giá cả,nội dung vv… Người sử dụng: có 2 nhóm người dùng là quản trị viên và khách hàng. Khách hàng chia ra làm 2 nhóm: đã có tài khoản trên trang web và nhóm chưa có tài khoản. - Quản trị viên: Sắp xếp và đưa ra các danh mục sách theo các thể loại, nội dung, giá bán,vv…Cập nhật thông tin sách, tìm kiếm sách, thống kê số lượng sách bán và số lượng người dùng truy cập. Quản lý tài khoản khách hàng và quá trình oder sách. - Khách hàng chưa có tài khoản: tìm kiếm, xem thông tin sách. - Khách hàng có tài khoản: tìm kiếm, xem thông tin sách và đặt mua sách. b. Mô tả hoạt động của website Trang web được xây dựng nhằm đáp ứng nhu cầu tìm kiếm, lựa chọn và giao dịch sách của khách hàng. Quá trình hoạt động của website như sau: Người quản trị sẽ tiến hành đăng nhập vào hệ thống. Quản trị viên sẽ cập nhật thông tin sách theo mã sách, tên sách, giá bán, số lượng. Một quyển sách có thể có nhiều tác giả khác nhau. Thông tin tác giả được lưu trữ gồm số thứ tự, mã sách, tên tác giả. Mỗi quyển sách thuộc một thể loại nhất định, bao gồm số thứ 32 tự, mã sách, tên thể loại. Mỗi quyển sách có các thông tin như mã sách, năm xuất bản, kích thước, số trang, phụ kiện đi kèm, chất liệu in, tóm tắt nội dung và ảnh bìa. Việc nhập sách thực hiện thông qua thỏa thuận với nhà xuất bản. Hệ thống quản lý nhà xuất bản theo mã sách, tên nhà xuất bản, địa chỉ và số điện thoại. Sách sau khi được nhập vào sẽ trưng bày để khách hàng xem và chọn mua. Khách hàng có thể tìm kiếm sách theo tên sách, thể loại, nhà xuất bản, năm xuất bản, giá bán. Khi chọn được quyển sách ưng ý, khách hàng sẽ tiến hành mua sách. Hệ thống yêu cầu khách hàng phải là thành viên của trang web mới có thể giao dịch. Để đăng kí thành viên, khách hàng cần cung cấp họ và tên, địa chỉ email, tên đăng nhập và mật khẩu. Hệ thống sẽ quản lý khách hàng theo mã khách hàng, tên khách hàng, địa chỉ email, tên đăng nhập và mật khẩu. Khi đã có tài khoản và đăng nhập thành công, khách hàng sẽ có một giỏ hàng rỗng để mua sách. Khi chọn một quyển sách, sách sẽ được thêm vào giỏ hàng. Hệ thống sẽ quản lý thông tin giỏ hàng bao gồm số thứ tự, tên sách, giá bán, số lượng, ngày và tổng tiền. Khách hàng có thể xem và cập nhật thông tin về giỏ hàng của mình. Khi đã chọn xong, khách hàng tiến hành thanh toán giỏ hàng. Khi thanh toán, hệ thống sẽ có một hóa đơn bao gồm mã hóa đơn,mã khách hàng, ngày mua, tổng tiền và yêu cầu khách hàng nhập địa chỉ nhận hàng, tên người nhận hàng và số điện thoại. Khi đã xác nhận tất cả thông tin, sách sẽ được chuyển đến khách hàng và giỏ hàng được xóa rỗng. Hệ thống cũng sẽ cập nhật lại số lượng sách hiện có để thông báo cho người quản trị khi hết sách. Dựa trên tổng tiền thanh toán, khách hàng sẽ được liệt kê vào danh sách khách hàng thân thiết gồm mã khách hàng, tên khách hàng và nhóm khách hàng. Theo mỗi định kì, quản trị viên sẽ thống kê lại số lượng sách đã bán, những loại sách nào bán chạy, sách mới nhập hoặc sách tồn kho để điều chỉnh lại việc 33 nhập/xuất sách. 3.2 MÔ HÌNH HÓA 3.2.1 Mô hình trên MySQL 3.2.1.1 Sơ đồ Use case a. Sơ đồ Use case 34 Hình 14. Sơ đồ Use case tác nhân Khách hàng Hình 15. Sơ đồ Use case tác nhân Quản trị viên b. Đặc tả Use case Đăng nhập Là Use-Case thực hiện việc đăng nhập vào hệ thống. Yêu cầu: Khách hàng nhập vào tên đăng nhập và mật khẩu. Không hiển thị mật khẩu. Xuất thông báo khi đăng nhập thành công/ thất bại. Kiểm tra tài khoản đăng nhập, nếu là quản trị viên sẽ chuyển đến trang dành cho người quản trị, Nếu là khách hàng sẽ chuyển đến trang mua sắm của khách hàng. Sử dụng session để lưu tên khách hàng sau khi đăng nhập. Sau khi đăng nhập xong, phải hiển thị trạng thái giỏ hàng của khách hàng đăng nhập và không còn nút đăng ký. Cập nhật sách 35 Là Use case thực hiện việc thêm, sửa và xóa thông tin sách của người quản trị. Yêu cầu: Người quản trị sau khi đăng nhập thành công sẽ sử dụng chức năng cập nhật sách. ♦ Thêm sách: Quản trị viên nhập vào mã sách, tên sách, thể loại, tác giả, nhà xuất bản, năm xuất bản, giá bán, số lượng, các thông tin về sách. Sau khi thêm mới, sách sẽ được thêm vào và hiển thị trên website. Hệ thống sẽ cập nhật lại số lượng sách hiện tại sau khi thêm sách mới. ♦Cập nhật sách: Quản trị viên nhập vào mã sách để tiến hành chỉnh sửa thông tin sách. Các thông tin về sách sẽ được sửa đổi và lưu lại. Hệ thống sẽ cập nhật lại thông tin sách sau khi chỉnh sửa. ♦Xóa sách: Quản trị viên nhập vào mã sách để tiến hành xóa sách Sách sau khi xóa sẽ không còn hiển thị và hệ thống sẽ cập nhật lại số lượng sách hiện tại. Thống kê sách Là Use case thực hiện việc thống kê sách của người quản trị. Yêu cầu: Người quản trị đăng nhập thành công vào hệ thống. Thống kê lại số lượng sách hiện có trong hệ thống. Thống kê lại các sách được mua nhiều trong tuần/tháng. Thống kê lại các sách còn số lượng nhiều trong hệ thống. Hiển thị lên màn hình kết quả, số liệu thống kê. Đăng kí thành viên 36 Use case này mô tả qui trình đăng ký tài khoản của người dùng. Yêu cầu: Các thông tin đăng ký: họ và tên, địa chỉ emai, tên đăng nhập và mật khẩu. Tên đăng nhập chỉ được bao gồm chữ cái a-z và số từ 0-9. Mật khẩu ít nhất là 6 kí tự. Email phải được kiểm tra hợp lệ. Các thông tin yêu cầu nhập vào đầy đủ Thông báo khi có lỗi, đăng ký thành công, thất bại. Sau khi đăng ký thành công sẽ trở về trang đăng nhập ban đầu. Tìm kiếm sách Là Use case mô tả việc tìm kiếm sách của khách hàng theo các tiêu chí nào đó. Yêu cầu: Các tiêu chí tìm kiếm ♦ Tên sách ♦ Thể loại sách ♦ Nhà xuất bản ♦ Năm xuất bản ♦ Giá bán Kết quả tìm kiếm: ♦ Liệt kê dưới dạng danh sách. ♦ Có số lượng sách tìm được ♦ Thông tin hiển thị gồm: ảnh bìa sách, tên sách, giá bán và có link xem chi tiết. ♦ Có phân trang hiển thị. Cập nhật giỏ hàng Là Use-Case cho phép khách hàng cập nhật giỏ hàng. 37 Yêu cầu: Hiển thị số lượng sản phẩm trong giỏ hàng Ngay khi ở chức năng xem thông tin giỏ hàng phải hiển thị danh sách các sách hiện có với số lượng, giá bán và tổng tiền. Thêm sách vào giỏ hàng ♦ Ngay khi ở chức năng xem thông tin sách, phải có chức năng nhanh chóng thêm sách vào giỏ hàng. ♦Có các nút: cập nhật, thanh toán, mua sách tiếp. ○ Khi chọn mua sách tiếp thì sẽ chuyển về lại chức năng xem thông tin sách ○ Khi chọn nút cập nhật thì có thể cập nhật số lượng sách cần mua Kiểm tra số lượng sách mua hợp lệ hay không, thông báo ra khi sách hết hoặc 38 số lượng không đủ. 3.2.1.2 Sơ đồ lớp Sơ đồ lớp Sách và quá trình đặt mua sách. 39 Hình 16. Sơ đồ lớp Sách và quá trình đặt mua sách Sơ đồ lớp Quản lý khách hàng và Hóa đơn thanh toán. Hình 17. Sơ đồ Quản lý khách hàng và Hóa đơn thanh toán. 3.2.1.3 Mô hình luận lý MLD 1. Sach(MaSach, SoLuong, GiaBan, NamXB, KichThuoc, SoTrang, PhuKien, ChatLieuIn, TomTatND, AnhBia, MaNXB, Stt_DangSach, Stt_TheLoai). 2. NguoiDung(MaND, TenND, Email, TenDangNhap, MatKhau, MaKH). 3. KhachHang(MaKH, TenKH, DiaChi, Sdt). 4. HoaDon(MaHD, NgayLap, TongTien, Stt_GioHang, MaKH). 5. GioHang(Stt_GioHang, NgayLap, NgayNhanHang, TongTien, MaND). 40 6. DonHang(Stt_DonHang, SoLuong,GiaBan,Stt_GioHang ,MaSach). 7. DichGia(MaDG, TenDG, MaSach). 8. TacGia(Stt_TacGia, MaTG, TenTG, MaSach). 9. TheLoai(Stt_TheLoai, TenTheLoai). 10. NhaXuatBan(MaNXB, TenNXB, Diachi, SoDt). 11. DangSach(Stt_DangSach,TenDS). Các ràng buộc tham chiếu: 1. KhachHang(MaKH) → NguoiDung(MaKH). 2. KhachHang(MaKH) → HoaDon(MaKH). 3. NguoiDung(MaND) → GioHang(MaND). 4. NhaXuatBan(MaNXB) → Sach(MaNXB). 5. DangSach(Stt_DangSach) → Sach(Stt_DangSach). 6. TheLoai(Stt_TheLoai) → Sach(Stt_TheLoai). 7. Sach(MaSach) → DichGia(MaSach). 8. Sach(MaSach) → TacGia(MaSach). 9. GioHang(Stt_GioHang) → DonHang(Stt_DonHang). 41 10. Sach(MaSach) → DonHang(MaSach). 3.2.1.4 Mô hình vật lý(MPD) Bảng 9. MÔ HÌNH VẬT LÝ KHÁCH HÀNG TRÊN MYSQL. X 1 MaKH char 5 X 2 TenKH char 40 X 3 DiaChi char 100 X 4 Sdt char 11 Mã của
khách
hàng
Tên Khách
Hàng
Địa chỉ
khách
hàng
Số điện
thoại liên
lạc 42 Bảng 10. MÔ HÌNH VẬT LÝ NGƯỜI DÙNG TRÊN MYSQL. X 1 MaND char 5 X 2 TenND X 3 Email char
char 40
50 X 4 X TenDangNhap char
char 5 MatKhau 20
16 X 6 Mã Người
dùng
Tên người
dùng
Email
Tên đăng
nhập
Mật khẩu
Tham
chiếu đến
trường
MaKH
trong bảng
KhachHan
g MaKH char 5 KhachHang(MaKH) 43 Bảng 11 . MÔ HÌNH VẬT LÝ HÓA ĐƠN TRÊN MYSQL. X 1 MaHD char 5 X 2 NgayLap datetime 10 X 3 TongTien float 12 0->~ X 4 MaKH char 5 KhachHang(MaKH) Mã Hóa
đơn
Ngày lập
hóa đơn
Tổng tiền
thanh
toán
Tham
chiếu đến
trường
MaKH
trong
bảng
KhachHan
g 44 Bảng 12. MÔ HÌNH VẬT LÝ GIỎ HÀNG TRÊN MYSQL. X 1 Stt int 1 X 2 NgayLap datetime 10 X 3 NgayNhanHang datetime 10 X 4 Tongtien float 12 X 5 MaND char 5 NguoiDung(MaND) Số thứ
tự của
giỏ hàng
Ngày
tạo giỏ
hàng
Ngày
nhận
hàng
hóa
Tổng
tiền
thanh
toán
Tham
chiếu
đến
trường
MaND
trong
bảng
NguoiDu
ng 45 Bảng 13. MÔ HÌNH VẬT LÝ SÁCH TRÊN MYSQL. 5
50
12
3
4 1 MaSach
2 TenSach
3 GiaBan
4 SoLuong
5 NamXB string
string
float
int
int X X
X
X
X
X 20 6 KichThuoc char X 4 7 SoTrang int X 20 8 PhuKien char X 20 9 ChatLieuIn char X 10 TomTatND char 300 X 11 AnhBia byte X 12 MaNXB char 5 NhaXuatBan(MaNXB) X 13 Stt_DangSach int 2 DangSach(Stt) X Mã số của sách
Tên sách
Giá bán
Số Lượng
Năm xuất bản
Kích thước sách
Số trang
Phụ kiện đi kèm
Chất liệu giấy in
Tóm tắt nội
dung
Ảnh bìa minh
họa
Tham chiếu đến
trường MaNXB
trong bảng
NhaXuatBan
Tham chiếu đến
trường Stt trong
bảng DangSach
Tham chiếu đến
trường Stt trong
bảng TheLoai 14 Stt_TheLoai int 2 TheLoai(Stt) 46 Bảng 14. MÔ HÌNH VẬT LÝ NHÀ XUẤT BẢN TRÊN MYSQL. X 1 MaNXB char 5 X X
X 2 TenNXB
3 DiaChi
4 SoDt char
char
char 100
100
11 Mã nhà xuất bản
Tên nhà xuất
bảng
Địa chỉ
Số điện thoại Bảng 15. MÔ HÌNH VẬT LÝ DỊCH GIẢ TRÊN MYSQL. X X 1 MaDG
2 TenDG char
char 5
40 X Mã dịch giả
Tên dịch giả
Tham chiếu đến
trường MaSach
trong bảng Sach 3 MaSach char 5 Sach(MaSach) 47 Bảng 16. MÔ HÌNH VẬT LÝ DẠNG SÁCH TRÊN MYSQL. X X 1 Stt
2 TenDS int
char 2
40 Số thứ tự dạng
sách
Tên dạng sách Bảng 17. MÔ HÌNH VẬT LÝ TÁC GIẢ TRÊN MYSQL. X X 1 MaTacGia
2 TenTacGia char
char 5
40 X 3 MaSach char 5 Sach(MaSach) Mã tác giả
Tên tác giả
Tham chiếu đến
trường MaSach
trong bảng Sach Bảng 18. MÔ HÌNH VẬT LÝ THỂ LOẠI TRÊN MYSQL. X 1 Stt
2 TenTheLoai X Số thứ tự thể
loại
Tên thể loai int
char 2
20 48 Bảng 19. MÔ HÌNH VẬT LÝ ĐƠN HÀNG TRÊN MYSQL. X 1 Stt_GioHang int 2 GioHang(Stt) X 2 MaSach char 5 Sach(MaSach) X 3 SoLuong int 2 12 4 GiaBan float X X 5 SttDonHang int 2 Tham chiếu
đến trường
Stt trong
bảng
GioHang
Tham chiếu
đến trường
MaSach
trong bảng
Sach
Số lượng
sách mua
Giá bán của
sách
Số thứ tự
đơn hàng 49 3.2.2 Mô hình trên MongoDB 3.2.2.1 Sơ đồ lớp. +_id
+Ten: String
+DiaChi: String
+SoDt: Int
+HoaDon: Array +_id
+Ten: String
+MatKhau: String
+Khachhang: Array
+GioHang: Array +_id
+NgayLap: datetime
+TongTien: double +NgayTao: datetime
+NgayNhanHang: datetime
+DonHang: Array
+TongTien: double +_id
+TenSach: String
+SoLuong: Int +_id
+TenSach: String
+GiaBan: double
+SoLuong: Int
+NamXB: Int
+NhaXuatBan: Array
+KichThuoc: String
+SoTrang: Int
+PhuKien: String
+ChatLieuIn: String
+DichGia: Array
+TacGia: Array
+NoiDung: String
+AnhBia: String
+TheLoai: Array
+DangSach: String 50 Hình 18. Sơ đồ lớp MongoDB 3.2.2.2 Mô hình vật lý trên MongoDB Bảng 20. MÔ HÌNH VẬT LÝ SÁCH TRÊN MONGODB. 1 _id String 32 _id tự sinh ra và là địa chỉ để truy cập tới bản ghi. Tên Sách TenSach String 100 2 Giá bán GiaBan Doubl 7 3 e Số SoLuong 2 Int 4 Lượng Sách Năm NamXB Int 4 5 xuất bản Nhà xuất NhaXuatBa String 100 6 bản n Kích KichThuoc String 20 7 thước Số trang SoTrang Int 2 8 Phụ kiện PhuKien String 20 9 Chất liệu 10 ChatLieuIn String 20 in Dịch giả DichGia String 50 11 Tác giả TacGia String 50 12 Nội dung NoiDung String 300 13 tóm tắt Ảnh Bìa AnhBia String 20 14 Thể loại TheLoai String 20 15 Dạng DangSach String 20 16 sách 51 Bảng 21. MÔ HÌNH VẬT LÝ ĐƠN HÀNG TRÊN MONGODB. _id tự sinh ra 1 _id String 32 và là địa chỉ để truy cập tới bản ghi. Tên sách 2 TenSach String 100 Số lượng 3 SoLuong Int 2 Bảng 22. MÔ HÌNH VẬT LÝ GIỎ HÀNG TRÊN MONGODB. _id tự sinh ra và 1 _id String 32 là địa chỉ để truy cập tới bản ghi. Ngày tạo giỏ NgayTao Date 10 2 hàng Ngày nhận hàng NgayNhan Date 10 3 Mảng giá trị Đơn DonHang Array 4 Hàng 52 Bảng 23. MÔ HÌNH VẬT LÝ HÓA ĐƠN TRÊN MONGODB. 1 _id String 32 _id tự sinh ra và là địa chỉ để truy cập tới bản ghi. NgayLap Date 10 2 Ngày lập hóa đơn TongTien Double 10 3 Tổng tiền GioHang Array 4 Mảng giá trị Giỏ Hàng Bảng 24. MÔ HÌNH VẬT LÝ KHÁCH HÀNG TRÊN MONGODB. 1 _id String 32 _id tự sinh ra và là địa chỉ để truy cập tới bản ghi. Ten String 100 2 Tên Khách hàng DiaChi String 100 3 Địa chỉ SoDt Int 11 4 Số điện thoại HoaDon Array 5 Mảng giá trị Hóa Đơn 53 Bảng 25. MÔ HÌNH VẬT LÝ NGƯỜI DÙNG TRÊN MONGODB. 1 _id String 32 _id tự sinh ra và là địa chỉ để truy cập tới bản ghi. 2 TenDangNhap String 16 Tên đăng nhập 3 MatKhau String 16 Mật khẩu 4 KhachHang Array Mảng giá trị Khách Hàng 3.2.2.3 Lưu đồ Giải Thuật. Lưu đồ giải thuật của một số chức năng trong trang web. 54 Hình 19. Lưu đồ giải thuật Đăng nhập 55 Hình 20. Lưu đồ giải thuật Đăng ký thành viên. 3.2.2.4 Sơ đồ tuần tự Sơ đồ tuần tự cho một số chức năng của trang web. 56 Hình 21. Sơ đồ tuần tự đăng nhập. 57 Hình 22. Sơ đồ tuần tự xóa giỏ hàng. 58 Hình 23. Sơ đồ tuần tự tìm kiếm theo tên sách. 3.3 CHƯƠNG TRÌNH Đăng kí/
Đăng nhập Quản lý tài khoản
khách hàng Cập nhật
thông tin Nhập/
Xuất kho Quản lý Sách Trình bày Sách Tìm kiếm theo Tên Tìm kiếm Sách Tìm kiếm theo Thể
loại Tìm kiếm theo Nhà
Xuất Bản/Năm Xuất
Bản Hệ thống
trang web
bán sách
trực tuyến Thống kê Sách bán
chạy Thống kê Sách Thống kê Sách tồn
kho Thống kê Sách mới Đặt mua Thanh Toán Sách Xác nhận thông tin
người mua/địa chỉ
giao hàng Giao hàng Trợ giúp/Liên hệ 3.3.1 Sơ đồ tổng quan. 59 Hình 24. Sơ đồ tổng quan trang web. 3.3.2 Giao diện và một số chức năng của trang web. Header Menu ngang chính Nội dung Các Module
chính phải Menu đứng
phụ trái Module phụ
trái Footer ♦ Hướng trình bày. Hình 25. Hướng trình bày trang web. ♦ Tổng thể trang web Trang web hỗ trợ khách hàng tìm kiếm sách theo các tiêu chí: tên sách, giá bán, năm xuất bản, nhà xuất bản và thể loại. Ngoài ra, khách hàng có thể đăng ký tài khoản và đăng nhập vào hệ thống để thực hiện việc mua sách. Trang web có chức năng cho phép người dùng chọn sách muốn mua và thêm vào giỏ hàng, giỏ hàng sẽ hiển thị chi tiết tên sách, số lượng và tổng tiền thanh toán. Khách hàng có thể cập 60 nhật giỏ hàng trước khi xác nhận mua sách. Hình 26. Tổng thể trang web. Chú thích trong hình: 1. Chức năng tìm kiếm 2. Chức năng đăng nhập 61 3. Liên kết nhanh đến chức năng thêm giỏ hàng và thông tin sách. ♦ Trang thông tin sách: Trang thông tin sách hiển thị tất cả thông tin về quển sách được chọn bao gồm: tên sách, tác giả, dịch giả(nếu có), số trang, tóm tắt nội dung, ảnh bìa,…và ô nhập số lượng sách nếu khách hàng muốn đặt mua. Hình 27. Trang thông tin sách. ♦ Trang Đăng ký tài khoản. Trang đăng ký tài khoản giúp khách hàng đăng ký một tài khoản trên trang web và 62 đăng nhập để thực hiên mua sách. Hình 28. Trang đăng ký tài khoản. ♦ Trang quản lý giỏ hàng. Trang quản lý giỏ hàng hiển thị thông tin về giỏ hàng của người dùng đang đăng nhập hiện tại, bao gồm tên sách đã chọn, số lượng mua tương ứng, ngày giao sách và tổng tiền phải trả. Khách hàng có thể cập nhật số lượng sách hoặc xóa sách. 63 Hình 29. Trang quản lý giỏ hàng. 3.4 KẾT QUẢ ĐẠT ĐƯỢC Trang web đã đáp ứng được những vấn đề sau: - Đáp ứng được quá trình trình bày sách và nhập/xuất sách vào hệ thống. - Tìm kiếm sách theo các tiêu chí theo yêu cầu. - Thống kê được các loại sách. Về phía so sánh hệ quản trị cơ sở dữ liệu MongoDB và MySQL: - Dựa trên phân tích thiết kế hệ thống, các dữ liệu đã được chia ra làm 2 phần tách biệt để có cái nhìn cụ thể hơn. Kết quả cho thấy với MongoDB, hệ thống được thiết kế đơn giản hơn, các vấn đề lưu trữ như các thông tin sách phát sinh, các loại sách có nhiều tác giả, dịch giả hoặc các sách thuộc nhiều thể loại khác nhau được giải quyết triệt để. Dĩ nhiên cơ sở dữ liệu quan hệ MySQL cũng vẫn giải quyết được nhưng sẽ phức tạp và phải thiết kế hệ thống rờm rà hơn. - Với hai cách lưu trữ dữ liệu khác nhau, nhưng hiển thị trên cùng một trang web cho thấy MongoDB không hề kém cõi mà ngược lại còn đơn giản hơn trong quá trình 64 lập trình. 1. KẾT LUẬN Đồ án đã nghiên cứu và chỉ ra được những ưu điểm của cơ sở dữ liệu không ràng buộc NoSQL, ứng dụng vào xây dựng trang web bán sách trực tuyến với MongoDB. Bên cạnh đó, đồ án cũng xây dựng trên nền cơ sở dữ liệu quan hệ truyền thống MySQL để làm bước đệm so sánh, đánh giá. Trên các kết quả nghiên cứu, chúng ta rút ra được những vấn đề sau: - Với cơ sở dữ liệu quan hệ, các bảng dữ liệu, trường thông tin và các mẫu tin luôn phải thống nhất và liên kết với nhau bằng những khóa chính, tương tự như những cái nắm tay của một nhóm người đứng thành hình tròn, với 3 người thì phải có ít nhất 2 cái nắm tay. Dữ liệu quan hệ đa phần đuợc chia ra để dễ quan lý đối với những thông tin phức tạp và rời rạc. Do đó, ở mức mô hình dữ liệu và mô hình vật lý, ta thấy hệ thống khá rối mắt và khó quản lý. - Với cơ sở dữ liệu không ràng buộc NoSQL, hệ thống gần như được thu gọn một nửa, khi mà các bảng phụ được tách ra ở cơ sở dữ liệu quan hệ đều tập trung lại một bảng và các mẫu tin được lưu trữ rất linh động. Có những trường bao gồm các kiểu dữ liệu mảng, chứa nhiều dòng thông tin trong đó, điều mà ở cơ sở dữ liệu quan hệ chúng ta phải mất khá nhiều thời gian để tách chúng ra thành những bảng con. Việc quan lý dữ liệu bây giờ không còn tập trung vào các bảng và các khóa chính nữa mà thay vào đó là viêc quản lý các lớp và các phương thức xử lý. Không tồn tại bảng ở cơ sở dữ liệu NoSQL mà nó được sinh ra tự động khi chèn dữ liệu vào. Việc mở rộng bảng là hoàn toàn dễ dàng khi mà các dữ liệu không nhất thiết phải có đây đủ các cột thông tin. - Với tốc độ truy vấn, do giới hạn hệ thống trang web bán sách tương đối đơn giản nên lượng dữ liệu ra vào chưa đáng kể, chúng ta chưa thể thấy rõ điều này. Tuy nhiên trên nền nghiên cứu của những người đi tiên phong, chúng ta có thể thấy rằng việc toàn vẹn dữ liệu trên NoSQL là khá hạn chế, và đôi khi dữ liệu được phân rã 65 lưu trữ ở nhiều nơi, đổi lại tốc độ truy vấn được tăng lên rất nhiều. 2. HẠN CHẾ - Việc tiếp cận với MongoDB vẫn chưa được chuyên sâu, do đó các ưu điểm đã phân tích vẫn chưa được làm rõ tất cả. Các vấn đề đã được rút ngắn hơn, các chức năng của trang web cũng được giới hạn lại như quá trình oder sách, quá trình quản lý tài khoản để phân loại khách hàng là thân thiện hay khách hàng mới,vv… - Giao diện website còn khá đơn giản, các chức năng vẫn chưa được hoàn thiện. 3. HƯỚNG PHÁT TRIỂN - Đi sâu vào hệ thống dữ liệu để tìm ra những hạn chế lưu trữ của MySQL, từ đó đưa ra giải pháp tối ưu để giải quyết bằng MongoDB. - Hoàn thiện các chức năng Quản lý tài khoản người dùng, quản lý quá trình oder sách, tối ưu hóa chức năng xem thông tin sách bằng cách javascript. - Thêm chức năng Mua sách và thanh toán sách bằng các phương thức thanh toán hữu dụng như thẻ tín dụng hoặc tài khoản Paypal. 66 - Cải thiện lại giao diện website để bắt mắt và tiện dụng hơn. [1]. Phân tích thiết kế hệ thống hướng đối tượng, Phạm Thị Xuân Lộc. [2]. Giáo trình hệ quản trị cơ sở dữ liệu, Khoa CNTT và Truyền Thông, ĐH Cần Thơ. [3]. Giáo trình Lập trình ứng dụng Web với PHP, Khuất Thùy Phương. [4]. MongoDB in Action, Kyle Banker [5]. MongoDB and PHP, Steve Francia. [6]. MongoDB and Python, Niall O’Higgins. [7]. 50 Tips and Tricks for MongoDB Developers, Kristina Chodorow. [8]. www.mongodb.org : trang chủ MongoDB. [9]. www.vinabooks.com : website bán sách của công ty Mekongcom. [10]. http://saigoncom.vn : Nhà sách trên mạng. Các câu lệnh Cú pháp Tạo bảng Thêm giá trị Chọn các trường dữ liệu trong bảng Tìm kiếm ứng với giá trị trong khoảng Tìm kiếm ứng với giá trị so sánh Cập nhật mẫu tin Xóa mẫu tin với điều kiện Các câu lệnh Cú pháp Tạo bảng Thêm giá trị Chọn các trường dữ liệu trong bảng Tìm kiếm ứng với giá trị trong khoảng Tìm kiếm ứng với giá trị so sánh Cập nhật mẫu tin Xóa mẫu tin với điều 1 kiện
: phải có kiểu tương ứng với kiểu nói trên.
]
[: ]
CHƯƠNG 3
NỘI DUNG VÀ KẾT QUẢ NGHIÊN CỨU
Stt
Kiểu
Min Max
RBTV khoá ngoài
Diễn giải
Tên thuộc
tính
Kích
thước
Khoá
chính
Duy
nhất
Not
null
RBTV
luận
lý
Miền
giá
trị
Trị
mặc
nhiên
Số
chữ
số
thập
phân
Stt
Kiểu
Min Max
RBTV khoá ngoài
Diễn giải
Tên thuộc
tính
Kích
thước
Khoá
chính
Duy
nhất
Not
null
RBTV
luận
lý
Miền
giá
trị
Trị
mặc
nhiên
Số
chữ
số
thập
phân
Stt
Kiểu
Min Max
RBTV khoá ngoài Diễn giải
Tên thuộc
tính
Kích
thước
Khoá
chính
Duy
nhất
Not
null
RBTV
luận
lý
Miền
giá
trị
Trị
mặc
nhiên
Số
chữ
số
thập
phân
Stt Tên thuộc tính
Kiểu
Min Max
RBTV khoá ngoài
Kích
thước
Khoá
chính
Duy
nhất
Not
null
Diễn
giải
Miền
giá
trị
Trị
mặc
nhiên
RBTV
luận
lý
Số
chữ
số
thập
phân
Stt
Kiểu
Min Max
RBTV khoá ngoài
Diễn giải
Tên thuộc
tính
Kích
thước
Khoá
chính
Duy
nhất
Not
null
Miền
giá
trị
Trị
mặc
nhiên
RBTV
luận
lý
Số
chữ
số
thập
phân
Stt
Kiểu
Min Max
RBTV khoá ngoài
Diễn giải
Tên thuộc
tính
Kích
thước
Khoá
chính
Duy
nhất
Not
null
Miền
giá
trị
Trị
mặc
nhiên
RBTV
luận
lý
Số
chữ
số
thập
phân
Stt
Kiểu
Min Max
RBTV khoá ngoài
Diễn giải
Tên thuộc
tính
Kích
thước
Khoá
chính
Duy
nhất
Not
null
Miền
giá
trị
Trị
mặc
nhiên
RBTV
luận
lý
Số
chữ
số
thập
phân
Stt
Kiểu
Min Max
RBTV khoá ngoài
Diễn giải
Tên thuộc
tính
Kích
thước
Khoá
chính
Duy
nhất
Not
null
RBTV
luận
lý
Miền
giá
trị
Trị
mặc
nhiên
Số
chữ
số
thập
phân
Stt
Kiểu
Min Max
RBTV khoá ngoài
Diễn giải
Tên thuộc
tính
Kích
thước
Khoá
chính
Duy
nhất
Not
null
Miền
giá
trị
Trị
mặc
nhiên
RBTV
luận
lý
Số
chữ
số
thập
phân
Stt
Kiểu
Min Max
RBTV khoá ngoài
Diễn giải
Tên thuộc
tính
Kích
thước
Khoá
chính
Duy
nhất
Not
null
RBTV
luận
lý
Miền
giá
trị
Trị
mặc
nhiên
Số
chữ
số
thập
phân
Stt
Kiểu
Min Max KhoáChính
RBTV Khóa Ngoài Diễn Giải
Tên Thuộc
Tính
Kích
thước
Duy
Nhất
Not
Null
Miền
Giá
Trị
Trị
Mặc
Nhiên
RBTV
Luận
Lý
Số
Chữ
Thập
Phân
KhachHang
NguoiDung
HoaDon
GioHang
Sach
DonHang
Stt Tên thuộc
Kiểu Kích
Số chữ
Miền
Trị
Min Max Diễn
tính
thước
thập
giá trị
mặc
giải
phân
nhiên
Stt Tên
thuộc
Kiểu Kích
Số
Miền
Trị
Min Max Diễn giải
tính
thước
chữ
giá
mặc
trị
nhiên
số
thập
phân
Stt Tên
thuộc
Kiểu Kích
Số
Miền
Trị
Min Max Diễn giải
tính
thước
chữ
giá
mặc
trị
nhiên
số
thập
phân
Stt Tên
thuộc
Kiểu
Kích
Số
Miền
Trị
Min Ma
Diễn giải
tính
thước
chữ
giá
mặc
x
trị
nhiên
số
thập
phân
Stt Tên thuộc
Kiểu Kích
Số chữ
Miền
Trị
Min Max Diễn giải
tính
thước
số thập
giá
mặc
phân
trị
nhiên
Stt Tên thuộc tính Kiểu Kích
Số
Miền
Trị
Min Max Diễn giải
thước
chữ
giá
mặc
trị
nhiên
số
thập
phân
KẾT LUẬN, ĐỀ NGHỊ VÀ HƯỚNG PHÁT TRIỂN
TÀI LIỆU THAM KHẢO
PHỤ LỤC 1
CÚ PHÁP CỦA MYSQL TRONG PHP
CREATE TABLE USERS (a Number, b Number)
INSERT INTO USERS VALUES(1,1)
SELECT a,b FROM users
SELECT * FROM users WHERE age>33 AND
age<=40
SELECT * FROM users WHERE name LIKE
"%Joe%"
UPDATE users SET a=1 WHERE b='q'
DELETE FROM users WHERE z="abc"
CÚ PHÁP CỦA MONGODB TRONG PHP
MongoDB::createCollection()
$db->users->insert(array("a" => 1, "b" => 1));
$db->users->find(array(), array("a" => 1, "b"
=> 1));
$db->users->find(array("age" => array('$gt' =>
33, '$lte' => 40)));
$db->users->find(array("name" => new
MongoRegex("/Joe/")));
$db->users->update(array("b" => "q"),
array('$set' => array("a" => 1)));
$db->users->remove(array("z" => "abc"));
Tài liệu liên quan
Tài liêu mới