4. Mô hình kiến trúc hệ thống
2.2.2. Mô hình cơ sở dữ liệu
Hình 25: Mô hình cơ sở dữ liệu Chi tiết các bảng
Bảng 4: Cấu trúc bảng Users
Users
Trường Khóa Kiểu Chú giải
usernameID Khóa chính Varchar(64) Mã truy cập của người dùng
Password Varchar(64) Mật khẩu đăng nhập
timeAccessLast Datetime Thời gian truy cập cuối cùng timeAccessNow Datetime Thời gian truy cập hiện tại
numberAccess int(10) Số lần truy cập
Bảng Users lưu thông tin người dùng bao gồm: usernameID, password, timeAccessLast (thời gian truy cập cuối cùng), timeAccessNow (thời gian truy cập hiện tại), numberAccess (số lần truy cập vào hệ thống).
Khi người dùng truy cập vào hệ thống sẽ phải thông qua usernameID (khóa chính của bảng) và password. Trường password được mã hóa theo định dạng PASSWORD 64 bit, khi người dùng tạo hoặc thay đổi mật khẩu thì hệ thống sẽ tự mã hóa và lưu trong
bảng Users. Do mã hóa theo kiểu PASSWORD 64bit nên cơ chế giải mã hầu như hoàn toàn không thể thực hiện, do vậy nó sẽ bảo đảm tính bảo mật cho người dùng. Sau khi người dùng đăng nhập vào hệ thống thì thời gian truy cập hiện tại được xác định tại thời điểm đăng nhập thành công, còn thời gian truy cập cuối cùng sẽ được thiết lập là thời gian truy cập hiện tại khi chưa thay đổi.
Số lần truy cập sẽ được tự động tăng lên 1 đơn vị. Ba trường timeAccessLast, timeAccessNow và numberAccess dùng để xem và quản lý thông tin người dùng.
Bảng 5: Cấu trúc bảng Topics
Topics
Trường Khóa Kiểu Chú giải
topicID Khóa chính varchar(10) Mã chủ đề topicName varchar(50) Tên chủ đề
info varchar(10) Định danh chủ đề trong mô hình nội dung Root varchar(10) Chủ đề cha của chủ đề hiện tại
brank varchar(100) Chủ đề con kế cận của chủ đề hiện tại value int(10) Giá trị độ cao của chủ đề
Bảng Topics lưu thông tin về chủ đề học, bao gồm: topicID, topicName (tên chủ đề), info (thông tin về chủ đề), root (chủ đề cha của chủ đề hiện tại), branch (chủ đề con kế cận), value (độ cao của chủ đề đang đứng).
Do nội dung của chương trình được bố trí theo dạng cây, nên trường info dùng để lưu định danh của chủ đề tại nút đang đứng, trường root sẽ chứa info của chủ đề cha của nó, trường brank sẽ chứa các info của các nhánh con, trường value lưu vị trí độ cao của chủ đề trong cây.
Bảng 6: Cấu trúc bảng Logs
Logs
Trường Khóa Kiểu Chú giải
usernameID Khóa chính varchar(64) Mã truy cập của người dùng topicID Khóa chính varchar(10) Mã chủ đề
Bảng Logs lưu thông tin kiến thức hiện tại của người dùng, bao gồm: usernameID, topicID và weight (mức độ kiến thức của người dùng). Bảng này sẽ lấy hai trường usernameID và topicID là khóa chính, các giá trị của bảng sẽ được sinh ra khi người dùng đăng nhập vào hệ thống và hoàn thành bài học. Trường weight sẽ lưu giá trị đánh giá mức kiến thức của người dùng sau khi hoàn thành chủ đề. Giá trị của trường weight sẽ được dùng trong lần sử dụng sau của người dùng. Nó dùng để kết hợp với ngữ cảnh để hỗ trợ việc đưa ra chủ đề học tiếp theo cho người dùng.
Bảng 7: Cấu trúc bảng Times
Times
Trường Khóa Kiểu Chú giải
timeID Khóa chính varchar(5) Mã thời gian timeName varchar(60) Tên thời gian
rank int(10) Chỉ số đánh giá mức độ của thời gian Bảng Times lưu thời gian có thể học, bao gồm: timeID, timeName, rank (giá trị của thời gian). Trường timeID là khóa chính, trường timeName lưu tên của thời gian, trường rank lưu chỉ số đánh giá mức độ của thời gian, chẳng hạn với timeID = 15 thì timeName được lưu là “Less than 15 minutes” (lượng thời gian có thể học là nhỏ hơn 15 phút) và rank = 1.
Bảng 8: Cấu trúc bảng Levels
Levels
Trường Khóa Kiểu Chú giải
levelID Khóa chính varchar(5) Mã cấp độ
levelName varchar(10) Tên cấp độ
rank int(10) Chỉ số đánh giá của cấp độ
Bảng Levels lưu mức độ khó, bao gồm: levelID, levelName, rank (giá trị của Level). Bảng Levels lấy trường levelID làm khóa chính. Tương tự như bảng Times, trường levelName lưu tên cấp độ và trường rank lưu chỉ số đánh giá của cấp độ.
Context
Trường Khóa Kiểu Chú giải
contextID Khóa chính varchar(10) Mã vị trí contextName varchar(60) Tên vị trí
rank int(10) Chỉ số đánh giá mức độ của vị trí
Bảng Contexts lưu vị trí, bao gồm: contextID, contextName, rank. Trường ContextID lưu mã vị trí, contextName lưu tên vị trí và trường rank lưu chỉ số đánh giá mức độ của vị trí (đây chính là mức độ tập trung của người dùng tại vị trí tương ứng).
Bảng 10: Cấu trúc bảng Contents
Contents
Trường Khóa Kiểu Chú giải
contentID Khóa chính varchar(10) Mã nội dung topicID Khóa ngoại varchar(10) Mã chủ đề contextID Khóa ngoại varchar(10) Mã vị trí levelID Khóa ngoại varchar(5) Mã cấp độ timeID Khóa ngoại varchar(5) Mã thời gian contentTopic varchar(2000) Nội dung chủ đề
height int(10) Chiều cao của chủ đề trong cây nội dung
Bảng Contents lưu nội dung của chủ đề, gồm: contentID, topicID, timeID, levelID, contextID, contentTopic (nội dung của chủ đề), height (độ cao của cây tương ứng với nội dung). Trường contentID là khóa chính, các trường topicID, contextID, levelID, timeID là các khóa ngoại tham chiếu từ các bảng tương ứng topics, contexts, levels, times. Từ các khóa ngoại sinh ra do sự lựa chọn của người dùng, kết hợp với giá trị trong trường weight của bảng Logs mà hệ thống sẽ quết định nội dung contentTopic nào được cung cấp cho người dùng. Trường height lưu độ cao của chủ đề trong cây nội dung, tại độ cao này, nội dung của chủ đề sẽ được chọn.
Questions
Trường Khóa Kiểu Chú giải
questionID Khóa chính varchar(20) Mã câu hỏi topicID Khóa chính varchar(10) Mã chủ đề contentID Khóa chính varchar(10) Mã nội dung contentQuestion varchar(1000) Nội dung câu hỏi
Bảng Questions lưu các câu hỏi, gồm: questionID, contentID, topicID, contentQuestion (nội dung câu hỏi). Nội dung contentQuestion của câu hỏi sẽ được quyết định bởi 3 trường questionID, topicID và contentID, do vậy 3 trường này sẽ là khóa chính của bảng Questions.
Bảng 12: Cấu trúc bảng Answers
Answers
Trường Khóa Kiểu Chú giải
questionID varchar(20) Mã câu hỏi
topicID varchar(10) Mã chủ đề
contentID varchar(10) Mã nội dung
contentAnswer varchar(600) Nội dung câu trả lời
answer varchar(1) Đánh dấu vị trí câu trả lời đúng
position int(3) Đánh dấu vị trí các câu trả lời trong câu hỏi Bảng Answers lưu các đáp, gồm: questionID, contentID, topicID, answer (các lựa chọn trả lời), position (vị trí câu trả lời đúng của từng câu hỏi). Nội dung các đáp án của câu hỏi (lấy trong bảng Questions) sẽ được truy vấn bởi 3 trường questionID, topicID và contentID. Do một câu hỏi có nhiều câu trả lời nên 3 trường trên không được lấy làm khóa chính. Trường Answer sẽ đánh dấu vị trí câu trả lời đúng của câu hỏi, nếu câu trả lời đó là đúng thì nó sẽ lưu giá trị bằng 1, các phương án trả lời sai sẽ được lưu giá trị bằng 0. Trường position đánh dấu vị trí các câu trả lời trong câu hỏi, mục đích của trường này là để dánh dấu gạch chân câu trả lời trong bộ câu hỏi tìm lỗi sai trong câu. Thể hiện dấu gạch chân trong giao diện mobile. Chẳng hạn với câu hỏi là tìm lỗi sai trong câu “While ancient times people simply painted inanimate objects, during the Renaissance the painting of "still life" developed as an accepted art form.” Đây là nội
dung câu hỏi được lưu trong bảng Questions. Còn nội dung các câu trả lời được lưu trong bảng Answer là While ancient, during, of, developed. Khi đó position của các đáp án trên tương ứng là 1, 1, 1 và 1. Khi chạy trên thiết bị di động hệ thống so sánh các từ trong đáp án với các từ trong câu hỏi sau đó xác định xem đáp án đó xuất hiện ở lần thứ mấy trong câu (position chính là lần xuất hiện của đáp án trong câu). Khi đó nội dung câu hỏi sẽ được thể hiện trong thiết bị theo định dạng: “While ancient times people simply painted inanimate objects, during the Renaissance the painting of "still life" developed as an accepted art form.”