1. Trang chủ
  2. » Luận Văn - Báo Cáo

Luận văn tốt nghiệp Khoa học máy tính: Phát triển hệ thống quản lý hồ sơ và khiếu nại dân sự tại tòa án nhân dân cấp quận

163 0 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Nội dung

Trang 1

ĐẠI HỌC QUỐC GIA TP HCMTRƯỜNG ĐẠI HỌC BÁCH KHOA

KHOA KHOA HỌC VÀ KỸ THUẬT MÁY TÍNH

LUẬN VĂN TỐT NGHIỆP ĐẠI HỌC

PHÁT TRIỂN HỆ THỐNG QUẢN LÝ HỒ SƠ VÀKHIẾU NẠI DÂN SỰ TẠI TÒA ÁN NHÂN DÂN CẤP

Ngành: KHOA HỌC MÁY TÍNH

Hội đồng: Khoa học Máy tính 2

Giảng viên Hướng dẫn: TS Phan Trọng Nhân

Giảng viên Phản biện: ThS Nguyễn Đình Thành

Sinh viên Thực hiện 1: Ngô Quang Anh (1810014)

Sinh viên Thực hiện 2: Thái Minh Tiến (1814324)

THÀNH PHỐ HỒ CHÍ MINH ­ THÁNG 01 NĂM 2023

Trang 5

Lời cam đoan

Nhóm sinh viên thực hiện đề tài:

Ngô Quang Anh ­ MSSV: 1810014Thái Minh Tiến ­ MSSV: 1814324

Khoá 2018, Khoa Khoa học và Kỹ thuật Máy tính, Trường Đại học Bách Khoa, Đạihọc Quốc gia Thành phố Hồ Chí Minh

Tên đề tài: “Phát triển hệ thống quản lý hồ sơ và khiếu nại dân sự tại toà án nhân dân

cấp Quận/Huyện”

Tôi xin cam đoan kết quả đạt được trong luận văn tốt nghiệp là sản phẩm của riêng cánhân, không sao chép lại của người khác Trong toàn bộ nội dung của báo cáo, nhữngđiều được trình bày hoặc là của cá nhân hoặc là được tổng hợp từ nhiều nguồn tài liệu.Tất cả các tài liệu tham khảo đều có xuất xứ rõ ràng và được trích dẫn hợp pháp.

Nếu lời cam đoan trái với sự thật, nhóm xin chịu mọi trách nhiệm và hình thức kỉ luậttrước Khoa và Nhà trường.

Nhóm sinh viên thực hiện đề tài

Trang 6

Lời cảm ơn

Lời đầu tiên, nhóm xin gửi lời cảm ơn chân thành đến TS Phan Trọng Nhân vì sựhướng dẫn tận tình cũng như những ý kiến đóng góp trong suốt quá trình nhóm thực hiệnđề cương.

Nhóm cũng xin cám ơn quý Thầy, Cô Trường Đại học Bách Khoa ­ Đại học Quốc giaThành phố Hồ Chí Minh, đặc biệt là quý Thầy, Cô Khoa Khoa học và Kỹ thuật Máy tínhđã tận tình giảng dạy, giúp nhóm có được những kiến thức nền tảng để thực hiện đề tàinày.

Mặc dù đã cố gắng hoàn thành luận văn trong phạm vi và khả năng cho phép, nhưngchắc chắn sẽ không tránh khỏi những thiếu sót, rất mong nhận được sự góp ý và chỉ bảocủa quý thầy cô và các bạn.

Cuối cùng, nhóm em xin chân thành cảm ơn thầy cô và các bạn đã dành thời gian đọctài liệu báo cáo này.

Thành phố Hồ Chí Minh, ngày 10 tháng 01 năm 2023

Nhóm sinh viên thực hiện đề tài

Trang 7

Tóm tắt

Trong xã hội hiện nay, cuộc sống luôn phát sinh nhiều vấn đề mẫu thuẫn với nhau.Việc khiếu nại, kiện tụng hay vi phạm pháp luật đều cần phảp giải quyết Tuy nhiên,khối lượng giải quyết công việc đối với tòa án là khổng lồ Thậm chí không có nhiềungười đã biết được những kiến thức cơ bản về pháp luật

Việc có một hệ thống giúp cung cấp kiến thức cho sinh viên nói riêng và người dânnói chung, đồng thời giảm bớt áp lực cùng khối lượng công việc đối với những cán bộtòa án là một điều ý nghĩa, giúp ích trong cuộc sống hiện đại và kỉ nguyên số hiện nayBáo cáo luận văn mà nhóm trình bày dưới đây sẽ được thể hiện thông qua các chươngnhư sau:

Chương I ­ Giới thiệu: Cung cấp thông tin tổng quan về các vấn đề, mục tiêu,

phạm vi, thuận lợi và khó khăn của đề tài.

Chương II ­ Cơ sở lí thuyết và công nghệ: Tiến hành tìm hiểu các hệ thống liên

quan, lựa chọn công nghệ và mô hình phù hợp với hệ thống cần xây dựng.

Chương III ­ Phân tích các yêu cầu: Xác định các bài toán cần giải quyết, phân

tích yêu cầu nghiệp vụ mà hệ thống cần có.

Chương IV ­ Thiết kế hệ thống: Mô tả kiến trúc hệ thống, mô tả luồng hoạt động,

vẽ use case diagram và thiết kế cơ sở dữ liệu.

Chương V ­ Xây dựng hệ thống: Kết quả của quá trình hiện thực các quy trình

nghiệp vụ về cả Backend và Frontend.

Chương VI ­ Kiểm thử: Mô tả quy trình và kết quả của nhiều phương pháp kiểm

thử khác nhau.

Chương VII ­ Tổng kết: Tổng kết lại các kết quả đã đạt được, xác định các khó

khăn gặp phải trong quá trình phát triển hệ thống và trình bày một số hướng pháttriển cho hệ thống hiện tại.

Trang 8

1 Đặt vấn đề 1

2 Các phương pháp giải quyết vấn đề có sẵn 3

2.1 Sử dụng các tiện ích như Google Drive để lưu tài liệu 3

2.2 Sử dụng các phần mềm văn phòng như Google Sheet, MicrosoftExcel để theo dõi, thống kê, tổng hợp 3

2.3 Kết luận 3

3 Hướng tiếp cận, giải quyết bài toán 3

4 Mục tiêu của đề tài 4

1.2.1 Ưu điểm của ReactJS 9

1.2.2 Nhược điểm của ReactJS 10

1.3 Redux 10

1.4 CoreUI Template 11

2 Backend 12

2.1 NestJS 12

Trang 9

2.2 TypeORM 13

2.3 Swagger 14

3 Cơ sở dữ liệu 14

3.1 Tổng quan về cơ sở dữ liệu, hệ cơ sở dữ liệu 14

3.2 Cơ sở dữ liệu quan hệ 16

3.3 PostgreSQL 19

3.3.1 Các tính năng của PostgreSQL 19

3.3.2 Ưu điểm của PostgreSQL 20

3.3.3 Nhược điểm của PostgreSQL 20

2 Quy trình tiếp nhận, thụ lí vụ án dân sự tại Toà án Nhân dân các cấp 25

2.1 Quy trình tiếp nhận, lưu trữ hồ sơ 28

2.2 Phạm vi tiếp cận trong việc tố tụng dân sự 29

2.3 Quy trình triển khai kế hoạch, thi đua tại toà án 29

3 Bài toán và giải pháp 31

