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ó:

: dùng các từ khóa public, private, protected hoặc các dấu

tương ứng.

: kiểu dữ liệu cơ sở hoặc tên lớp.

: 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.

: phải có kiểu tương ứng với kiểu 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

[(danh sách tham số)]

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 là dấu ‘=’ nếu đó là tham số chỉ đọc. Dấu ‘:’ nếu đó là tham số có

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 [, ] : thường có dạng loop [1, n], lặp lại các

bước lặp theo chỉ số nhận trị từ đến .

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.

CHƯƠNG 3

NỘI DUNG VÀ KẾT QUẢ NGHIÊN CỨU

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.

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

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.

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

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.

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

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.

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

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.

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

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.

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ý

X

1 MaNXB

char

5

Số chữ số thập phân

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.

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ý

X

X

1 MaDG 2 TenDG

char char

5 40

Số chữ số thập phân

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.

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

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.

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ý

X

X

Số chữ số thập phân

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.

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

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.

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

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.

KhachHang

NguoiDung

+_id +Ten: String +DiaChi: String +SoDt: Int +HoaDon: Array

HoaDon

+_id +Ten: String +MatKhau: String +Khachhang: Array +GioHang: Array

GioHang

+_id +NgayLap: datetime +TongTien: double

Sach

+NgayTao: datetime +NgayNhanHang: datetime +DonHang: Array +TongTien: double

DonHang

+_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.

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

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.

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

_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.

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

_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.

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

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.

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

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.

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

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.

KẾT LUẬN, ĐỀ NGHỊ VÀ HƯỚNG PHÁT TRIỂN

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.

TÀI LIỆU THAM KHẢO

 

[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.

PHỤ LỤC 1 CÚ PHÁP CỦA MYSQL TRONG PHP

Các câu lệnh Cú pháp

CREATE TABLE USERS (a Number, b Number)

Tạo bảng

INSERT INTO USERS VALUES(1,1)

Thêm giá trị

SELECT a,b FROM users

Chọn các trường dữ

liệu trong bảng

SELECT * FROM users WHERE age>33 AND

Tìm kiếm ứng với giá

age<=40

trị trong khoảng

SELECT * FROM users WHERE name LIKE

Tìm kiếm ứng với giá

"%Joe%"

trị so sánh

UPDATE users SET a=1 WHERE b='q'

Cập nhật mẫu tin

DELETE FROM users WHERE z="abc"

Xóa mẫu tin với điều

kiện

CÚ PHÁP CỦA MONGODB TRONG PHP

Các câu lệnh Cú pháp

MongoDB::createCollection()

Tạo bảng

$db->users->insert(array("a" => 1, "b" => 1));

Thêm giá trị

$db->users->find(array(), array("a" => 1, "b"

Chọn các trường dữ

=> 1));

liệu trong bảng

$db->users->find(array("age" => array('$gt' =>

Tìm kiếm ứng với giá

33, '$lte' => 40)));

trị trong khoảng

$db->users->find(array("name" => new

Tìm kiếm ứng với giá

MongoRegex("/Joe/")));

trị so sánh

$db->users->update(array("b" => "q"),

Cập nhật mẫu tin

array('$set' => array("a" => 1)));

$db->users->remove(array("z" => "abc"));

Xóa mẫu tin với điều

1

kiện