2. Cơ sở lý thuyết của Mã hóa
Mã hóa với cơ sở 64
Để mô tả và lưu trữ dễ dàng các mã hóa của học sinh và giáo viên, bắt buộc phải sử dụng các chữ cái latinh và chữ số. Như vậy phải sử dụng 10 chữ số + 52 chữ cái latinh + 2 ký tự thông dụng (dấu _ và dấu #) = 64 ký tự để mô phỏng mã hóa. School Viewer sẽ chính thức dùng hệ mã số này để mô tả các ký tự mã hóa của mình.
Như vậy bảng mã hóa của School Viewer (gọi là SVC - School Viewer Coding) được mô tả trong bảng sau:
Như vậy với bảng mã 64 ký tự của SVC, mỗi 6-bit sẽ được mô tả thành 1 "ký tự" trong School Viewer, hay mỗi 3 byte sẽ được mô tả thành 4 ký tự trong SVC.
3. Thông tin mã hóa
Các thông số cần thiết để mã hóa bao gồm:
1. Ngày sinh
Ngày sinh của học sinh/giáo viên được tính như một số nguyên là số ngày tính từ năm 1900.
Số lượng ngày cho phép tính là 200 năm (1900-2099) là 200 x 365 =73000 2 bytes (16 bits). Chương trình sẽ sử dụng 17 bits = 131,072 để lưu mã hóa thông số này.
Chú ý: trường hợp học sinh không nhớ chính xác ngày sinh thì chương trình sẽ tự động gán giá trị ngày ngẫu nhiên để làm thông tin mã hóa.
2. Nam/Nữ
Sử dụng 1 bit cho thông số này.
3. Quê quán
Hiện tại sử dụng dữ liệu bao gồm 61 tỉnh thành 7 bits Như vậy cho phép mở rộng trong tương lai lên 128 tỉnh/thành phố.
4. Mã hóa họ cha
Phần họ của học sinh được tách ra và mã hóa theo một CSDL lưu các Họ chuẩn của Việt Nam. Số lượng các họ của người Việt là hữu hạn và được lưu trong một bảng của System.svd có tên là rNAMESVN. Tổng số lượng các họ của người Việt sẽ không quá 12 bits (4096).
Chú ý: trường hợp khi nhập dữ liệu họ không có trong bảng CSDL thì chương trình sẽ tự động nạp họ này vào bảng tương ứng tại vị trí cuối cùng. Giá trị Checksum-4 sẽ đặt là 1.
5. Mã hóa theo tên học sinh
Phần tên học sinh (sau khi đã loại đi Họ + đệm) sẽ được mã hóa theo một CSDL lưu các tên chuẩn của người Việt Nam. Số lượng tên của người Việt là hữu hạn và lưu trong bảng rNamesVN. Tổng số lượng tên người Việt dự đoán không quá 8,192 - 13 bits.
Chú ý: trường hợp khi nhập dữ liệu tên không có trong bảng CSDL thì chương trình sẽ tự động nạp tên này vào bảng tương ứng tại vị trí cuối cùng. Giá trị Checksum-5 sẽ đặt là 1.
6. Tham số thời gian
Tham số thời gian được đưa vào để giảm thiểu tối đa khả năng tạo ra các mã trùng nhau. Ta sử dụng tham số thời gian là thời gian chính xác đến giây thời điểm nhập dữ liệu vào máy tính. Được phép dùng 17-bits để mô tả cho tham số ngẫu nhiên này.
- bit 1: 0-nếu thời gian là từ 0 giờ đến 12 giờ trưa
1-nếu thời gian là từ 12 giờ trưa đến 24 giờ đêm.
- bit 2-17: mô tả thời gian tính bằng giây tính từ thời điểm 0 giờ hoặc 12 giờ trưa cho đến thời điểm hiện thời.
7. Tham số Checksum: 5 bits
- 2 bit sau cùng có ý nghĩa như sau:
Bit-4 chỉ ra giá trị Họ của học sinh có tìm thấy trong bảng dữ liệu chuẩn hay không.
Bit-5 chỉ ra giá Tên của học sinh có tìm thấy trong bảng dữ liệu chuẩn hay không.
Tổng kết lại chúng ta cần:
(1) = 17 bits
(2) = 1 bit
(3) = 7 bits
(4) = 12 bits
(5) = 13 bits
(6) = 17 bits
(7) = 5 bits
= 72 bits = 12 ký tự
4. Cấu trúc và thủ tục mã hóa
Theo sơ đồ đã mô tả ở trên, chúng ta có 72-bit đã được mã hóa từ các thông số của một học sinh. Các bit được sắp xếp theo thứ tự và sau đó ghép lại theo bảng ký tự SVC. Để thể hiện (thông báo mã cho học sinh) chúng ta dùng khuôn dạng:
XX-XXXXX-XXXXX
5. Phương án mã hóa 32 bit
Phương án mã hóa Học sinh, Giáo viên với cơ sở 64 bit như đã trình bày ở trên không thích hợp với mô hình CSDL không phân biệt các chữ cái in hoa và in thường. Trong mục này ta sẽ mô tả một phương án mã hóa khác chỉ sử dụng 32 bit Cơ sở.
M4 - Mỗi mã học sinh không dài quá 12 ký tự (chữ+số) và mỗi mã giáo viên không dài quá 10 ký tự (chữ+số).
Bộ ký tự dùng cho kiểu mã hóa này chỉ là các chữ số và bộ chữ cái in hoa rút gọn, phù hợp với bảng chữ cái tiếng Việt (Tiếng Anh bỏ đi F, J, W, Z).
Với bảng chữ cái mới này, 5 bits = 1 chữ cái. Như vậy để mã hóa bởi 12 ký tự, chúng ta cần lượng thông tin là 5 x 12 = 60 bits.
Thủ tục mã hoá học sinh/giáo viên theo cơ sở 32 bits vẫn hoàn toàn thỏa mãn các mục đích M1, M2, M3 đã nêu ra ở trên.
Thông tin mã hóa theo qui luật sau:
1. Ngày sinh - 16 bits
Ngày sinh của học sinh/giáo viên được tính như một số nguyên là số ngày tính từ năm 1925.
Số lượng ngày cho phép tính là 175 năm (1925-2099) là 175 x 365 =63875 - 2 bytes (16 bits). Chương trình sẽ sử dụng 16 bits = 65,536 để mã hóa thông số này.
Chú ý: trường hợp học sinh không nhớ chính xác ngày sinh thì chương trình sẽ tự động gán giá trị ngày ngẫu nhiên để làm thông tin mã hóa.
2. Nam/Nữ - 1 bit
Sử dụng 1 bit cho thông số này.
3. Mã hóa theo Họ cha của Học sinh - 9 bits
Phần họ của học sinh được tách ra và mã hóa theo một CSDL lưu các Họ thường gặp của người Việt Nam. Dữ liệu này được lưu trong bảng rFamilyNamesVN nằm trong tệp System.svd của hệ thống. Dự kiến toàn bộ các họ Việt Nam sẽ không quá 512. Chúng ta sẽ dùng 9 bits để mã hoá giá trị này của Học sinh. Trường hợp khi nhập họ học sinh không có trng bảng này, chương trình sẽ tự động nạp tên này vào bảng tại vị trí cuối cùng. Trường hợp bảng đã đủ 512 bản ghi mà họ học sinh không tìm thấy trong bảng thì máy sẽ gán một giá trị ngẫu nhiên 9 bits cho giá trị này.
4. Mã hóa theo tên học sinh - 13 bits
Phần tên học sinh (sau khi đã loại đi Họ + đệm) sẽ được mã hóa theo một CSDL lưu các tên chuẩn của người Việt Nam. Số lượng tên của người Việt là hữu hạn và lưu trong tệp rNamesVN trong System.svd. Tổng số lượng tên người Việt dự đoán không quá 8,192 = 13 bits.
Chú ý: trường hợp khi nhập dữ liệu tên không có trong bảng CSDL thì chương trình sẽ tự động nạp tên này vào bảng tương ứng tại vị trí cuối cùng.
5. Mã Quận/Huyện của nhà trường hiện thời - 10 bits
Hiện tại số Quận/Huyện trên cả nước là 616, chúng ta sẽ sử dụng 10 bits = 1024 để mã hóa thông tin này.
6. Chỉ số địa phương của Nhà trường (SchoolLocalID) - 6 bits
Chỉ số địa phương của Nhà trường được gán và khởi tạo từ lệnh Khởi tạo CSDL nhà trường. Chỉ số này dùng để phân biệt giữa các nhà trường trong phạm vi một Quận/Huyện. Hệ thống chỉ số được gán thống nhất và được kiểm soát bởi Sở GD & ĐT hoặc Phòng GD & ĐT quận/huyện. Trong phạm vi một quận/huyện, các trường cùng cấp (Tiểu học, THCS, THPT) phải có Chỉ số địa phương khác nhau. Chỉ số địa phương được phép gán từ giá trị 1 đến 64, như vậy cần 6 bits để mã hoá thông số này.
Chú ý: Lần đầu tiên khi khởi tạo CSDL năm học, chương trình sẽ khởi tạo một giá trị ngẫu nhiên cho SchoolLocalID, tuy nhiên Hiệu trưởng có thể thay đổi lại giá trị này bất cứ lúc nào. Khi cài đặt công ty School@net nên đặt giá trị này trước cho nhà trường coi như một thông số bắt buộc của quá trình cấp License phần mềm.
7. Tham số Checksum: 5 bit
- Có 32 giá trị (5 bits) để tạo tham số phòng hờ sự cố khi sử dụng 6 tham số trên tạo ra các mã trùng nhau trong một trường (tại thời điểm sinh mã học sinh/giáo viên). Khi đó Checksum sẽ tự động tăng lên 1 giá trị.
Tổng kết lại chúng ta cần:
(1) = 16 bits
(2) = 1 bit
(3) = 9 bits
(4) = 13 bits
(5) = 10 bits
(6) = 6 bits
(7) = 5 bit
Tổng cộng = 60 bits = 12 ký tự
Qui định ghi Mã Học sinh - Giáo viên (thể hiện và thông báo cho học sinh).
XXXX-XXXX-XXXX
Chú ý:
Toàn bộ các thông tin cần thiết để mã hoá một Học sinh / Giáo viên đều là những thông số bắt buộc cần phải biết của một nhà trường. Các thông tin của Nhà trường như SchoolLocalID, Mã Quận/Huyện, Mã Tỉnh đều được cấp chính xác ngay khi cài đặt phần mềm.
Trường hợp sau khi thực hiện các bước mã hóa từ (1) đến (7), vẫn bi trùng lặp mã thì chương trình sẽ lấy năm sinh của học sinh thay thế bằng năm 2100, như vậy chúng ta có thêm 32 checksum bổ sung. Giả sử lại vẫn trùng chúng ta lại sử dụng thêm các năm 2101 và 2102 với tổng cộng 96 checksum bổ sung. Việc sử dụng năm 2100, 2101 và 2102 không phá vỡ tính duy nhất của thuật toán bởi vì với năm 2102, chúng ta đã dùng đến 178 năm x 365 = 64970 vẫn nằm trong phạm vi kiểm soát của 16-bits.
School@net
|