3.1 Quản lí hồ sơ, các tài liệu liên quan 31

3.2 Bài toán phân quyền người dùng 32

3.3 Phê duyệt hồ sơ đủ điều kiện, đủ tiêu chí 33

3.4 Nhắc nhở người dùng khi có hồ sơ gần đến hạn, hoặc hết hạnthẩm định 33

3.5 Quản lí các hoạt động, tham gia hoạt động 33

3.6 Vẽ cây gia phả 34

3.7 Xuất báo cáo hồ sơ theo mẫu 34

4 Phân quyền người dùng 34

5 Yêu cầu chức năng 35

5.1 Quản lí tài khoản 35

5.2 Quản lí hồ sơ và các bộ Hồ sơ 35

5.3 Tạo bộ tiêu chí cho hồ sơ 36

5.4 Quản lí phê duyệt hội đồng cho hồ sơ 36

5.5 Quản lí hoạt động 36

Trang 10

5.6 Quản lí người tham gia hoạt động 36

5.7 Quản lí thi đua giữa các đơn vị 36

5.8 Vẽ cây gia phả 37

5.9 Xem thống kê, số liệu 37

6 Yêu cầu phi chức năng 37

Chương IV Thiết kế hệ thống381 Tổng quát kiến trúc hệ thống 38

2 Chi tiết module Quản lí hồ sơ 39

2.1 Use case diagram cho Module Quản lí hồ sơ 39

2.2 Đặc tả Use case 40

2.3 Activity Diagram 45

2.3.1 Người dùng đăng nhập 45

2.3.2 Người dùng cập nhật thông tin cá nhân 46

2.3.3 Người dùng Nộp hồ sơ trong bộ hồ sơ 47

2.3.4 Quản lí hệ thống tạo Bộ hồ sơ 48

2.3.5 Quản lí hệ thống phân công Hội đồng xét duyệt 49

2.3.6 Thành viên Hội đồng duyệt bài cho Bộ hồ sơ 50

2.3.7 Chủ tịch Hội đồng duyệt bài cho Bộ hồ sơ 51

3 Chi tiết module Hoạt động 52

3.1 Use Case Diagram cho Module Hoạt động 52

4 Chi tiết module Vẽ cây gia phả 61

4.1 Use case Diagram 61

4.2 Đặc tả Usecase 62

4.3 Acitivy Diagram 63

4.3.1 Thêm thành viên trong gia phả 63

4.3.2 Chỉnh sửa thành viên trong gia phả 64

4.3.3 Xoá thành viên trong gia phả 65

5 Sơ đồ trình tự của các chức năng (Sequence diagram) 65

Trang 11

5.1 Đăng nhập 66

5.2 Quản lí thông tin 66

5.3 Thêm Bộ hồ sơ 67

5.4 Thêm tiêu chí 68

5.5 Thêm Hội đồng Xét duyệt 68

5.6 Duyệt và tổng duyệt hồ sơ 69

5.7 Xem báo cáo, tổng kết 69

5.14 Nhắc nhở thông báo hồ sơ gần đến hạn 73

5.15 Đăng ký tham gia hoạt động 74

6 Thiết kế cơ sở dữ liệu 75

6.1 Entity Relationship Diagram 75

6.2 Đối với Module Quản lí hồ sơ 76

6.3 Đối với Module Hoạt động 86

6.4 Đối với Module Vẽ cây gia phả 90

Chương V Xây dựng hệ thống911 Danh sách các API 91

1.1 Lấy danh sách hồ sơ 91

1.2 Tạo bộ tiêu chí cho Bộ hồ sơ 92

1.3 Đăng kí 1 Bộ hồ sơ 93

1.4 Phân công người chấm 94

1.5 Phê duyệt 1 Bộ hồ sơ 95

2 Giao diện người dùng 96

2.1 Đăng nhập 96

2.2 Quản lí thông tin 96

2.3 Quản lí bộ hồ sơ 98

2.4 Quản lí tiêu chí 100

2.5 Quản lí Hội đồng Xét duyệt 103

2.6 Duyệt và tổng duyệt hồ sơ 105

2.7 Xem báo cáo, tổng kết 106

Trang 12

2.15 Nhắc nhở thông báo hồ sơ gần đến hạn 117

2.16 Nhắc nhở thông báo hồ sơ hết hạn 117

2.17 Đăng ký tham gia hoạt động 118

2.18 Màn hình vẽ cây gia phả 118

2.19 Thêm thành viên trong gia phả 119

2.20 Chỉnh sửa thành viên trong gia phả 121

2.21 Xoá thành viên trong gia phả 122

Chương VI Kiểm thử, đánh giá hệ thống1231 Cơ sở lí thuyết 123

4.5 Kiểm thử hiệu suất trang web 127

4.6 Kiểm thử chịu tải Frontend 129

4.7 Kiểm thử thực tế từ người dùng 131

5 Kiểm thử API 132

5.1 Giới thiệu 1325.2 Kiểm tra tính đúng đắn của API bằng các dữ liệu không hợp lệ 133

Trang 13

5.3 Kiểm tra tính đúng đắn của API bằng các dữ liệu hợp lệ 135

5.4 Kiểm thử chịu tải API 136

Chương VII Tổng kết1381 Đánh giá kết quả sau quá trình thực hiện luận văn 138

1.1 Kết quả đạt được 138

1.2 Thuận lợi 139

1.3 Khó khăn 139

2 Hướng phát triển trong tương lai 139

Trang 14

3 Mô tả và so sánh giữa TypeScript và JavaScript [2] 6

4 Sơ đồ mô tả các ưu và nhược điểm của ReactJS [3] 8

5 Công nghệ Virtual DOM 9

6 Một giao diện người dùng mẫu của CoreUI 12

7 Số liệu trên stateofjs.com năm 2019 13

8 TypeORM 13

9 Mẫu Swagger 14

10 Sơ đồ hệ thống cơ sở dữ liệu 15

11 Sơ đồ mô hình 3 ­ Layer 21

12 Mô tả về RESTful API [6] 22

13 Cách thức hoạt động của RESTful API [6] 23

14 Sơ đồ tổ chức TAND cấp Quận, Huyện, và cấp tương đương [20] 24

15 Sơ đồ BPMN Quy trình tiếp nhận, thụ lí, giải quyết hồ sơ của Tòa án đốivới hồ sơ thuộc Luật Hôn nhân và Gia đình, Luật dân sự 28

16 Phạm vi tiếp cận trong quy trình tố tụng [21] 30

17 Ràng buộc thời gian tạo đợt hoạt động 30

18 Ràng buộc thời gian diễn ra hoạt động 30

19 Sơ đồ BPMN về quy trình ban hành, triển khai các hoạt động, thi đua tạitoà án 31

20 Sơ đồ thư mục quản lí Bộ hồ sơ 32

21 Phương thức, thể hiện các hoạt động, nhóm hoạt động thi đua 33

22 Ràng buộc thời gian tạo đợt hoạt động 33

23 Ràng buộc thời gian diễn ra hoạt động 34

24 Sơ đồ của hệ thống 38

25 Use case Diagram cho Module Quản lí hồ sơ 39

26 Người dùng Đăng nhập 45

27 Người dùng Cập nhật thông tin cá nhân 46

28 Người dùng Nộp hồ sơ trong bộ hồ sơ 47

29 Quản lí hệ thống tạo Bộ hồ sơ 48

30 Quản lí hệ thống phân công Hội đồng Xét duyệt 49

Trang 15

