Giải pháp công nghệ - Ngôn ngữ lập trình: Ruby, framework Ruby on Rails - Hệ quản trị cơ sở dữ liệu: PostgreSQL... Các lợi ích khi sử dụng hệ quản trị cơ sở dữ liệu PostgreSQL Ra mắt ngư
Trang 1ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT
XÂY DỰNG WEBSITE HỌC TIẾNG ANH
Sinh viên thực hiện : Văn Quý Thọ
Trang 3TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT
KHOA CÔNG NGHỆ SỐ
ĐỒ ÁN TỐT NGHIỆP
ĐẠI HỌC
NGÀNH: CÔNG NGHỆ THÔNG TIN
CHUYÊN NGÀNH: CÔNG NGHỆ THÔNG TIN
ĐỀ TÀI:
XÂY DỰNG WEBSITE HỌC TIẾNG ANH
Giảng viên hướng dẫn duyệt
Trang 7Tên đề tài: Xây dựng website học tiếng Anh
Sinh viên thực hiện: Văn Quý Thọ
Mã SV: 1811505310145 Lớp: 18T1
Nội dung tóm tắt :
Ngày nay, xu hướng phát triển công nghiêp hóa – hiện đại hóa đất nước ngàycàng được đẩy mạnh Để có thể đáp ứng được khối công việc ngày càng gia tăng, đòihỏi con người phải có phương pháp quản lý hợp lý giúp tiết kiệm thời gian và chi phí.Tuy nhiên không phải ai cũng có thể học tiếng Anh một cách dễ dàng và thuậnlợi Nểu bạn là một người bận rộn, trừ khi bạn sẵn sàng hy sinh giấc ngủ và phá vỡcuộc sống đang cân bằng của bạn thì ban mới hòa mình vào tiếng Anh đươc Tuynhiên sự phổ biến của Internet, nó có thể giúp bạn học tiếng Anh một cách dễ dànghơn, bạn có thể linh hoạt thời gian để học k nhất thiết phải đến trường lớp hay trungtâm để học
Xây dựng website hỗ trợ quá trình học tiếng Anh thuân lợi, linh hoạt, góp phầngiảm thời gian và chi phí để đến trường lớp hoặc các trung tâm dạy tiếng Anh và tăng
sự tiện lợi cho mọi người trong thời đại công nghệ thông tin phát triển mạnh như hiệnnay
Một số nội dung của website:
- Trang chủ, thống kê: thống kê về số lượng người dùng, khóa học, bài học
- Trang quản lý khóa học: Trang này là nơi các quản trị viên có thể cập nhật các thôngtin về khóa học
- Trang quản lý bài học: Trang này là nơi các quản trị viên có thể cập nhật các thông tin
về bài học và bài kiểm tra của mỗi bài học
- Trang quản lý từ vựng: Trang này là nơi các quản trị viên có thể cập nhật các thông tin
về từ vựng thuộc bài học nào
- Trang khóa học: là trang dành cho người dùng vãng lai trên Internet xem được nhữngkhóa học hiện có trên website
Trang 8thông qua các nhóm hoặc nhắn tin riếng cho nhau.
Trang 9KHOA CÔNG NGHỆ SỐ Độc lập - Tự do - Hạnh phúc
NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆPGiảng viên hướng dẫn: PGS.TS Phan Huy Khánh
Sinh viên thực hiện: Văn Quý Thọ Mã SV: 1811505310145
1 Tên đề tài
- Xây dựng website học tiếng Anh
2 Các số liệu, tài liệu ban đầu
3 Nội dung chính của đồ án
- Mở đầu
- Chương 1: Cơ sở lý thuyết
- Chương 2: Phân tích thiết kế hệ thống
- Chương 3: Xây dựng chương trình
- Kết luận và hướng phát triển
4 Các sản phẩm dự kiến
- Hệ thống website học tiếng Anh
- File báo cáo hoàn chỉnh
5 Ngày giao đồ án: 14/02/2022
6 Ngày nộp đồ án: 20/06/2022
Đà Nẵng, ngày 20 tháng 06 năm 2022
Trang 11Lời đầu tiên, em xin chân thành cảm ơn Trường Đại học Sư Phạm Kỹ Thuật đãtạo điều kiện để em có được môi trường học tập và phát triển bản thân tốt nhất
Đặc biệt em xin gửi lời cảm ơn chân thành và sâu sắc tới PGS.TS Phan HuyKhánh đã hướng dẫn, giúp đỡ em trong suốt thời gian thực hiện đề tài này
Em xin chân thành cảm ơn thầy cô bộ môn đã tận tình giảng dạy, truyền đạt kiếnthức cho chúng em trong các kỳ học vừa qua
Xin chân thành cảm ơn tất cả bạn bè đã động viên, giúp đỡ chúng em trong thờigian học tập và hoàn thành đồ án
Mặc dù đã cố gắng nhiều nhưng sẽ không thể tránh khỏi những thiếu sót vì thờigian hạn chế và kiến thức trong đề tài làm đồ án Em kính mong nhận được sự góp ýcủa quý Thầy Cô và các bạn để hoàn thành tốt hơn nữa
Em xin chân thành cảm ơn!
Trang 12Tôi xin cam đoan rằng đồ án tốt nghiệp “Xây dựng website học tiếng Anh” làcông trình nghiên cứu độc lập dưới sự hướng dẫn của giảng viên PGS.TS Phan HuyKhánh Những tài liệu tham khảo đã được liệt kê tại phần tài liệu tham khảo Các nộidung nghiên cứu và kết quả trong đề tài này là hoàn toàn trung thực
Nếu phát hiện có bất kỳ sự gian lận nào tôi xin hoàn toàn chịu trách nhiệm trướchội đồng cũng như kết quả đồ án của mình
Sinh viên thực hiện
Trang 14MỤC LỤC
LỜI CẢM ƠN vi
CAM ĐOAN vii
DANH MỤC BẢNG BIỂU 8
DANH MỤC HÌNH VẼ 9
MỞ ĐẦU 11
1 Mục tiêu đề tài 11
2 Đối tượng nghiên cứu và phạm vi nghiên cứu 12
a Đối tượng nghiên cứu 12
b Phạm vi nghiên cứu 12
3 Phương pháp nghiên cứu 12
4 Giải pháp công nghệ 12
5 Cấu trúc đồ án 12
Chương 1 CƠ SỞ LÝ THUYẾT 13
1.1 Giới thiệu PostgreSQL 13
1.1.2 Các đặc điểm của PostgreSQL 14
1.1.2.1 Các lợi ích khi sử dụng hệ quản trị cơ sở dữ liệu PostgreSQL 14 1.2 Giới thiệu ngôn ngữ lập trình Ruby 18
1.2.2 Ưu và nhược điểm của Ruby 18
1.2.2.1 Ưu điểm 18
1.2.2.2 Nhược điểm của Ruby 19
1.2.3 Giới thiệu về framework Ruby on Rails 19
1.3 Giới thiệu về Visual Studio Code 21
Chương 2 PHÂN TÍCH THIẾT KẾ HỆ THỐNG 22
Trang 152.1 Phân tích tác nhân và chức năng 22
2.1.1 Xác định các tác nhân 22
2.1.2 Các yêu cầu chức năng 22
2.1.2.1 Khách hàng vãng lai 22
2.1.2.2 Khách hàng thành viên 23
2.1.2.3 Quản trị viên 23
2.2 Sơ đồ use-case 24
2.3 Sơ đồ hoạt động 25
2.3.1 Khách hàng vãng lai 25
2.3.1.1 Sơ đồ hoạt động xem các khóa học 25
2.3.1.2 Sơ đồ hoạt động tìm kiếm 26
2.3.2 Khách hàng thành viên 27
2.3.2.1 Sơ đồ hoạt động Đăng nhập 27
2.3.2.2 Sơ đồ hoạt động Đăng ký khóa học 28
2.3.2.3 Sơ đồ hoạt động Chat(nhắn tin) 28
2.3.2.4 Sơ đồ hoạt động bình luận khóa học 29
2.3.2.5 Sơ đô hoạt động Học từ vựng 29
2.3.3 Quản trị viên 30
2.3.3.1 Sơ đồ hoạt động Đăng nhập 30
2.3.3.2 Sơ đồ hoạt động Cập nhật nhân viên 31
2.3.3.3 Sơ đồ hoạt động Cập nhật khóa học 32
2.3.3.4 Sơ đồ hoạt động Cập nhật bài học 33
2.3.3.5 Sơ đồ hoạt động Cập nhật từ vựng 34
2.4 Sơ đồ Mô hình thực thể liên kết 34
2.5 Thiết kế cơ sở dữ liệu 35
Trang 162.5.2 Bảng Người Dùng(user) 35
2.5.3 Bảng Khóa Học (course) 36
2.5.4 Bảng bài kiểm tra (kiemtra) 36
2.5.5 Bảng Bài Học (lesson) 37
2.5.6 Bảng Từ Vựng (word) 37
2.5.7 Bảng Đăng Ký Khóa Học(user_course) 38
2.5.8 Bảng Bài Học Đã Học (user_lesson) 39
2.5.9 Bảng Từ Vựng Đã Học (user_word) 39
2.5.10 Bảng Bình Luận (comments) 40
2.5.11 Bảng Phòng Chat (room) 40
2.5.12 Bảng Tin Nhắn (nessages) 41
2.5.13 Bảng Những Người Tham Gia (participants) 41
2.5.14 Bảng Câu Hỏi (question) 42
2.5.15 Bảng Đáp Án (answers) 42
2.6 Kịch bản cho các use-case 43
2.6.1 Xem khóa học 43
2.6.2 Tìm kiếm khóa học 43
2.6.3 Xem chi tiết khóa học 44
2.6.4 Đăng nhập 45
2.6.5 Bình luận 45
2.6.6 Chat 46
2.6.7 Cập nhật người dùng 46
2.6.8 Cập nhật khóa học 47
2.6.9 Cập nhật bài học 48
2.6.10 Cập nhật từ vựng 48
Trang 172.6.11 Thống kê 49
Chương 3 XÂY DỰNG CHƯƠNG TRÌNH 50
3.1 Công cụ xây dựng chương trình 50
3.2 Giao diện chương trình 51
3.2.1 Giao diện người dùng 51
3.2.1.1 Giao diện trang chủ 51
3.2.1.2 Giao diện khóa học 52
3.2.1.3 Giao diện chi tiết khóa học 53
3.2.1.4 Giao diện Chat 54
3.2.1.5 Giao diện bình luận 55
3.2.1.6 Giao diện chi tiết bài học 55
3.2.1.7 Giao diện bài kiểm tra 56
3.2.1.8 Giao diện cập nhật thông tin tài khoản 57
3.2.1.9 Giao diện danh sách các từ vựng 58
3.2.1.10 Giao diện đăng nhập 59
3.2.1.11 Giao diện đăng ký tài khoản 60
3.2.2 Giao diện trang quản trị 61
3.2.2.1 Giao diện trang chủ 61
3.2.2.2 Giao diện quản lý tài khoản 63
3.2.2.3 Giao diện quản lý khóa học 64
3.2.2.4 Giao diện quản lý bài học 65
3.2.2.5 Giao diện quản lý từ vựng 66
3.2.2.6 Giao diện chỉnh sửa khóa học 67
3.2.2.7 Giao diện chỉnh sửa bài học 67
3.2.2.8 Giao diện thêm mới bài kiểm tra 68
Trang 183.2.2.9 Giao diện thêm mới từ vựng 69
3.2.2.10 Giao diện chình sửa từ vựng 69
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 71
3.3 Kết luận 71
3.4 Hướng phát triển 71
TÀI LIỆU THAM KHẢO 72
Trang 19DANH MỤC BẢNG BIỂU
Bảng 2.1: Bảng người dùng 35
Bảng 2.2: Bảng khóa học 36
Bảng 2.3: Bảng kiểm tra 36
Bảng 2.4: Bảng bài học 37
Bảng 2.5: Bảng từ vựng 37
Bảng 2.6: Bảng Đăng ký khóa học 38
Bảng 2.7: Bảng bài học đang học 39
Bảng 2.8: Bảng từ vựng đã học 39
Bảng 2.9: Bảng bình luận 40
Bảng 2.10: Bảng phòng chat 40
Bảng 2.11: Bảng tin nhắn 41
Bảng 2.12: Bảng participants 41
Bảng 2.13: Bảng câu hỏi 42
Bảng 2.14: Bảng đáp án 43
Bảng 2.15: Kịch bản usecase Xem khóa học 43
Bảng 2.16: Kịch bản usecase Tìm kiếm khóa học 43
Bảng 2.17: Kịch bản usecase Xem chi tiết khóa học 44
Bảng 2.18: Kịch bản usecase Đăng nhập 45
Bảng 2.19: Kịch bản usecase Bình luận 45
Bảng 2.20: Kịch bản usecase Chat 46
Bảng 2.21: Kịch bản usecase Cập nhật người dùng 46
Bảng 2.22: Kịch bản usecase Cập nhật khóa học 47
Bảng 2.23: Kịch bản usecase Cập nhật bài học 48
Bảng 2.24: Kịch bản usecase Cập nhật từ vựng 48
Bảng 2.25: Kịch bản usecase Thống kê 49
Trang 20DANH MỤC HÌNH VẼ
Hình 1.1: PostgreSQL 13
Hình 1.2: Ruby 18
Hình 1.3: Visual Studio Code 22
Hình 2.1: Sơ đồ use-case tổng quát 24
Hình 2.2: Sơ đồ hoạt động xem danh sách khóa học 25
Hình 2.3: Sơ đồ hoạt động tìm kiếm 26
Hình 2.4: Sơ đồ hoạt động Đăng nhập 27
Hình 2.5: Sơ đồ hoạt động Đăng ký khóa học 28
Hình 2.6: Sơ đồ hoạt động Chat(nhắn tin) 28
Hình 2.7: Sơ đồ hoạt động Bình luận khóa học 29
Hình 2.8: Sơ đồ hoạt động Học từ vựng 29
Hình 2.9: Sơ đồ hoạt động Đăng nhập 30
Hình 2.10: Sơ đồ hoạt động Cập nhật nhân viên 31
Hình 2.11: Sơ đồ hoạt động Cập nhật khóa học 32
Hình 2.12: Sơ đồ hoạt động Cập nhật bài học 33
Hình 2.13: Sơ đồ hoạt động Cập nhật từ vựng 34
Hình 2.14: Sơ đồ mô hình liên kết thực thể 35
Hình 3.1: Giao diện trang chủ 52
Hình 3.2: Giao diện khóa học 52
Hình 3.3: Chi tiết khóa học 53
Hình 3.4: Giao diện chat 54
Hình 3.5: Chi tiết bài học 55
Hình 3.6: Giao diện bài kiểm tra 56
Hình 3.7: Giao diện cập nhật thông tin tài khoản 57
Hình 3.8: Giao diện danh sách từ vựng 58
Hình 3.9: Giao diện đăng nhập 59
Hình 3.10: Giao diện đăng ký 60
Hình 3.11: Giao diện trang chủ trang quản trị 62
Hình 3.12: Giao diện quản lý người dùng 63
Trang 21Hình 3.13: Giao diện quản lý khóa học 64
Hình 3.14: Giao diện quản lý bài học 65
Hình 3.15: Giao diện quản lý từ vựng 66
Hình 3.16: Giao diện chỉnh sửa khóa học 67
Hình 3.17: Giao diện chỉnh sửa bài học 67
Hình 3.18: Giao diện thêm mới bài kiểm tra 68
Hình 3.19: Giao diện thêm mới từ vựng 69
Hình 3.20: Giao diện chỉnh sửa từ vựng 70
Trang 22MỞ ĐẦU
Tiếng Anh hiện nay là ngôn ngữ khá phổ biển, nó dường như được dùng trong tất
cả các mọi lĩnh vực của cụôc sống Vì thế học tiếng Anh là thật sự cần thiết ngày này.Hơn nữa, tiếng Anh được coi là ngôn ngữ kinh doanh - bạn phải thành thạo nó nếumuốn có được nhiều hợp đồng, được thăng tiến trong công việc
Tuy nhiên không phải ai cũng có thể học tiếng Anh một cách dễ dàng và thuậnlợi Nểu bạn là một người bận rộn, trừ khi bạn sẵn sàng hy sinh giấc ngủ và phá vỡcuộc sống đang cân bằng của bạn thì ban mới hòa mình vào tiếng Anh đươc Tuynhiên sự phổ biến của Internet, nó có thể giúp bạn học tiếng Anh một cách dễ dànghơn, bạn có thể linh hoạt thời gian để học k nhất thiết phải đến trường lớp hay trungtâm để học
Xây dựng website hỗ trợ quá trình học tiếng Anh thuân lợi, linh hoạt, góp phầngiảm thời gian và chi phí để đến trường lớp hoặc các trung tâm dạy tiếng Anh và tăng
sự tiện lợi cho mọi người trong thời đại công nghệ thông tin phát triển mạnh như hiệnnay
Hướng tới việc ứng dụng thực tế, đánh giá website từ người dùng để có thể cảithiện website một cách tối ưu hơn và có thể phát triển rộng hơn như các website yêucẩu phải trả phí
Trang 23o Xem thông tin các khóa học
o Đăng ký các khóa học
o Bình luận
o Làm bài kiểm tra mỗi khi hoàn thành một bài học
o Nhắn tin với người dùng khác
o Xem danh sách các từ vựng của những khóa học đã đăng ký
o Đổi mật khẩu và chỉnh sửa, cập nhật thông tin cá nhân
- Quản trị viên
o Đăng nhập vào website
o Quản lý tài khoản người dùng
o Quản lý khóa học
o Quản lý bài học
o Quản lý các từ vựng
o Thống kê
2 Đối tượng nghiên cứu và phạm vi nghiên cứu
a Đối tượng nghiên cứu
Những người có mong muốn học tiếng Anh
b Phạm vi nghiên cứu
Đề tài được áp dụng đối với tất cả mọi người
3 Phương pháp nghiên cứu
- Nghiên cứu lý thuyết : thu thập thông tin qua sách, các tài liệu, trang web để tìm đượccác cơ sở lý thuyết liên quan vấn đề mình nghiên cứu
- Triển khai thực nghiệp: xây dựng website
4 Giải pháp công nghệ
- Ngôn ngữ lập trình: Ruby, framework Ruby on Rails
- Hệ quản trị cơ sở dữ liệu: PostgreSQL
Trang 24- Công cụ hỗ trợ: Visual studio code, Dbeaver
5 Cấu trúc đồ án
Mở đầu
Chương 1: Cơ sở lý thuyết
Chương 2: Phân tích thiết kế hệ thống
Chương 3: Xây dựng chương trình
Kết luận và hướng phát triển
Tài liệu tham khảo
Trang 25Chương 1
CƠ SỞ LÝ THUYẾT1.1 Giới thiệu PostgreSQL
Hệ quản trị cơ sở dữ liệu PostgreSQL là một hệ thống quản trị cơ sở dữ liệu
quan hệ-đối tượng (object-relational database management system) có mục đíchchung, hệ thống cơ sở dữ liệu mã nguồn mở tiên tiến nhất hiện nay PostgreSQL đượcphát triển dựa trên PostgreSQL 4.2 tại phòng khoa học máy tính Berkeley, Đại họcCalifornia
PostgreSQL được thiết kế để chạy trên các nền tảng tương tự UNIX Tuy nhiên,PostgreSQL sau đó cũng được điều chỉnh linh động để có thể chạy được trên nhiềunền tảng khác nhau như Mac OS X, Solaris và Windows PostgreSQL là một phầnmềm mã nguồn mở miễn Mã nguồn của phần mềm khả dụng theo license củaPostgreSQL, một license nguồn mở tự do Theo đó, bạn sẽ được tự do sử dụng, sửa đổi
và phân phối PostgreSQL dưới mọi hình thức
Trang 26Hình 1.1.1.1.1.1: PostgreSQL
1.1.2 Các đặc điểm của PostgreSQL
Do có nền tảng công nghệ mạnh mẽ, Postgres có hoàn toàn có khả năng xử lýnhiều tiến trình rất hiệu quả Sự hỗ trợ đồng thời đạt được mà không cần đọc các khóanhờ vào sự thực hiện của Multiversion Concurrency Control (MVCC), mà nó cũngđảm bảo việc tuân thủ theo ACID
PostgreSQL là hệ quản trị cơ sở dữ liệu quan hệ mã nguồn mở tiên tiến mà mụcđích chính là tuân thủ theo chuẩn và khả năng mở rông PostgreSQL hay còn gọi làPostgree áp dụng chuẩn SQL ANSI/IOS cùng với các phiên bản
Ngày nay, PostgreSQL là một phần quan trọng của ngành dữ liệu GIS cho tổ chứcchính phủ, ngành ngân hàng, thương mại, công nghệ web, PostgreSQL hoàn toànkhông bị quản lý bởi bất kỳ tổ chức nào Tuy vậy, việc không bị quản lý bởi bất kỳ tổchức nào đôi khi lại là yếu điểm của PostgreSQL
1.1.2.1 Các lợi ích khi sử dụng hệ quản trị cơ sở dữ liệu PostgreSQL
Ra mắt người dùng hoàn toàn miễn phí, hệ quản trị cơ sở dữ liệu PostgreSQL mang đến rất nhiều những lợi ích thiết thực, được ứng dụng trong nhiều dự án của các
công ty công nghệ, một trong số đó có thể kể đến những công ty chuyên lập trìnhnhư MonaMedia, Misa,… cùng chúng tôi tìm hiểu những lợi ích thiết thực củaPostgreSQL ngay dưới đây:
1.1.2.1.1 Kiểm soát đồng thời nhiều phiên bản
Postgres là DBMS đầu tiên triển khai điều khiển đồng thời nhiều phiên bản(MVCC), có nghĩa là đọc không bao giờ chặn việc ghi và ngược lại Tính năng này làmột trong những lý do chính tại sao các doanh nghiệp thích Postgres hơn MySQL.Như Postgres giải thích, "Không giống như hầu hết các hệ thống cơ sở dữ liệu khác sửdụng khóa để kiểm soát đồng thời, Postgres duy trì tính nhất quán của dữ liệu bằngcách sử dụng mô hình đa vũ trụ Điều này có nghĩa là trong khi truy vấn cơ sở dữ liệu,
mỗi giao dịch sẽ thấy một ảnh chụp nhanh dữ liệu ( phiên bản cơ sở dữ liệu ) như một
số thời gian trước, bất kể trạng thái hiện tại của dữ liệu cơ bản Điều này bảo vệ giaodịch khỏi việc xem dữ liệu không nhất quán có thể do (khác) cập nhật giao dịch đồng
Trang 27thời trên cùng các hàng dữ liệu, cung cấp sự cô lập giao dịch cho mỗi phiên cơ sở dữ
liệu
Sử dụng cái mà Oracle gọi là 'cách ly ảnh chụp nhanh', MVCC cho phép nhiềungười đọc và người viết tương tác đồng thời với cơ sở dữ liệu Postgres, loại bỏ nhucầu khóa đọc-ghi mỗi khi ai đó tương tác với dữ liệu Một lợi ích phụ là quá trình nàycung cấp một sự thúc đẩy hiệu quả lớn
1.1.2.1.3 Lưu trữ dữ liệu
Một điểm khác biệt chính giữa PostgreSQL và các hệ thống cơ sở dữ liệu quan hệtiêu chuẩn là PostgreSQL lưu trữ nhiều thông tin hơn trong danh mục của nó: khôngchỉ thông tin về bảng và cột, mà còn thông tin về kiểu dữ liệu, hàm, phương pháp truycập, v.v." của Postgres Người dùng có thể sửa đổi các bảng này, có nghĩa là ngườidùng có thể mở rộng Postgres, không giống như hầu hết các hệ thống cơ sở dữ liệuthông thường, đòi hỏi các thay đổi được mã hóa cứng trong mã nguồn để sửa đổi phầnmềm
1.1.2.1.4 Tính năng phong phú
PostgreSQL nguyên bản hỗ trợ NoSQL cũng như một tập hợp các kiểu dữ liệuphong phú, bao gồm Kiểu số, Kiểu Boolean, Địa chỉ mạng, Kiểu chuỗi bit, Mảng,Kiểu kết hợp, Kiểu định danh đối tượng, Kiểu giả và thậm chí cả Kiểu hình học nhưĐiểm, Đoạn đường , Hộp, Đường dẫn, Đa giác và Vòng tròn Nó cũng hỗ trợ JSON,hstore và XML và người dùng thậm chí có thể thêm các kiểu mới bằng cách sửdụng CREATE TYPE lệnh Postgres cũng hỗ trợ rất nhiều cú pháp SQL, chẳng hạnnhư biểu thức bảng thông thường, hàm Windows và kế thừa bảng
PostgreSQL hoạt động tốt hơn khi phải chạy nhiều truy vấn phức tạp dưới tảinặng Với các hoạt động đọc-ghi phức tạp yêu cầu xác thực dữ liệu, PostgreSQL là
Trang 28một lựa chọn cơ sở dữ liệu tuyệt vời Tuy nhiên, ORDBMS có thể bị chậm khi có cáchoạt động chỉ đọc (đó là khi MySQL vượt trội).
1.1.2.1.5 Cộng đồng
Postgres tuyên bố đây là 'cơ sở dữ liệu mã nguồn mở tiên tiến nhất trên thịtrường', và đây không phải là sự khoe khoang rỗng tuếch như nhiều người dùng khẳngđịnh táo bạo này Không giống như MySQL, được quản lý bởi Oracle, Postgres đượcgiám sát bởi một cộng đồng các nhà phát triển sôi động, những người có động lực cao
để vừa sử dụng sản phẩm vừa giúp những người khác khám phá nó và giữ cho nó hoạtđộng trơn tru
Dịch vụ hỗ trợ của bên thứ ba có sẵn, nhưng vì Postgres thuộc sở hữu của cộngđồng, nên không có công ty thương mại nào hỗ trợ nó như MySQL với Oracle Tuynhiên, cộng đồng là một cộng đồng có tính tương tác cao và cùng một cộng đồng hỗtrợ và cập nhật liên tục nền tảng thông qua Nhóm phát triển toàn cầu PostgreSQL.1.1.2.1.6 Dữ liệu hình học
Dữ liệu hình học nhanh chóng trở thành một yêu cầu cốt lõi cho nhiều ứng dụng.PostgreSQL từ lâu đã hỗ trợ một loạt kiểu dữ liệu hình học như points, lines, circles,
và polygons Kiểu dữ liệu PATH là một trong số đó Một path bao gồm nhiều điểmtrong một chuỗi và có thể là mở (điểm đầu và điểm cuối không nối với nhau) hoặcđóng (điểm đầu và điểm cuối nối với nhau) Hãy sử dụng một ví dụ đường mòn đi bộđường dài như là một path Trong trường hợp này, đường mòn đi bộ đường dài của tôi
là một vòng lặp vì thế điểm bắt đầu và điểm kết thúc của tôi được nối với nhau, và vìvậy path của tôi là đóng Cặp ngoặc đơn xung quanh tập các tọa độ báo hiệu một pathđóng trong khi một cặp ngoặc [ ] báo hiệu path mở
Phần mở rộng PostGIS có sẵn cho PostgreSQL tăng các tính năng dữ liệu hìnhhọc có sẵn với việc thêm các kiểu không gian, các hàm, các thao tác và các chỉ mục
Nó là vị trí nhận biết và hỗ trợ cả dữ liệu raster và vector Nó cũng cung cấp khả năngtương tác với một loạt mã nguồn mở của bên thứ 3 và các công cụ không gian địa lýđộc quyền để làm việc, lập bản đồ và vẽ các dữ liệu
1.1.2.1.7 Hỗ trỡ JSON
Trang 29Hỗ trợ JSON của PostgreSQL cho phép bạn ít sơ đồ (schema-less) trong một cơ
sở dữ liệu SQL Điều này có thể hữu ích khi cấu trúc dữ liệu yêu cầu phải có sự linhhoạt bởi vì nó vẫn thay đổi trong phát triển hoặc khi nó không biết các trường dữ liệu
mà đối tượng dữ liệu sẽ chứa
Kiểu dữ liệu JSON tuân theo JSON hợp lệ cái cho phép bạn sử dụng các thao tác
và các hàm xây dựng trong PostgreSQL để truy vấn và thao tác dữ liệu Cũng có sẵnkiểu JSONB - một dạng nhị phân của JSON nơi các khoảng trắng được loại bỏ, thứ tựđối tượng không được bảo quản nhưng thay vào đó là lưu trữ tối ưu, và chỉ giá trị cuốicùng cho các khóa trùng lặp được giữ lại JSONB thường là định dạng được ưa thíchkhi nó yêu cầu ít khoảng trống cho đối tượng, có thể đánh chỉ mục và có thể xử lýnhanh hơn vì nó không đòi hỏi parsing lại
Trang 301.2 Giới thiệu ngôn ngữ lập trình Ruby
Ruby là ngôn ngữ script hướng đối tượng free Vào năm 1993, kỹ sư ngườiNhật tên là Matsumoto Yukihiro đã bắt đầu phát triển ngôn ngữ này và công khai nóvào năm 1995 Kể từ sau khi ngôn ngữ Ruby được công khai, những hiệu quả pháttriển mà nó mang lại ngày càng được biết đến rộng rãi, và hiện tại nó đã trở thành 1ngôn ngữ nổi tiếng trên khắp thế giới Ruby được phát triển với mục tiêu "Là ngôn ngữhướng đối tượng trên cả Python 2 và mạnh mẽ hơn cả Perl" Và trong những năm gầnđây, nhờ vào việc xử lý dễ dàng một lượng lớn dữ liệu mà ngôn ngữ này càng đượcphổ biến hơn nữa
Ruby là loại ngôn ngữ có khả năng giảm thiểu xuống mức thấp nhất cho nội dung
mô tả, cấu trúc của nó cũng rất đơn giản và tạo ra được sự tự do cao Chính vì vậy, đâychính là nguyên nhân đảm bảo cho việc mô tả của người dùng trở nên dễ dàng hơn rấtnhiều
Hình 1.2.1.1.1.1: Ruby
1.2.2 Ưu và nhược điểm của Ruby
Với những tính năng của mình, nó đang là một ngôn ngữ lập trình có sự phát triển
và được nhiều lập trình viên ưa thích sử dụng Tuy nhiên, cũng như nhiều ngôn ngữkhác thì Ruby cũng có cho mình những ưu và nhược điểm riêng, nó được thể hiện qua
1.2.2.1 Ưu điểm
Ưu điểm của Ruby có rất nhiều, trong đó có 5 nội dung chính bao gồm:
Trang 31- Ruby là loại ngôn ngữ lập trình vô cùng dễ học, nếu như bạn thành thạo Ruby thì việc
sử dụng Ruby on Rails quá đơn giản
- Nhu cầu công việc liên quan đến lập trình viên Ruby ngày càng tăng cao
- Hệ sinh thái của Ruby vô cùng rộng lớn và mang lại nhiều hữu ích
- Ruby là ngôn ngữ lập trình có thể dễ dàng kết nối cùng với DB2, MySQL, Oracle vàSybase
- Bạn có thể thực hiện viết thư viện bền ngoài bằng Ruby hoặc bằng C
- Tính năn bảo mật của Ruby vô cùng cao và tốt
- Cú pháp thực hiện Ruby đang ngày càng trở nên linh hoạt rất nhiều
- Hệ thống chuỗi xử lý của Ruby đang rất mạnh mẽ
- Lập trình viên Ruby có thể hoạt động trên nhiều nền tảng khác nhau
- Bạn có thể ứng dụng Ruby để có thể thực hiện nhúng vào HTML
- Ruby là ngôn ngữ sở hữu mã nguồn mở
- Ngôn ngữ cấp cao
1.2.2.2 Nhược điểm của Ruby
Với những ưu điểm tiện dụng, người học lập trình có thể dễ học thì PHP cũng
có những nhược điểm cơ bản Trong đó, nó được thể hiện qua:
- Cách sử dụng Ruby được các chuyên gia đánh giá là vô cùng đơn giản, tuy nhiên quátrình học Ruby có thể gặp nhiều khó khăn ở phần cài đặt môi trường
- Hiện nay, thời gian xử lý của Ruby thường chậm hơn rất nhiều so với các loại ngônngữ lập trình khác
1.2.3 Giới thiệu về framework Ruby on Rails
Ruby on Rails là một khung làm việc (web framework) được viết trên ngôn ngữlập trình Ruby và được sử dụng trong việc xây dựng và phát triển các ứng dụng web.Phiên bản đầu tiên của Ruby on Rails được giới thiệu ra cộng đồng vào năm 2015.Ruby on Rails là phần mềm mã nguồn mở miễn phí được phát triển bởi DavidHeinemeier Hansson
Trang 32Ruby on Rails được xây dựng trên các tập quán hiện đại nhất trong xây dựng vàphát triển website do đó khi bạn nắm vững Ruby on Rails bạn sẽ dễ dàng chuyển sangmột web framework khác.
Ruby on Rails có cấu trúc trong sáng và dễ hiểu rất dễ tiếp cận cho những lậptrình viên mới vào nghề Ngoài ra, Rails cung cấp cho chúng ta công cụ cửa sổ dònglệnh CLI giúp tự động hoá nhiều công việc thường gặp khi lập trình qua đó tăng tốc độ
và hiệu suất làm việc
Ngoài ra, Ruby on Rails cũng là một trong những web framework được sử dụngphổ biến nhất hiện nay và được sử dụng bởi nhiều website lớn trên thế giới trong đó cómạng xã hội Twitter, trang mạng xã hội cho lập trình viên Github, công cụ quản lý dự
án hàng đầu Redmine
Điều gì khiến Ruby on Rails trở nên mạnh mẽ:
- Thư viện: Rails có khả năng cung cấp cho người sử dụng gem và tất cả gem này đều
có thể sử dụng miễn phí và dễ dàng
- Công cụ: Người dùng sẽ được Rails cung cấp một cấu trúc siêu chuẩn cho các ứngdụng web Nhờ vậy, chúng ta có thể dễ dàng triển khai mọi tính năng mà không cầnphải bỏ ra quá nhiều thời gian
- Chất lượng code: Nhìn chung hiện nay, chất lượng phần mềm hỗ trợ Ruby code đượcđánh giá là cao hơn nhiều so với những loại ngôn ngữ khác
- Hiệu suất: Rails đang là một trong những ngôn ngữ lập trình vô cùng gọn gàng, nênkhi sử dụng bạn có thể kết hợp đi kèm với những thư viện hỗ trợ khác Từ đó, quátrình phát triển sẽ trở nên nhanh chóng hơn rất nhiều
- Cộng đồng: Hiện tại, cộng đồng Ruby đang rất lớn mạnh và nó là ngôn ngữ lập trìnhđang rất phổ biến trên Github
- Tương lai: Là một trong những ngôn ngữ được các trang học tập đánh giá cao về độphổ biến Chính vì vậy, số lượng lập trình viên giỏi giang đang dần gia nhập vào cộngđồng Ruby nhiều hơn
Trang 331.3 Giới thiệu về Visual Studio Code
Là một trình biên tập lập trình code miễn phí dành cho Windows, Linux vàmacOS, Visual Studio Code được phát triển bởi Microsoft Nó được xem là một sự kếthợp hoàn hảo giữa IDE và Code Editor
Visual Studio Code hỗ trợ chức năng debug, đi kèm với Git, có syntaxhighlighting, tự hoàn thành mã thông minh, snippets, và cải tiến mã nguồn Nhờ tínhnăng tùy chỉnh, Visual Studio Code cũng cho phép người dùng thay đổi theme, phímtắt, và các tùy chọn khác
- Cung cấp kho tiện ích mở rộng
- Kho lưu trữ an toàn
- Visual Studio Code hỗ trợ nhiều ứng dụng web Ngoài ra, nó cũng có một trình soạnthảo và thiết kế website
- Lưu trữ dữ liệu dạng phân cấp
- Hỗ trợ Git
Trang 34Hình 1.3.1.1.1.1: Visual Studio Code
Chương 2 PHÂN TÍCH THIẾT KẾ HỆ THỐNG2.1 Phân tích tác nhân và chức năng
Trang 35- Xem danh sách các từ vựng của những khóa học đã đăng kí
- Làm kiểm tra sau khi hoàn thành một bài học
- Nhắn tin với người dùng khác bằng nhóm chat hoặc là chat riêng giữa 2 người dùng
- Quản lí thông tin cá nhân
2.1.2.3 Quản trị viên
- Đăng nhập/ Đăng xuất
- Quản lí thông tin cá nhân
Trang 362.2 Sơ đồ use-case
Hình 2.2.1.1.1.1: Sơ đồ use-case tổng quát
Trang 372.3 Sơ đồ hoạt động
2.3.1 Khách hàng vãng lai
2.3.1.1 Sơ đồ hoạt động xem các khóa học
Hình 2.3.1.1.1.1: Sơ đồ hoạt động xem danh sách khóa học
Trang 382.3.1.2 Sơ đồ hoạt động tìm kiếm
Hình 2.3.1.2.1.1: Sơ đồ hoạt động tìm kiếm
Trang 392.3.2 Khách hàng thành viên
2.3.2.1 Sơ đồ hoạt động Đăng nhập
Hình 2.3.2.1.1.1: Sơ đồ hoạt động Đăng nhập
Trang 402.3.2.2 Sơ đồ hoạt động Đăng ký khóa học
Hình 2.3.2.2.1.1: Sơ đồ hoạt động Đăng ký khóa học
2.3.2.3 Sơ đồ hoạt động Chat(nhắn tin)
Hình 2.3.2.3.1.1: Sơ đồ hoạt động Chat(nhắn tin)