31 Thành viên Hội đồng duyệt bài cho Bộ hồ sơ 50

32 Chủ tịch Hội đồng duyệt bài cho Bộ hồ sơ 51

33 Use case Diagram cho Module Hoạt động 52

39 Use case diagram chia thừa kế theo pháp luật 61

40 Thêm thành viên trong gia phả 63

41 Chỉnh sửa thành viên trong gia phả 64

42 Xóa thành viên trong gia phả 65

43 Sequence diagram Đăng nhập 66

44 Sequence diagram Quản lí thông tin 66

45 Sequence diagram Thêm bộ hồ sơ 67

46 Sequence diagram Thêm tiêu chí 68

47 Sequence diagram Thêm hội đồng xét duyệt 68

48 Sequence diagram Duyệt hồ sơ 69

49 Sequence diagram Xem báo cáo 69

50 Sequence diagram Quản lí người dùng 70

51 Sequence diagram Quản lí bộ phận 70

52 Sequence diagram Nộp hồ sơ 71

53 Sequence diagram Thêm đợt hoạt động 71

54 Sequence diagram Thêm nhóm hoạt động 72

55 Sequence diagram Thêm hoạt động 73

56 Sequence diagram Nhắc nhở hồ sơ gần đến hạn 73

57 Sequence diagram Đăng kí tham gia hoạt động 74

58 Entity Relationship Diagram 75

59 Giao diện Đăng nhập 96

60 Giao diện Quản lí thông tin cá nhân 97

61 Giao diện Quản lí hồ sơ 98

62 Giao diện Thêm hồ sơ 98

63 Giao diện Quản lí tiêu chí 100

64 Giao diện Thêm tiêu chí 101

65 Giao diện Nạp tiêu chí từ một bộ hồ sơ khác 102

66 Giao diện Quản lí Hội đồng xét duyệt 103

Trang 16

67 Giao diện Thành lập hội đồng xét duyệt 104

68 Giao diện Thêm hội đồng xét duyệt 104

69 Giao diện Cảnh báo khi lập duyệt hội đồng 104

70 Giao diện Duyệt hồ sơ của hội đồng xét duyệt 105

71 Giao diện Tổng duyệt của chủ tịch Hội đồng 105

72 Giao diện Duyệt hồ sơ 105

73 Giao diện Chi tiết hồ sơ 105

74 Giao diện Báo cáo tổng kết 106

75 Giao diện Quản lí người dùng 107

76 Giao diện Phân quyền 108

77 Giao diện Quản lí bộ phận 108

78 Giao diện Nộp hồ sơ 109

79 Giao diện Xem trước tiêu chí trước khi nộp hồ sơ 109

80 Giao diện Nộp hồ sơ theo tiêu chí 110

81 Giao diện Đợt hoạt động 110

82 Giao diện Thêm đợt hoạt động 111

83 Ràng buộc thời gian tạo đợt hoạt động 112

84 Giao diện Nhóm hoạt động 112

85 Giao diện Thêm nhóm hoạt động 113

86 Giao diện Danh sách hoạt động 114

87 Giao diện Thêm hoạt động 115

88 Ràng buộc thời gian diễn ra hoạt động 116

89 Thông báo hồ sơ gần đến hạn 117

90 Thông báo hồ sơ quá hạn 117

91 Giao diện Đăng kí tham gia hoạt động 118

92 Giao diện cây gia phả 118

93 Giao diện thêm thành viên trong cây gia phả 119

94 Giao diện Chỉnh sửa thông tin trong cây gia phả 121

95 Giao diện Xóa thành viên trong cây gia phả 122

96 Kết quả kiểm thử hiệu suất trang web bằng Lighthouse 129

97 Báo cáo kết quả truy cập Website 130

98 Đồ thị kết quả truy cập Website 131

99 Kiểm thử khả năng xác thực người dùng bằng cách gọi API chưa đăngnhập 133

100 Kiểm thử API đăng nhập bằng token không hợp lệ 133

101 Kiểm thử API tạo bộ hồ sơ bằng dữ liệu không hợp lệ 134

Trang 17

102 Kiểm thử API tạo bộ hồ sơ bằng dữ liệu không hợp lệ 134

103 Kiểm thử API đăng nhập bằng token hợp lệ 135

104 Kiểm thử API tạo bộ hồ sơ bằng dữ liệu hợp lệ 135

105 Kiểm thử API tạo bộ hồ sơ bằng dữ liệu hợp lệ 136

106 Báo cáo kết quả truy cập API 137

107 Đồ thị kết quả truy cập API 137

Trang 18

DANH SÁCH BẢNG

1 Bảng kí hiệu viết tắt xvii

2 Bảng so sánh NoSQL và SQL 18

3 Use case Đăng nhập 40

4 Use case Cập nhật thông tin cá nhân 40

5 Use case Tạo hồ sơ 41

6 Use case Tạo Bộ hồ sơ 41

7 Use case Quản lí tiêu chí 42

8 Use case Quản lí Hội đồng xét duyệt 42

9 Use case Quản lí người dùng 43

10 Use case Duyệt hồ sơ 44

11 Use case Tổng kết bộ hồ sơ 44

12 Use case Tạo Đợt hoạt động 53

13 Use case Tạo Nhóm hoạt động 53

14 Use case Tạo Hoạt động 54

15 Use case Đăng kí Hoạt động 54

16 Use case Duyệt đăng kí tham gia hoạt động 55

17 Use case Thêm thành viên trong gia phả 62

18 Use case Chỉnh sửa thành viên trong gia phả 62

19 Use case Xoá thành viên trong gia phả 63

Trang 19

35 Bảng tham số lấy danh sách Bộ hồ sơ 91

36 Bảng trả về danh sách Bộ hồ sơ 91

37 Bảng bộ tiêu chí 92

38 Bảng thông báo sau khi tạo bộ tiêu chí 92

39 Bảng dữ liệu người nộp hồ sơ 93

40 Bảng thông báo sau khi tạo bộ hồ sơ 93

41 Bảng phân công người duyệt hồ sơ 94

42 Bảng thông báo sau khi phân công duyệt hồ sơ 94

43 Bảng phân công người duyệt hồ sơ 95

44 Bảng thông báo sau khi duyệt bài 95

45 Trường thông tin cung cấp cá nhân 97

46 Trạng thái và tính năng tương ứng cho từng bộ hồ sơ 99

47 Trường thông tin và mô tả tương ứng cho Thêm hồ sơ 99

48 Trường thông tin và mô tả tương ứng cho Thêm tiêu chí 102

49 Tính năng và mô tả tương ứng cho Đợt Hoạt động 111

50 Trường thông tin và mô tả tương ứng cho đợt hoạt động 111

51 Tính năng và mô tả tương ứng cho nhóm Hoạt động 113

52 Trường thông tin và mô tả tương ứng cho nhóm hoạt động 113

53 Trạng thái, tính năng và mô tả hoạt động 114

54 Trường thông tin và mô tả tương ứng cho hoạt động 116

55 Trường thông tin và mô tả trong ô “Thêm thành viên” trong gia phả 120

56 Danh sách thiết bị và môi trường kiểm thử website 124

57 Bảng Kết quả kiểm thử 126

58 Thực hiện kiểm thử khả năng sử dụng 127

59 Các thông số do Lighthouse cung cấp 128

60 Các thông số trong JMeter 130

61 Hướng phát triển của hệ thống 140

Trang 20

Một số kí hiệu viết tắt

Tên viết tắtTên đầy đủGhi chú

API Application Programming Interface

Chrome Google Chrome Trình duyệt web được phát triểnbởi Google

CSS Cascading Style Sheets

DBMS Database Management System Hệ quản trị cơ sở dữ liệu

DOM Document Object Model Mô hình Các Đối tượng Tài liệuERD Entity Relationship Diagram Lược đồ thực thể mối liên kết

RDBMS Relational Database Management

System Hệ quản trị cơ sở dữ liệu quan hệSEO Search Engine Optimization Tối ưu hoá công cụ tìm kiếm

Trang 21

Tên viết tắtTên đầy đủGhi chú

Single responsibility principle

Open/closed principle 5 Nguyên tắc trong

SOLID Liskov Substitution Principle lập trình hướng đối tượngInterface Segregation Principle

Dependency inversion principle

SQL Structured Query Language Ngôn ngữ truy vấn có cấu trúc

UI/UX User interface/User experience Giao diện và trải nghiệm ngườidùng

USB Universal Searial Bus

WAL Write ­ ahead Logging

Ghi nhật ký ghi trước Mộtthành phần không thể thiếu trongPostgreSQL

XML Extensible Markup Language Ngôn ngữ đánh dấu mở rộng

Bảng 1: Bảng kí hiệu viết tắt

Trang 22

Chương I Giới thiệu1 Đặt vấn đề

Hàng năm, ngành Toà án nhân dân xét xử gần 600.000 vụ án khác nhau Cụ thể, từngày 01/10/2020 đến ngày 30/9/2021, các Tòa án đã thụ lí 537.577 vụ việc, đã giải quyếtđược 436.660 vụ việc (đạt tỉ lệ 81,2%); số vụ việc đã thụ lí giảm 64.675 vụ việc, đã giảiquyết giảm 107.944 vụ việc nguyên nhân là do ảnh hưởng của dịch Covid­19 nên nhiềuvụ việc không thể mở phiên tòa, phiên họp theo kế hoạch [1].

Hình 1: Biểu đồ thể hiện số lượng vụ án mà toà án nhân dân đã thụ lí và giải quyết từngày 01/10/2020 đến 30/9/2021

Trong quá trình hoạt động hình thành một khối lượng lớn hồ sơ Mỗi hồ sơ sẽ liênquan đến từ 5 đến 6 đơn vị liên quan khác nhau như: Người dân, Cơ quan điều tra, Việnkiểm sát, Tòa án, Người tiếp nhận hồ sơ sẽ phải thu thập các tài liệu, chứng cứ khácnhau nhưng sẽ phải bổ sung theo thời gian sau này; đồng thời sắp xếp và lưu trữ lại toànbộ hồ sơ này.

Trang 23

Hình 2: Biểu đồ thể hiện phần trăm phân loại các vụ án mà toà án nhân dân đã thụ lí vàgiải quyết từ ngày 01/10/2020 đến 30/9/2021

Việc tiếp nhận, quản lí hồ sơ sẽ gây ra nhiều khó khăn cụ thể như sau:­ Đối với Bộ phận tiếp nhận hồ sơ, Thư kí:

+ Việc tiếp nhận hồ sơ, tài liệu phải theo một quy trình xác định Trong một hồsơ phải có các tài liệu bắt buộc và tài liệu thêm và phải sắp xếp theo trình tự đểnộp về tòa án.

+ Tất cả các hồ sơ đều là bản cứng, từng tài liệu trong hồ sơ đều phải scan, lưutừng file, thao tác tệp thư mục trên máy tính.

+ Các tài liệu cũ đều bị mối mọt, kiểm tra ngày nộp hồ sơ bằng sổ viết tay.+ Khi cuối năm hay cuối nhiệm kì, không có tổng kết hồ sơ còn tồn đọng.­ Đối với Chánh án, Thẩm phán:

+ Tiếp nhận hồ sơ qua email, hoặc thông qua Google Drive, lưu trữ

+ Vấn đề bảo mật: không được lưu trữ trên mạng, tránh xâm nhập Di chuyểnthông qua mạng LAN, hoặc dùng thiết bị USB thông thường

Tòa án nhân dân cấp quận, huyện, thành phố trực thuộc tỉnh luôn giải quyết gần 60 vụviệc dân sự bao gồm: Chia thừa kế theo pháp luật (Luật dân sự), giải quyết vấn đề tàisản sau hôn nhân (Luật Hôn nhân và Gia đình).

Trang 24

2 Các phương pháp giải quyết vấn đề có sẵn

2.1Sử dụng các tiện ích như Google Drive để lưu tài liệu

­ Ưu điểm:

+ Không phải thu thập hồ sơ trực tiếp.

+ Không bị thất lạc trong quá trình lưu trữ tài liệu.+ Có thể chỉnh sửa lại minh chứng sau khi nộp.

+ Dung lượng lưu trữ hạn chế, phụ thuộc vào Google.

2.2Sử dụng các phần mềm văn phòng như Google Sheet, Microsoft Excel để theodõi, thống kê, tổng hợp

3 Hướng tiếp cận, giải quyết bài toán

Với thực trạng về vấn đề Pháp luật có những điều đáng chú ý như sau:

­ Số hóa dữ liệu lưu trữ theo Quy chế công tác lưu trữ trong ngành Tòa án Nhân dânđược Chánh án Tòa án Nhân dân Tối cao phê duyệt.

Trang 25

­ Quy trình bảo quản hồ sơ lưu trữ dễ dàng hơn?

­ Thuận tiện cho việc xem lại kết quả báo cáo cuối năm/ cuối nhiệm kì.

­ Dễ dàng chia tài sản theo quy định của pháp luật.

Từ đó nhóm đề xuất ra ý tưởng xây dựng hệ thống có thể đáp ứng việc số hóa, lưu trữ hồsơ tại Hệ thống tòa án Nhân dân cấp huyện, đồng thời phân tích, hướng dẫn từng bướctrong việc chia tài sản trong gia đình, trong hôn nhân nhằm giải thích rõ cho người dânđối với Tòa án tiếp nhận khiếu nại; tổ chức, quản lí hoạt động nội bộ, quản lí các chươngtrình thi đua trong Tòa án.

4 Mục tiêu của đề tài

Hệ thống thể hiện được các mục tiêu sau:

1 Thể hiện được 1 bộ tiêu chí hồ sơ, tệp hồ sơ hoàn chỉnh.

2 Thể hiện các tiêu chí lồng cấp nhau và ràng buộc lẫn nhau 1 cách trực quan và dễhiểu, dễ nhìn nhất có thể.

3 Người dùng có thể xem và nộp được hồ sơ dựa trên các yêu cầu của bộ tiêu chí cũngnhư theo dõi tiến trình và được quyền chỉnh sửa lại hồ sơ.

4 Lập được hội đồng để xét duyệt cho bộ hồ sơ đó.

5 Duyệt được các hồ sơ của các thành viên đã nộp.

6 Thông báo ra các kết quả cũng như các tổng két dữ liệu.

7 Thể hiện được sự khác nhau giữa việc quản lí bộ hồ sơ và thi đua nội bộ trong Toàán nhân dân.

8 Thể hiện được các hoạt động sinh hoạt, thời gian bộ hồ sơ trên hệ thống.

9 Thiết lập được các ràng buộc thời gian phức tạp:

­ Ngày đợt hoạt động diễn ra phải từ sau ngày Ban Giám đốc hay Thủ trưởng cơquan phê duyệt, ban hành kế hoạch.

­ Ngày kết thúc đợt hoạt động phải từ sau ngày các phòng, ban nộp báo cáo tổngkết.

­ Ngày đợt hoạt động diễn ra phải từ sau ngày Ban Giám đốc hay Thủ trưởng cơquan phê duyệt, ban hành kế hoạch.

Trang 26

­ Ngày kết thúc đợt hoạt động phải từ sau ngày Phòng, ban nộp báo cáo tổng kết.­ Ngày hoạt động mở đăng kí cho cán bộ phải từ sau ngày diễn ra đợt hoạt động.­ Ngày hoạt động diễn ra phải từ sau ngày mở đăng kí cho cán bộ.

­ Ngày hoạt động két thúc phải sau ngày kết thúc mở đăng kí cho cán bộ nhưngmuộn nhất là đến ngày kết thúc đợt hoạt động.

5 Phạm vi của đề tài

­ Quy mô sử dụng: Toà án Nhân dân quận/ huyện (thử nghiệm tại Toà án nhân dân

Quận Dương Kinh, Thành phố Hải Phòng).

­ Các đối tượng sử dụng đề tài: Các cán bộ trong cơ quan Toà án.

6 Đánh giá sơ bộ

6.1Thuận lợi

Qua quá trình nghiên cứu, nhóm nhận thấy một số thuận lợi như sau:

Đề tài này có thể được đánh giá là mang tính cấp thiết, tính mới, có tính ứng dụngcao vào thực tiễn khi đáp ứng nhu cầu số hóa trong chương trình Chính phủ số, sốhóa trong dịch vụ công.

Các tài liệu liên quan đến các vụ án quá nhiều, nhiều tài liệu, chứng cứ, bút lục Cáctài liệu này khá nhiều và phổ biến Điều này vô tình giúp nhóm có nhiều tài liệutham khảo.

Có cán bộ giúp đỡ về nghiệp vụ, quy trình.

6.2Khó khăn

Bên cạnh thuận lợi, nhóm cũng nhận thấy một số khó khăn như sau:

Các thành viên nhóm không có ai tham gia trực tiếp vào quá trình tố tụng Nên chỉđược tham gia học hỏi về phần nghiệp vụ chính.

Khối lượng công việc phải thực hiện khá lớn vì hệ thống phải xử lí nhiều luồng vàlưu trữ lượng lớn thông tin.

Phạm vi đề tài hướng tới nhiều đối tượng.

Trang 27

Chương II Cơ sở lí thuyết và công nghệ1 Giao diện người dùng

Ngôn ngữ lập trình Javascript là một trong những ngôn ngữ lập trình phổ biến nhấthiện nay Ngôn ngữ lập trình Javascript được áp dụng chủ yếu trong HTML khá phổ biếnhiện nay Ngôn ngữ tồn tại nhiều mặt lợi ích và cũng có một số hạn chế nhất định Đểgiải quyết một vài hạn chế trong đó, Typescript đã được ra đời TypeScript là một dự ánmã nguồn mở được phát triển bởi Microsoft, nó có thể được coi là một phiên bản nângcao của Javascript bởi việc bổ sung tùy chọn kiểu tĩnh và lớp hướng đối tượng mà điềunày không có ở Javascript TypeScript có thể sử dụng để phát triển các ứng dụng chạy ởclient ­ side (Angular2) và server ­ side (NodeJS) [10, 12].

Hình 3: Mô tả và so sánh giữa TypeScript và JavaScript [2]

TypeScript sử dụng tất cả các tính năng của của ECMAScript 2015 (ES6) như classes,modules Không dừng lại ở đó nếu như ECMAScript 2017 ra đời thì chắc chắn rằngTypeScript cũng sẽ nâng cấp phiên bản của mình lên để sử dụng mọi kĩ thuật mới nhất từECMAScript Thực ra TypeScript không phải ra đời đầu tiên mà trước đây cũng có mộtsố thư viện như CoffeScript và Dart được phát triển bởi Google, tuy nhiên điểm yếu là

Trang 28

hai thư viện này sư dụng cú pháp mới hoàn toàn, điều này khác hoàn toàn với TypeScript,vì vậy tuy ra đời sau nhưng TypeScript vẫn đang nhận được sự đón nhận từ các lập trìnhviên.

­ Dễ phát triển dự án lớn: Với việc sử dụng các kĩ thuật mới nhất và lập trình hướngđối tượng nên TypeScript giúp chúng ta phát triển các dự án lớn một cách dễ dàng.

­ Nhiều Framework lựa chọn: Hiện nay các Javascript Framework đã dần khuyếnkhích nên sử dụng TypeScript để phát triển, ví dụ như AngularJS 2.0 và Ionic 2.0.

­ Hô trợ các tính năng của Javascript phiên bản mới nhất: TypeScript luôn đảm bảoviệc sử dụng đầy đủ các kĩ thuật mới nhất của Javascript, ví dụ như version hiện tạilà ECMAScript 2015 (ES6).

­ Là mã nguồn mở: TypeScript là một mã nguồn mở nên bạn hoàn toàn có thể sửdụng mà không mất phí, bên cạnh đó còn được cộng đồng hỗ trợ.

­ TypeScript là Javscript: Bản chất của TypeScript là biên dịch tạo ra các đoạn mãJavascript nên bạn có thể chạy bất kì ở đâu miễn ở đó có hỗ trợ biên dịch Javascript.Ngoài ra bạn có thể sử dụng trộn lẫn cú pháp của Javascript vào bên trong TypeScript,điều này giúp các lập trình viên tiếp cận TypeScript dễ dàng hơn.

Lĩnh vực công nghệ thông tin là một trong những lĩnh vực đang được chú trọng và đầutư nhất trong những năm gần đây Đi cùng vơi sự phát triển bùng nổ của lĩnh vực này,một loạt các framework, thư viện hỗ trợ người lập trình xây dựng giao diện các websiteđược liên tiếp đưa ra Đáng kể nhất chính là ba framework: ReactJS, Angular và VueJS.Cả ba framework này đều có được độ trưởng thành trong công nghệ và được áp dụngrộng rãi trong những hệ thống thực tế Framework ReactJS được nhóm sử dụng trongluận văn vì cộng đồng sử dụng đông đảo cũng như sự phong phú của nó.

Trang 29

Hình 4: Sơ đồ mô tả các ưu và nhược điểm của ReactJS [3]

ReactJS là một thư viện JavaScript mã nguồn mở rất phổ biến hiện nay cho việc xâydựng giao diện người dùng Một trang web sử dùng ReactJS thường được xây dựng từnhiều components Việc sử dụng component giúp lập trình viên có thể tái sử dụng mãnguồn, giúp tiết kiệm thời gian khi lập trình Ngoài ra, ReactJS còn sử dụng công nghệVirtual DOM (DOM ảo), cơ chế này sẽ quản lí những thay đổi trên Virtual DOM, từ đócập nhật những thay đổi lên DOM thật của trang [4].

Trang 30

Hình 5: Công nghệ Virtual DOM

Công nghệ DOM ảo giúp tăng hiệu năng cho ứng dụng Việc chỉ node gốc mới cótrạng thái và khi nó thay đổi sẽ tái cấu trúc lại toàn bộ, đồng nghĩa với việc DOM treecũng sẽ phải thay đổi một phần, điều này sẽ ảnh hưởng đến tốc độ xử lí React JS sử dụngVirtual DOM (DOM ảo) để cải thiện vấn đề này Virtual DOM là một object Javascript,mỗi object chứa đầy đủ thông tin cần thiết để tạo ra một DOM, khi dữ liệu thay đổi nó sẽtính toán sự thay đổi giữa object và tree thật, điều này sẽ giúp tối ưu hoá việc re­renderDOM tree thật [5].

1.2.1Ưu điểm của ReactJS

­ ReactJS cực kì hiệu quả: ReactJS tạo ra cho chính nó DOM ảo ­ nơi mà các componentthực sự tồn tại trên đó Điều này sẽ giúp cải thiện hiệu suất rất nhiều ReactJS cũngtính toán những thay đổi nào cần cập nhật len DOM và chỉ thực hiện chúng Điềunày giúp ReactJS tránh những thao tác cần trên DOM mà nhiều chi phí.

­ ReactJS giúp việc viết các đoạn code JS dễ dàng hơn: Nó dùng cú pháp đặc biệt làJSX (Javascript mở rộng) cho phép ta trộn giữa code HTML và Javascript Ta cóthể thêm vào các đoạn HTML vào trong hàm render mà không cần phải nối chuỗi.Đây là đặc tính thú vị của ReactJS Nó sẽ chuyển đổi các đoạn HTML thành cáchàm khởi tạo đối tượng HTML bằng bộ biến đổi JSX.

Trang 31

­ Nó có nhiều công cụ phát triển: Khi bạn bắt đầu ReactJS, đừng quên cài đặt ứngdụng mở rộng của Chrome dành cho ReactJS Nó giúp bạn debug code dễ dàng hơn.Sau khi bạn cài đặt ứng dụng này, bạn sẽ có cái nhìn trực tiếp vào virtual DOM nhưthể bạn đang xem cây DOM thông thường.

­ Render tầng server: Một trong những vấn đề với các ứng dụng đơn trang là tối ưuSEO và thời gian tải trang Nếu tất cả việc xây dựng và hiển thị trang đều thực hiệnở client, thì người dùng sẽ phải chờ cho trang được khởi tạo và hiển thị lên Điềunày thực tế là chậm Hoặc nếu giả sử người dùng vô hiệu hóa Javascript thì sao?ReactJS là một thư viện component, nó có thể vừa render ở ngoài trình duyệt sửdụng DOM và cũng có thể render bằng các chuỗi HTML mà server trả về.

­ Làm việc với vấn đề test giao diện: Nó cực kì dễ để viết các test case giao diện vìvirtual DOM được cài đặt hoàn toàn bằng JS.

­ Hiệu năng cao đối với các ứng dụng có dữ liệu thay đổi liên tục, dễ dàng cho bảotrì và sửa lỗi.

1.2.2Nhược điểm của ReactJS

­ ReactJS chỉ phục vụ cho tầng View React chỉ là View Library nó không phải là mộtMVC framework như những framework khác Đây chỉ là thư viện của Facebookgiúp render ra phần view Vì thế React sẽ không có phần Model và Controller, màphải kết hợp với các thư viện khác React cũng sẽ không có 2­way binding hay làAjax.

­ Tích hợp ReactJS vào các framework MVC truyền thống yêu cầu cần phải cấu hìnhlại.

­ ReactJS khá nặng nếu so với các framework khác ReactJS có kích thước tươngđương với Angular (Khoảng 35 kB so với 39 kB của Angular) Trong khi đó Angularlà một framework hoàn chỉnh.

Như đã đề cập ở trên, React không phải là một framework MVC hoàn chỉnh và chỉphục vụ tốt cho tầng view Để có thể khắc phục thiếu sót này, một loạt các thư viện hỗ trợđã được tạo ra để bổ sung các tính năng còn thiếu này Một trong số những thư viện đólà Redux Redux được định nghĩa là một predictable state management tool dành riêngcho các ứng dụng của Javascript Redux sẽ hỗ trợ viết ứng dụng hoạt động một cách nhất

Trang 32

quán, chạy trong môi trường khác nhau và dễ hơn khi kiểm tra Redux được ra đời từviệc lấy cảm hứng bởi các tư tưởng ngôn ngữ Elm và kiến trúc Flux từ Facebook Chínhvì vậy, Redux luôn được sử dụng với mục đích kết hợp cùng với React.

Phương hướng hoạt động: Hiểu một cách đơn giản, Redux sẽ hoạt động dựa vào 3

thành phần cơ bản là: Actions, Reducers và Store Các thành phần sẽ được định nghĩanhư sau:

­ Actions: Bạn có thể hiểu Actions là các events và chúng là cách cần thiết mà bạncần làm để send data từ app đến Redux store Các data xuất hiện thông qua cáctương tác của user hoặc qua app, API call hoặc từ form submission.

­ Reducers: Reducers là những function dạng nguyên thủy và chúng thường lấy statehiện tại của app Từ đó, thực hiện một action rồi trả về dưới dạng một state mới.Các states này sẽ được lưu trữ như objects và chúng sẽ định rõ các state của ứngdụng thay đổi khi phản hồi một action gửi đến store.

­ Store: Store là loại lưu trạng thái ứng dụng và là duy nhất trong bất kì ứng dụngRedux nào Người dùng có thể access các state đã được lưu, update hoặc đăng kícũng như hủy đăng kí các listeners thông qua helper methods.

1.4CoreUI Template

React căn bản là một thư viện giúp xây dựng giao diện người dùng trong ứng dụngweb Nhờ vào khả năng chia nhỏ tính năng thành từng component, React giúp cho việcxây dựng các thành phần giao diện trở nên độc lập, dễ chia sẻ và sử dụng hơn Bên cạnhđó, cộng đồng React cũng phát triển một số thư viện UI độc lập, giúp bạn có thể nhanhchóng cài đặt vào dự án mà không cần phải dựa vào một đội thiết kế riêng Điều này đặcbiệt phù hợp với những dự án nhỏ có ngân sách giới hạn Và CoreUI là một trong số đó[7].

Trang 33

Hình 6: Một giao diện người dùng mẫu của CoreUI

CoreUI có hơn 40 components được xây dựng dựa trên Boostrap, thân thiện và dễ sửdụng Trong số đó có những component giúp vẽ biểu đồ, tạo bảng, tạo thống kê rõ ràngvà trực quan [8].

2 Backend

Nest (NestJS) là một framework hỗ trợ người dùng xây dựng các ứng dụng node server­ side một cách hiệu quả và dễ dàng mở rộng Nest được hỗ trợ sử dụng với TypeScriptvà cả JavaScript thuần và có đầy đủ các tính chất của: OOP (Lập trình hướng đối tượng),FP (Lập trình chức năng), và FRP (Lập trình phản ứng chức năng).

Có nhiều lí do để nhóm chọn sử dụng công nghệ này trong luận văn, trong đó tínhphổ biến cũng như sự đơn giản, hiệu quả của công nghệ này là lí do chín để nhóm chọnvà sử dụng NestJS Theo số liệu trên GitHub, tính đến tháng 7 năm 2020, Nest được khácao số lượt yêu thích Nhờ sự phát triển của JavaScript như một ngôn ngữ lập trình pháttriển web, rất nhiều Javascript/ NodeJS framework đã ra đời Và Nest không phải là mộtngoại lệ [9] Với rất nhiều tính năng tối ưu, NestJS có thể giúp các nhà phát triển tạo racác ứng dụng phía backend, API RESTful một cách dễ dàng và hiệu quả.

Trang 34

Hình 7: Số liệu trên stateofjs.com năm 2019

Số liệu trên stateofjs.com năm 2019 về các Javascript framework được nhiều ngườisử dụng Ngoài các framework được ưa chuộng nhất hiện nay như: Express, Next.js,Koa, Meteor, Sails, Feathers, Nuxt, Gatsby, Nest cũng là một trong những frameworkđược sử dụng ngày càng nhiều, xếp trên nhiều framework khác.

TypeORM [10] là một ORM có thể chạy trên các nền tảng NodeJS, Browser, Cordova,PhoneGap, Ionic, React Native, NativeScript, Expo và Electron và còn dùng được vớiTypeScript và JavaScript (ES5, ES6, ES7, ES8) Công cụ ra đời nhằm hỗ trợ các tínhnăng JavaScript mới nhất, và cung cấp các tính năng bổ sung giúp bạn phát triển ứngdụng tích hợp cơ sở dữ liệu –từ các ứng dụng nhỏ với chỉ vài table đến các ứng dụngdoanh nghiệp quy mô lớn có nhiều cơ sở dữ liệu.

Hình 8: TypeORM

Trang 35

TypeORM [11] hỗ trợ cả pattern Active Record và Data Mapper, khác với tất cả cácORM JavaScript hiện có, với TypeORM bạn có thể viết các ứng dụng high quality,loosely coupled, scalable và maintainable thật hiệu quả nhất TypeORM kế thừa mạnhmẽ từ các ORMs khác, bao gồm Hibernate, Doctrine và Entity Framework.

Swagger UI là 1 công cụ giúp gen 1 trang HTML CSS mô tả về các APIs được cấuhình bởi 1 file yaml Ngoài ra, công cụ này còn cho phép ta mockup đến api đó để xemkết quả.

3 Cơ sở dữ liệu

3.1Tổng quan về cơ sở dữ liệu, hệ cơ sở dữ liệu

Xuất hiện từ những năm 60 của thế kỉ XX, hệ quản lí cơ sở dữ liệu là một trong nhữngcông nghệ nòng cốt trong các hệ thống thông tin hiện nay Trong lĩnh việc cơ sở dữ liệu,

Trang 36

ba khái niệm cơ sở dữ liệu, hệ quản lí cơ sở dữ liệu và hệ thống cơ sở dữ liệu được sửdụng một cách rộng rãi, phổ biến vì tầm quan trọng của chúng Khái niệm cơ sở dữ liệudùng để chỉ tập hợp dữ liệu được tổ chức, lưu trữ và được truy cập từ hệ thống máy tính.Chúng thường được thiết kế, tổ chức bằng các mô hình, kĩ thuật mang tính học thuật.Khái niệm hệ quản lí cơ sở dữ liệu là thuật ngữ được dùng để chỉ phần mềm giao tiếpvới người dùng, cơ sử dữ liệu và phần mềm để thu thập, phân tích dữ liệu Khái niệm hệthống cơ sở dữ liệu bao gồm cơ sở dữ liệu, hệ quản lí cơ sở dữ liệu và các phần mềm cóliên quan Tuy nhiên, trong thực tế cơ sở dữ liệu thường dùng để chỉ cả ba khái niệm cơsở dữ liệu hệ quản lí cơ sở dữ liệu và hệ thống cơ sở dữ liệu.

Trong quá trình phát triển của cơ sở dữ liệu, có nhiều mô hình cơ sở dữ liệu được đềra dựa trên những nền tảng lí thuyết khác nhau, đáp ứng những mục tiêu khác nhau: cơsở dữ liệu quan hệ (tiêu biểu như Oracle, MySQL, ), cơ sở dữ liệu NoSQL (tiêu biểunhư MongoDB, Redis, ), cơ sở dữ liệu đối tượng,

Hình 10: Sơ đồ hệ thống cơ sở dữ liệu

Nhìn tổng quát, hệ thống CSDL gồm những thành phần sau:

­ Người dùng: Người dùng là người tiếp xúc với dữ liệu thông qua các ứng dụng, tứclà thực hiện các phép như thêm, xoá, thay đổi dữ liệu hay yêu cầu nhận các dữ liệutừ cơ sở dữ liệu.

­ Ứng dụng: Các chương trình, phần mềm cho phép người dùng truy cập dữ liệu đềuđược coi như ứng dụng của hệ thống cơ sở dữ liệu.

­ Hệ quản trị cơ sở dữ liệu: Hệ quản trị cơ sở dữ liệu là phần mềm ứng dụng dùng đểtạo mới, bảo trì và đảm bảo truy cập có điều khiển đến các cơ sở dữ liệu của ngườidùng.

­ Dữ liệu: Là thông tin liên quan đến ứng dụng, được lưu trữ trong các tập tin cơ sởdữ liệu.

Trang 37

­ Hệ thống chủ: Là hệ thống máy tính quản lí các tập tin Nó thực hiện việc truy cậptập tin dữ liệu Vai trò của hệ quản trị cơ sở dữ liệu là yêu cầu các phương tiện lưutrữ tập tin phục vụ các ứng dụng Do vậy, hệ quản trị cơ sở dữ liệu là phần mềmnằm trong phần mềm của hệ thống chủ.

­ Cơ sở dữ liệu: Cơ sở dữ liệu là tập các dữ liệu liên quan logic với nhau, được thiếtkế để phục vụ các nhu cầu về thông tin của nhiều người dùng trong tổ chức.

­ Giao diện người dùng: Hay giao diện người sử dụng là các phương tiện cho phépngười dùng thao tác với các thành phần của hệ thống cơ sở dữ liệu.

­ Người quản trị cơ sở dữ liệu: Là người có quyền điều khiển tập trung trên toàn bộhệ thống, về cả dữ liệu lẫn các chương trình truy xuất các dữ liệu đó Họ chuyên vềcông nghệ thông tin, có nhiệm vụ tạo mới cơ sở dữ liệu và cài đặt các điều khiển kĩthuật.

­ Người phát triển hệ thống: Những người như phân tích viên hệ thống, lập trình viênđược gọi là người phát triển hệ thống.

3.2Cơ sở dữ liệu quan hệ

Thuật ngữ “cơ sở dữ liệu quan hệ” được phát minh bởi EF Codd tại IBM vào năm1970 [17] Trong bài báo này và các bài báo sau này, ông đã định nghĩa những gì cónghĩa là “quan hệ” Một định nghĩa nổi tiếng về những gì cấu thành một hệ thống cơsở dữ liệu quan hệ bao gồm 12 quy tắc của Codd [18] Tuy nhiên, không có hiện thựcthương mại nào của mô hình quan hệ tuân thủ tất cả các quy tắc của Codd, vì vậy thuậtngữ này đã dần dần mô tả một lớp hệ thống cơ sở dữ liệu rộng hơn, ở mức tối thiểu.

Cơ sở dữ liệu quan hệ (RDBMS –Relational Database Management System) là mộtdạng hệ quản trị cơ sở dữ lệu (DBMS –Database Management System) được sử dụngphổ biến nhất, trong đó tất cả dữ liệu được tổ chức chặt chẽ dưới dạng các bảng dữ liệu.Tất cả các thao tác trên cơ sở dữ liệu đều diễn ra trên các bảng.

RDBMS được xây dựng dựa trên lí thuyết đại số quan hệ [16] Đại số quan hệ đượcđề ra năm 1970 bởi E.F Codd Theo đó, đại số quan hệ được hiểu là một ngôn ngữ truyvấn, trong đó, đầu vào là một tập hợp các quan hệ và đầu ra cũng là một tập hợp các quanhệ thông qua các phép toán Các phép toán cơ bản đó bao gồm:

­ Phép chọn (SELECT): Chọn ra các quan hệ thỏa mãn một hay một số điều kiện nàođó.

­ Phép chiếu (PROJECT): Chọn ra các cột (thuộc tính) thỏa mãn điều kiện.

Trang 38

­ Phép hợp (UNION): Thực hiện phép hợp hai quan hệ tương thích với nhau, tươngthích ở đây có nghĩa là hai quan hệ trên phải có cùng số cột (thuộc tính).

­ Phép trừ (SET DIFFERENT): Chọn ra các quan hệ tồn tại trong tập quan hệ thứnhất nhưng lại không tồn tại trong tập quan hệ thứ hai.

­ Phép tích Decartes (CARTESIAN PRODUCT): Kết hợp dữ liệu hai tập quan hệ đầuvào thành một tập dữ liệu đầu ra.

­ Phép đổi tên (RENAME): Thay đổi tên gọi của cột (thuộc tính).

Đại số quan hệ là một bộ phận không quan trọng, không thể thiếu của mô hình cơ sởdữ liệu quan hệ Các nhà khoa học, kĩ sư đã hiện thực các phép toán trong đại số quanhệ thành một ngôn ngữ truy vấn –SQL (Structured Query Language) Ngôn ngữ SQL làngôn ngữ dùng chung cho mọi cơ sở dữ liệu quan hệ Ngôn ngữ này sẽ được trình bàythêm ở phần sau Ngoài đại số quan hệ, các dạng cơ sở dữ liệu còn dùng một vài cơ chếkhác như:

­ Cơ chế đánh index bằng các loại cây như cây B, B*,

­ Cơ chế khóa chính (để định danh dữ liệu), khóa ngoại (để tham chiếu dữ liệu).

­ Các cơ chế hàm, thủ tục lưu trữ (Dùng để hiện thực các chức năng của chương trình).

­ Cơ chế chuẩn hóa –Normalization (Dùng để “rút gọn” dữ liệu, loại bỏ các dữ liệudư thừa trong tập dữ liệu).

Các cơ chế trên cung cấp các tính năng hữu ích cho các hệ quản trị cơ sở dữ liệu quan hệ,làm cho các hệ cơ sở dữ liệu dạng này có độ phù hợp cao với các dữ liệu dạng transaction.RDBMS sẽ lưu trữ dữ liệu dưới dạng bảng Mỗi hệ thống sẽ có số lượng bảng khácnhau với mỗi bảng sở hữu khóa chính duy nhất của riêng nó Khóa chính sau đó đượcsử dụng để xác định từng bảng Trong bảng là các hàng và cột Các hàng được gọi làbản ghi hoặc thực thể ngang; chúng chứa thông tin cho dữ liệu nhập mỗi thực thể Cáccột được gọi là các thực thể dọc và sở hữu thông tin về trường cụ thể.

Để quản lí dữ liệu của hệ thống, nhóm cần phải sử dụng một cơ sở dữ liệu để lưu trữcác thông tin.

Nhóm đã thực hiện so sánh hai loại cơ sở dữ liệu chính NoSQL và SQL để chọn chomình loại cơ sở dữ liệu phù hợp với hệ thống của nhóm nhất.

Trang 39

Sử dụng cú pháp và truy vấnSQL để phân tích và lấy dữliệu để có thêm thông tin chitiết, được sử dụng cho các hệthống xử lí phân tích trựctuyến

Ngôn ngữ truy vấn Không có SQL

Loại hình lưu trữ Dựa trên tài liệu, cặp khóa­

giá trị, biểu đồ Dựa trên bảng

Đặc điểm Schema Lược đồ động cho dữ liệu

phi cấu trúc Lược đồ xác định trướcKhả năng mở rộng Theo chiều ngang Theo chiều dọc

Môi trường truy vấn

phức tạp Không phù hợp Phù hợp

Tính năng tốt nhất Dễ sử dụng, hiệu suất caovà công cụ linh hoạt

Hỗ trợ đa nền tảng, bảo mật vàmiễn phí

Mô hình

BASE (Cơ bản có sẵn,Trạng thái ôn hòa, Nhấtquán sau cùng)

ACID (Tính nguyên tử, nhấtquán, cô lập và bền bỉ)

Hiệu suất Nhanh Phụ thuộc vào việc thiết kếVí dụ MongoDB, Redis, Neo4j, Oracle, Postgres, MS ­ SQL,

Trang 40

PostgreSQL [14] là một hệ quản trị cơ sở dữ liệu quan hệ –đối tượng, được phát triểnbởi Khoa Điện toán, Đại học California –Hoa Kì dựa trên Postgres bản 4.2 Chươngtrình này đã mở đường cho nhiều khái niệm về hệ quản trị dữ liệu thương mại sau này[13].

Ban đầu, hệ quản trị được thiết kế để chạy trên các nền tảng tương tự như Unix Saunày, PostgreSQL được điều chỉnh trở nên linh động và chạy trên nhiều nền tảng khácnhaunhư Windows, Mac OS X, Solaris với nhiều tính năng và đặc điểm nổi bật PostgreSQLlà mã nguồn mở miễn phí, được xây dựng theo chuẩn SQL99 Người dùng có thể tự dosử dụng, chỉnh sửa và phân bổ PostgreSQL theo nhiều hình thức khác nhau.

So với nhiều hệ quản trị cơ sở dữ liệu khác, PostgreSQL không quá yêu cầu về côngtác bảo trì bởi tính ổn định cao, có thể phát triển nhiều ứng dụng khác nhau với chi phítương đối thấp.

3.3.1Các tính năng của PostgreSQL

­ Kiểu dữ liệu: Nguyên hàm (các nguyên số, boolean, số, chuỗi); cấu trúc (UUID,Phạm vi, Array, Date/time); Hình học; Tùy chỉnh; Document.

­ Toàn vẹn dữ liệu: Ràng buộc loại từ, Primary Keys, Foreign Keys, UNIQUE, NOTNULL, Khóa khuyến nghị/ Advisory Locks, Khóa hàm số/ Explicit Locks,…

­ Hiệu suất, đồng quy: Tính năng lập danh mục, lập danh mục nâng cao, trình lập kếhoạch, trình tối ưu hóa truy cập phức tạp, thống kê số liệu trên nhiều cột, quét index–only, giao tác ­ giao tác dạng test, điều khiển đồng thời nhiều phiên bản (MVCC),phân vùng bảng, truy vấn đọc song song, độ tin cậy, phục hồi sau thảm họa, nhậtkí ghi trước (Write­ahead Logging –WAL), replication, khôi phục điểm –thời gian,bảng.

­ Chức năng bảo mật: Bảo mật, xác thực (SCRAM­SHA­256, SSPI, LDAP, GSSAPI,Certificate và các hình thức khác), hệ thống kiểm soát truy cập mạnh mẽ, bảo mậtcấp độ cột –hàng.

­ Khả năng mở rộng: phương pháp lưu trữ, ngôn ngữ thủ tục (PL/ PGSQL, Python,Perl, và nhiều ngôn ngữ khác), PostGIS, tính năng kết nối cơ sở dữ liệu hoặc luồngkhác với giao diện SQL chuẩn, cùng nhiều tính năng mở rộng khác.

­ Tìm kiếm văn bản: Tìm kiếm văn bản đầy đủ, hệ thống các bộ kí tự quốc tế (thôngqua ICU collations).

Ngày đăng: 30/07/2024, 17:38