Việc xây dựng một phần mềm để chuyển đổi dữ liệu từ bảng tính Excel và CSDL MySQL đồng thời có thể mã hóa chúng để việc truyền dữ liệu trên Internet được an toàn hơn là vấn đề cấp thiết.
Trang 1ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC SƯ PHẠM
Trang 2MỤC LỤC
MỤC LỤC 1
DANH MỤC HÌNH VẼ 4
MỞ ĐẦU 5
CHƯƠNG 1: CƠ SỞ LÝ THUYẾT 7
1.1 Mã hóa 7
1.2 Cơ sở dữ liệu MySQL 10
1.3 Microsoft Excel 13
1.4 Ngôn ngữ lập trình JAVA 13
1.5 Ngôn ngữ XML 14
1.6 Mối quan hệ giữa cấu trúc bảng tính EXCEL và CSDL MySQL 16
1.6.1 Cấu trúc file Excel 16
1.6.2 Cấu trúc lưu trữ dữ liệu MySQL 17
1.6.3 Điểm tương đồng trong cấu trúc Excel và MySQL 18
1.6.4 Các ràng buộc về cấu trúc Excel và MySQL 18
CHƯƠNG 2: MÃ HÓA VÀ CHUYỂN ĐỔI DỮ LIỆU 20
2.1 Mô hình mã hóa, giải mã và chuyển đổi 20
2.1.1 Mô hình mã hóa 20
2.1.2 Mô hình giải mã 21
2.1.3 Mô hình chuyển đổi dữ liệu 22
2.2 Phương pháp mã hóa và giải mã file text 22
2.3 Phương pháp chuyển đổi dữ liệu 24
CHƯƠNG 3: XÂY DỰNG PHẦN MỀM MÃ HÓA VÀ CHUYỂN ĐỔI DỮ LIỆU 28
3.1 Mục đích và yêu cầu chương trình 28
3.2 Môi trường và công cụ sử dụng 28
3.2.1 Môi trường 28
Trang 33.2.2 Công cụ 29
3.3 Giao diện chương trình 31
KẾT LUẬN 42
TÀI LIỆU THAM KHẢO 43
PHỤ LỤC 44
Trang 4DANH MỤC HÌNH VẼ
Hình 1.1: File Excel ……….……….… … 15
Hình 1.2: CSDL MySQL trên phần mềm MySQL Workbench ……….… 16
Hình 1.3: File Excel thiết kế theo các ràng buộc ……… … 18
Hình 2.1: Mô hình mã hóa file Excel ……….……… … 19
Hình 2.2: Mô hình mã hóa CSDL MySQL ……….……….….… 19
Hình 2.3: Mô hình giải mã dữ liệu ……… …… … 20
Hình 2.4: Mô hình chuyển đổi dữ liệu ……… 21
Hình 3.1: Mô hình JVM ……… … 27
Hình 3.2: Netbean ……… … 28
Hình 3.3: MySQL Workbech ……….…….… 28
Hình 3.4: Giao diện khi vào chương trình … ……… … 29
Hình 3.5: Giao diện cửa sổ conversion ……… 30
Hình 3.6: Giao diện chức năng chuyển đổi dữ liệu từ Excel sang MySQL … … 31
Hình 3.7: Giao diện chức năng chuyển đổi dữ liệu từ MySQL sang Excel … … 32
Hình 3.8: Giao diện cửa sổ Encryption ……….… 33
Hình 3.9: Giao diện chức năng mã hóa file Excel ……… 34
Hình 3.10: Giao diện chức năng mã hóa CSDL MySQL ……….… 35
Hình 3.11: Giao diện cửa sổ Decryption ……… … 36
Hình 3.12: Giao diện chức năng giải mã sang file Excel ……… … 37
Hình 3.13: Giao diện chức năng giải mã sang CSDL MySQL ……….… 38
Hình 3.14: Chức năng browse ……… … 39
Trang 5MỞ ĐẦU
1 Lý do chọn đề tài
Ngày nay, sự phát triển chóng mặt của Internet đã tác động đến cách sống và làm việc con người Với những tiện ích mà nó mang lại, ngày nay khó ai có thể hình dung được sự hoạt động của thế giới sẽ ra sao nếu không có sự hỗ trợ của Internet Thông tin đã trở thành hàng hóa, Internet trở thành siêu xa lộ với việc chuyển tải và cung ứng
1 lượng thông tin khổng lồ cho các nhu cầu khác nhau trên thế giới Vì vậy những vấn
đề về bảo mật thông tin ngày càng cấp thiết khi việc triển khai trên các mạng diện rộng, các CSDL lớn liên quan đến nhiều nguồn tài nguyên thông tin trong nhiều lĩnh vực và việc thực hiện nhiều dịch vụ cũng như ứng dụng quan trọng trên mạng
Như chúng ta đã biết phần lớn dữ liệu ngày nay được lưu trữ dưới dạng cơ sở dữ liệu (CSDL) như:MySQL, Access, SQL, Oracle …v.v hoặc dưới dạng các bảng tính như Excel Do đặc tính kỹ thuật và yêu cầu công việc nên mỗi công ty, cá nhân sẽ lựa chọn cho mình một kiểu CSDL khác nhau và nó sẽ dần dần trở thành thói quen Trong quá trình phát triển, kiểu CSDL đó có thể không còn phù hợp nữa, cần phải chuyển sang một kiểu CSDL khác Trong xu thế phát triển chung ấy, trường ta cũng không thể không có những thay đổi trong việc lựa chọn lại kiểu CSDL cho phù hợp hơn với công việc và bảo đảm hơn việc bảo mật dữ liệu Một trong những công việc của trường liên quan đến việc học tập của sinh viên là quản lí điểm Lâu nay, trường ta thực hiện việc quản lý điểm của sinh viên trên bảng tính Excel của Microsoft Tuy nhiên công cụ này ngày càng bộc lộ những bất cập và nhà trường đã và đang phát triển một phần mềm quản lý hoàn chỉnh hơn, trong đó dữ liệu được tổ chức dưới dạng CSDL MySQL Việc xây dựng một phần mềm để chuyển đổi dữ liệu từ bảng tính Excel và CSDL MySQL đồng thời có thể mã hóa chúng để việc truyền dữ liệu trên Internet được an toàn hơn là vấn đề cấp thiết Vì vậy tôi chọn đề tài “Xây dựng phần mềm mã hóa và chuyển đổi dữ liệu giữa Excel và MySQL” làm đề tài luận văn tốt nghiệp
2 Mục đích nghiên cứu
Xây dựng phần mềm với chức năng
- Mã hóa dữ liệu giữa bảng tính Excel và CSDL MyS2QL để lưu trữ và truyền
Trang 6- Chuyển đổi dữ liệu dạng bảng Excel sang CSDL MySQL và ngược lại, lấy XML làm trung gian
3 Đối tượng và phạm vi nghiên cứu
- Đề tài tập trung nghiên cứu các đối tượng sau :
+ Cấu trúc, kiểu dữ liệu CSDL MySQL
+ Tổ chức dữ liệu trong file XML
+ Mối tương đồng giữa bảng tính (sheet) Excel và các table của CSDL tạo cấu trúc cho file XML
+ Thuật toán mã hóa và giải mã dữ liệu
+ Ngôn ngữ lập trình JAVA
- Phạm vi nghiên cứu của đề tài: CSDL phục vụ cho việc quản lý điểm sinh viên trường Đại học Sư Phạm – Đại học Đà Nẵng
4 Phương pháp nghiên cứu
Lý thuyết: Thu thập, phân tích, tổng hợp các tài liệu liên quan từ Internet, sách…
từ đó xây dựng thuật toán mã hóa và thuật toán chuyển đổi
Thực nghiệm: Sử dụng ngôn ngữ JAVA để xây dựng chương trình mã hóa và chuyển đổi dữ liệu giữa Excel và MySQL
5 Cấu trúc của luận văn
Đề tài gồm phần mở đầu, 3 chương và kết luận:
- Chương 1: Cơ sở lý thuyết
Chương này trình bày cơ sở lý thuyết về bảo mật, bảng tính Excel, CSDL MySQL, XML và ngôn ngữ lập trình JAVA
- Chương 2: Mã hóa và chuyển đổi dữ liệu giữa Excel và MySQL
Chương này trình bày về các giải thuật mã hóa và phương pháp chuyển đổi dữ liệu giữa bảng tính Excel và MySQL
- Chương 3: Thiết kế và cài đặt chương trình
Trình bày về giao diện, cách thức làm việc với chương trình
Trang 7CHƯƠNG 1: CƠ SỞ LÝ THUYẾT
họ không biết cách giải mã
Có thể chia hệ mã thành hai loại chính:
- Hệ mã hoá đối xứng (Symmetric-key Encryption)
- Hệ mã hoá công khai (Public-key Encryption)
Trong phạm vi của đề tài này tôi sử dụng phương pháp mã hóa với khóa đối xứng
để mã hóa dữ liệu:
Từ đây ta quy ước một số ký hiệu sau:
M: Không gian các bản rõ, mỗi bản rõ là một chuỗi các ký tự cần mã hóa
C : Không gian các bản mã, mỗi bản mã là một chuỗi ký tự đã được mã hóa K: Không gian khóa, mỗi khóa là một chuỗi ký tự
Trong đó: ek: Khóa mã hóa
Hơn nữa, việc tính toán chỉ được thực hiện trên các số nguyên nhằm tránh các sai sót có thể xuất hiện khi làm việc với số thực
Trang 8Hệ mã khóa đối xứng có tính chất là nếu biết được khóa lập mã ek ta có thể dễ dàng tìm khóa giải mã dk Hoặc cả quá trình mã hóa lẫn giải mã chỉ sử dụng một khóa
vì thế hệ thống mã này còn được gọi là hệ mã khoá bí mật
Việc giữ bí mật khóa trở thành vấn đề sống còn của hệ mã
- Trước hết người gửi sử dụng một phép biến đổi khả nghịch để tạo ra văn bản
mã hóa:
ek: M C
ek ( ) = C, M M , C C
và truyền trên một kênh công cộng cho người nhận
- Khóa k cũng được truyền cho người nhận để giải mã nhưng thông qua một kênh
Cho m là số nguyên dương xác định
Trang 10Để giải mã ta có thể sử dụng cùng từ khóa đó nhưng phải thực hiện phép trừ theo modun 26
Chú ý là mã Vigenere có 26m khóa, nên ngay cả đối với m khá nhỏ thì không gian khóa vẫn khá lớn để việc phá khóa mất nhiều thời gian.Ví dụ, với m = 5 thì số khóa khoảng 1.1*107 Trong đề tài này để có thể mã hóa toàn bộ ký tự tôi sử dụng bảng ASCII để mã hóa nên không gian khóa là (Z256)m
1.2 Cơ sở dữ liệu MySQL
MySQL là hệ quản trị cơ sở dữ liệu mã nguồn mở phổ biến nhất thế giới và được các nhà phát triển rất ưa chuộng trong quá trình phát triển ứng dụng Vì MySQL là cơ
sở dữ liệu tốc độ cao, ổn định và dễ sử dụng, có tính khả chuyển, hoạt động trên nhiều
hệ điều hành cung cấp một hệ thống lớn các hàm tiện ích rất mạnh.Với tốc độ và tính bảo mật cao, MySQL rất thích hợp cho các ứng dụng có truy cập CSDL trên internet MySQL miễn phí hoàn toàn cho nên bạn có thể tải về MySQL từ trang chủ Nó có nhiều phiên bản cho các hệ điều hành khác nhau: phiên bản Win32 cho các hệ điều hành dòng Windows, Linux, Mac OSX…
MySQL là một trong những ví dụ rất cơ bản về Hệ Quản trị Cơ sở dữ liệu quan hệ
sử dụng Ngôn ngữ truy vấn có cấu trúc (SQL)
MySQL được sử dụng cho việc bổ trợ PHP, Perl, và nhiều ngôn ngữ khác, nó làm nơi lưu trữ những thông tin trên các trang web viết bằng PHP hay Perl,
Các kiểu dữ liệu của hệ quản trị CSDL MySQL:
- Loại dữ liệu numeric gồm kiểu số nguyên và kiểu chấm động:
+ Kiểu dữ liệu số nguyên
Smallint -32768 đến 32767 hay 0…65535 2 Số nguyên nhỏ Mediumint -8388608 đến 838860 hay 0…16777215 3 Số nguyên vừa Int -231 đến 231 -1 hay 0…232 – 1 4 Số nguyên
Bigint -263 đến 263 -1 hay 0…264 -1
Số nguyên lớn
Trang 11+ Bảng dữ liệu kiểu chấm động
float Phụ thuộc vào số thập phân Số thập phân dạng
single hay double
- Loại dữ liệu String:
Kiểu dữ liệu string chia làm 3 loại, loại thứ nhất như char(chiều dài cố định)
và varchar(chiều dài biến thiên) Char cho phép ta nhập liệu dưới dạng chuỗi với chiều
dài lớn nhất bằng chiều dài định nghĩa, nhưng khi truy cập dữ liệu trên Field có khai
Trang 12chiều dài là 10, nhưng bạn chỉ nhập chuỗi 4 kí tự, MySQL lưu trữ chuỗi trong bộ nhớ
với chiều dài là 10
Đối với varchar, chiều dài lớn nhất người dùng có thể nhập vào bằng chiều dài ta
đã định nghĩa cho Field này, bộ nhớ chỉ lưu chiều dài đúng với chiều dài của chuỗi
bạn đã nhập
Như vậy, có nghĩa là nếu ta khai báo kiểu varchar 10 kí tự, nhưng ta chỉ nhập 5 kí
tự, MySQL chỉ lưu trữ chiều dài 5 kí tự, ngoài ra, khi truy cập đến Field có kiểu dữ
liệu này, không cần giải quyết khoảng trắng
Loại thứ hai là text hay Blob, text cho phép lưu trữ rất lớn,blob cho phép lưu đối tượng nhị phân Loại thứ 3 là Enum và set Có thể tham khảo 3 loại trên theo bảng
Chiều dài của chuỗi lớn nhất 255 kí tự (characters)
Tinyblob 28 -1 Khai báo cho Field chứa kiểu đối tượng nhị phân cỡ 255
characters TinyXML 28 -1 Khai báo cho Field chứa kiểu chuỗi cỡ 255 character Blob 216 -1 Khai báo cho Field chứa kiểu bolb cỡ 65,535 characters XML 216 -1 Khai báo cho Field chứa kiểu chuỗi dạng văn bản cỡ
65,535 characters Mediumbold 224-1 Khai báo cho Field chứa kiểu bolb vừa cỡ 16,777,215
characters MediumXML 224-1 Khai báo cho Field chứa kiểu chuỗi dạng văn bản vừa cỡ
16,777,215 characters Longbold 232-1 Khai báo cho Field chứa kiểu bolb lớn khoảng
4,294,967,295 characters LongXML 232-1 Khai báo cho Field chứa kiểu chuỗi dạng văn bản
lớn khoảng 4,294,967,295 characters
Trang 131.3 Microsoft Excel
Microsoft Excel, còn được gọi theo tên đầy đủ Microsoft Office Excel, là
chương trình xử lý bảng tính nằm trong bộ Microsoft Office của hãng phần mềm Microsoft Cũng như các chương trình bảng tính Lotus 1-2-3, Quattro Pro… bảng tính của Excel cũng bao gồm nhiều ô được tạo bởi các dòng và cột, việc nhập dữ liệu và lập công thức tính toán trong Excel cũng có những điểm tương tự, tuy nhiên Excel có nhiều tính năng ưu việt và có giao diện rất thân thiện với người dùng Excel hiện nay
đã là phiên bản thứ 5 của Microsoft kể từ năm 1993
Đây cũng được xem là phần mềm xử lý bảng tính thông dụng nhất thế giới
Bảng tính Excel xử dụng 2 kiểu dữ liệu cơ bản sau để lưu trũ dữ liệu :
String : Kiểu String của Excel tương tự kiểu varchar trong MySQL
Lần đầu tiên xuất hiện vào năm 1992 như là một ngôn ngữ dùng trong nội bộ tập đoàn Sun Microsystems để xây dựng ứng dụng điều khiển các bộ xử lý bên trong máy điện thoại cầm tay, lò vi sóng, các thiết bị điện tử dân dụng khác Không chỉ là một ngôn ngữ, Java còn là một nền tảng phát triển và triển khai ứng dụng trong đó máy ảo Java, bộ thông dịch có vai trò trung tâm
Sun, công ty đã phát minh ra ngôn ngữ Java, chính thức ban hành bản Java Development Kit 1.0 vào năm 1996 hoàn toàn miễn phí để các nhà phát triển có thể tải
về, học Java, xây dựng các ứng dụng Java và triển khai chúng trên các hệ điều hành có
hỗ trợ Java Ban đầu, Java chủ yếu dùng để phát triển các applet, các ứng dụng nhúng
Trang 14Tuy nhiên, cùng với sự phát triển của công nghệ thông tin và nhu cầu của xã hội, Java applet đã dần mất đi vị trí của nó và thay vào đó, các công ty, cộng đồng ủng hộ Java
đã phát triển nó theo một hướng khác
Java đã trải qua 3 bước phát triển quan trọng: Java 1.0 gắn liền với bản JDK đầu tiên, Java 2 gắn với JDK 1.2 và Java 5 gắn với J2SDK 1.5
Ngày nay, khi nhắc đến Java người ta không còn chỉ nhắc đến Java như là một ngôn ngữ mà nhắc đến Java như là một công nghệ hay một nền tảng phát triển Nó bao gồm các bộ phận:
- Máy ảo Java: JVM
- Bộ công cụ phát triển: J2SDK
- Các đặc tả chi tiết kĩ thuật (specifications)
- Ngôn ngữ lập trình (programming language)
Các thư viện java được sử dụng :
SGML là do IBM đưa ra, song không thể không kể đến những đóng góp của các công ty khác XML được W3C (World Wide Web Consortium: tổ chức độc lập định ra tiêu chuẩn cho trình duyệt Web, máy chủ và ngôn ngữ) phát triển, nhưng đặc tả XML lại do Netscape, Microsoft và các thành viên của dự án Text Encoding Initiative (TEI) xây dựng Tổ chức W3C XML Special Interest Group có đại diện từ hơn 100 công ty
Trang 15cùng nhiều chuyên gia được mời khác Lý do ra đời của XML vì SGML rất rắc rối, và HTML có nhiều giới hạn nên năm 1996 tổ chức W3C thiết kế XML XML version 1.0 được định nghĩa trong hồ sơ February 1998 W3C Recommendation
Điểm quan trọng của kỹ thuật XML là nó không thuộc riêng về một công ty nào,
nó là một sản phẩm mà trí tuệ của nó thuộc về cả thế gới, nó là một tiêu chuẩn được mọi người công nhận vì được soạn ra bởi World Wide Web Consortium - W3C (một ban soạn thảo với sự hiện diện của tất cả các chuyên gia Tin học) và những ý kiến đóng góp bằng cách trao đổi qua Email Bản thân của XML rất là đơn giản, nhưng các công cụ chuẩn được định ra để làm việc với XML như Document Object Model - DOM, XPath, XSL, …v.v thì rất hữu hiệu, và chính các chuẩn này được phát triển không ngừng XML cũng giống như HTML đều là ngôn ngữ đánh dấu, nhưng điều cần nói ở đây là sự ra đời của XML để khắc phục cho một số yếu kém của HTML HTML
và XML đều sử dụng các tag nhưng các tag của HTML là một bộ dữ liệu tag được xây dựng và định nghĩa trước, tức là người lập trình phải tuân thủ theo các thẻ đã định nghĩa của HTML, hiện HTML có khoảng hơn 400 tag, để nhớ hết 400 tag này cũng không có gì khó khăn đối với người lập trình web chuyên nghiệp nhưng thật khó đối với những người không chuyên Hơn nữa các tag của HTML không nói lên được mô tả
dữ liệu trong đó Nhưng đối với XML thì hoàn toàn khác bởi vì tag trong XML là do người lập trình định nghĩa và mỗi tag là một mô tả dữ liệu mà người lập trình muốn truyền đạt
Trang 161.6 Mối quan hệ giữa cấu trúc bảng tính EXCEL và CSDL MySQL
1.6.1 Cấu trúc file Excel
Hình 1.1 : File Excel
- Microsoft Excel là một phần mềm hay là một chương trình ứng dụng, mà khi chạy chương trình ứng dụng này sẽ tạo ra một bảng tính và bảng tính này giúp ta dễ dàng
hơn trong việc thực hiện:
+ Tính toán đại số, phân tích dữ liệu
+ Lập bảng biểu báo cáo, tổ chức danh sách
+ Truy cập các nguồn dữ liệu khác nhau
+ Vẽ đồ thị và các sơ đồ
+ Tự động hóa các công việc bằng các macro
- Workbook: Trong Excel, một workbook là một tập tin mà trên đó bạn làm việc
(tính toán, vẽ đồ thị…) và lưu trữ dữ liệu Vì mỗi workbook có thể chứa nhiều sheet (bảngtính), do vậy bạn có thể tổ chức, lưu trữ nhiều loại thông tin có liên quan với nhau chỉ trong một tập tin (file) Một workbook chứa rất nhiều worksheet hay chart sheet tùy thuộc vào bộ nhớ máy tính của bạn
- Worksheet: Còn gọi tắt là sheet, là nơi lưu trữ và làm việc với dữ liệu, nó còn
được gọi là bảng tính Một worksheet chứa nhiều ô (cell), các ô được tổ chức thành các cột và các dòng Worksheet được chứa trong workbook Một worksheet chứa được 256 cột và 65,536 dòng
- Chart sheet: Cũng là một sheet trong workbook, nhưng nó chỉ chứa một đồ thị Một
chart sheet rất hữu ích khi bạn muốn xem riêng lẻ từng đồ thị
Trang 17- Sheet tabs: Tên của các sheet sẽ thể hiện trên các ngăn (tab) đặt tại góc trái dưới của
cửa sổ workbook Để di chuyển từ sheet này sang sheet khác ta chỉ việc nhấp chuột vào tên sheet cần đến trong thanh sheet tab
1.6.2 Cấu trúc lưu trữ dữ liệu MySQL
MySQL là hệ quản lý dữ liệu quan hệ, nó cho phép chúng ta tạo những bảng thông tin riêng, hoặc những vùng thông tin thích hợp Trong hệ thống cơ sở dữ liệu không quan hệ, tất cả những thông tin được lưu trữ trong một bảng lớn tạo nên những khó khăn trong việc sắp xếp và chỉ có thể chép dữ liệu mà bạn muốn.Trong SQL, mỗi bảng bao gồm những phần riêng biệt, biểu diễn mỗi thông tin
Ta có thể tạo ra cơ sở dựa trên những loại thông tin mà bạn lưu trữ Những bảng riêng biệt của MySQL liên kết với nhau nơi mà giá trị của vùng phổ biến lẫn nhau Vậy dữ liệu trong MySQL được chia thành các table, trong mỗi table đó thông tin
sẽ được chia thành các cột dữ liệu tương ứng
Hình 1.2 : CSDL MySQL trên phần mềm MySQL Workbench
Trang 181.6.3 Điểm tương đồng trong cấu trúc Excel và MySQL
Trong các phần trên ta đã hình dung được cấu trúc của file Excel và MySQL, dựa trên các cấu trúc đó ta sẽ phác thảo cấu trúc chung để có thể chuyển đổi qua lại giữa chúng :
Phân chia cấp độ lưu trữ tương ứng giữa Excel và MySQL
Excel : Sheets -> Columns -> Rows
MySQL : Tables -> Columns -> Rows
Với cách phân cấp lưu trữ như trên thì việc phân tích dữ liệu tương ứng giữa Excel
và MySQL đã được giải quyết Từ đó xây dựng cấu trúc file XML để có thể lưu trữ và chuyển đổi qua lại giữa Excel và MySQL
1.6.4 Các ràng buộc về cấu trúc Excel và MySQL
Mặc dù về mặt cấu trúc lưu trữ của Excel và MySQL đã được giải quyết nhưng về phương thức lưu trữ của Excel và MySQL ta không thể đồng nhất chúng lại với nhau được do đó để chuyển đổi dữ liệu giữa chúng ta cần thống nhất một số ràng buộc để chúng có thể chuyển đổi cho nhau
Ràng buộc đối với file Excel:
- Không được có tồn tại sheet không có dữ liệu vì việc đọc dữ liệu để chuyển
đối qua MySQL dựa trên file XML trung gian Do đó việc tạo file CSDL MySQL cũng dựa trên file XML đó, nên khi tồn tại 1 sheet không có dữ liệu thì trên file XML cũng tồn tại 1 phần tử ở mức <table> nhưng không có dữ liệu dẫn tới khi ta thực hiện việc chuyển đổi sẽ phát sinh ra lỗi và CSDL mới sẽ không được tạo
- Trong các Sheet cột dữ liệu đầu tiên phải là kiểu số và dữ liệu trên cột đó không được giống nhau Vì ta sẽ lấy cột đó làm khóa chính cho table của MySQL
- Hàng đầu tiên của các cột dữ liệu tương ứng với tên của cột đó Trong
MySQL mỗi cột đều có tên tương ứng nên khi đọc dữ liệu để tạo file CSDL MySQL
từ file Excel ta sẽ lấy hàng đầu tiên của cột dữ liệu làm tiêu đề cho cột dữ liệu trong MySQL
Trang 19Hình 1.3: File Excel thiết kế theo các ràng buộc
- Ràng buộc MySQL
Kiểu số phải là double : Vì kiểu số trong Excel là Double
Tóm lại: Trong chương này chúng ta đã tìm hiểu các lý thuyết cơ bản về bảng tính
Exel, CSDL MySQL, XML cũng như lý thuyết về sự tương đồng giữa chúng.Đó là cơ
sở để xây dựng phần mềm trong các chương sau
Trang 20CHƯƠNG 2: MÃ HÓA VÀ CHUYỂN ĐỔI DỮ LIỆU
2.1 Mô hình mã hóa, giải mã và chuyển đổi
Việc mã hóa và chuyển đổi dữ liệu sẽ được thực hiện với trung gian là file XML do:
- Có thể trích, chọn dữ liệu dễ dàng
- Với XML có thể trao đổi giữa các hệ thống không tương thích nhau
- Chia sẻ dữ liệu độc lập phần cứng và phần mềm Các phần tử thẻ XML tích hợp với nhau tạo nên một cấu trúc dữ liệu phân cấp vì vậy có thể dễ dàng hơn trong việc xây dựng các chương trình chuyển đổi dữ liệu mà các ứng dụng khác có thể dùng
2.1.1 Mô hình mã hóa
Hình 2.1: Mô hình mã hóa file Excel
- Để mã hóa file Excel tôi sử dụng mô hình trên để thực hiện Dữ liệu trong file Excel sẽ được lấy ra mã hóa và chuyển đổi sang file text để lưu trữ
Trang 21- Để mã hóa CSDL MySQL tôi sử dụng mô hình như trên Khi tiếp nhận tên CSDL muốn mã hóa, chương trình sẽ lấy toàn bộ dữ liệu của CSDL đó mã hóa và chuyển vào file text
2.1.2 Mô hình giải mã
Hình 2.3: Mô hình giải mã dữ liệu
Để có thể giải mã các dữ liệu đã được mã hóa trước hết ta phải giải mã và chuyển file text chứa dữ liệu mã thành file XML, từ file XML đó ta sẽ chuyển dữ liệu sang file Excel hoặc CSDL MySQL
Trang 222.1.3 Mô hình chuyển đổi dữ liệu
Hình 2.4: Mô hình chuyển đổi dữ liệu Việc chuyển đổi được thực hiện như mô hình trên Trong đó file XML sẽ làm trung gian để chuyển dữ liệu giữa bảng tính Excel và CSDL MySQL
2.2 Phương pháp mã hóa và giải mã file text
- Mã hóa dữ liệu bằng hệ Vigenere
Ta sử dụng hệ mã Vigenere để mã hóa nên ta có giải thuật mã hóa sau:
Giải thuật mã hóa:
Input: File text chứa dữ liệu: f1
- Số hóa key (theo bảng mã ASCII) : nk
- while not eof(f1) do
Trang 23•Ghi vào file f2 }
}
- Đóng file f1
- Đóng file f2
Phương pháp giải mã hệ Vigenere
Ta sử dụng hệ mã Vigenere để mã hóa nên ta có giải thuật giải mã sau:
Giải thuật giải mã hóa:
Input: File text chứa dữ liệu mã hóa: f1
- Số hóa key (theo bảng mã ASCII): nk
- while not eof(f1) do
Trang 242.3 Phương pháp chuyển đổi dữ liệu
- Chuyển đổi dữ liệu từ file Excel sang XML:
+ Để có thể chuyển từ file Excel sang XML thì file Excel phải được áp dụng
các quy tắc ràng buộc đã được trình bày ở trên
+ Vì lập trình trên JAVA nên việc truy xuất file Excel ta dùng thư viện
“JXL”, thư viện này cho phép đọc dữ liệu file Excel từ phiên bản 1997- 2003
+ Ta sẽ duyệt file Excel theo các cấp độ đã phân chia ở trên : Sheets -> columns -> rows
+ Thuật toán chuyển đổi dữ liệu từ Excel sang XML:
+ Tạo node trong XML “<table name = tên sheet>
+ Lấy số cột có dữ liệu trong sheet
+ Lấy số dòng có chứa dữ liệu trong sheet
+ while not end of column
Trang 25- Đóng file XML
- Đóng file Excel
- Chuyển đổi dạng MySQL sang XML
+ Để có thể chuyển từ CSDL MySQL sang XML thì CSDL MySQL phải
được áp dụng các quy tắc ràng buộc được trình bày ở trên
+ Vì lập trình trên JAVA nên việc truy xuất CSDL MySQL ta dùng thư viện
+ Tạo node trong XML “<table name = tên table>
+ Lấy số cột có dữ liệu trong table
+ Lấy số dòng có chứa dữ liệu trong table
+ while not end of column
Trang 26- Ghi vào định dạng cuối file XML, Đóng file Excel và file XML
- Đóng file XML
- Đóng file CSDL MySQL
- Chuyển đổi dạng XML sang Excel
Để chuyển đổi từ file XML sang file Excel trước hết ta phải chuyển file XML nhận được sang định dạng XML vì người dùng có thể lưu file XML dưới nhiều dạng khác nhau Sau khi đã chuyển đổi thành công ta sẽ chuyển dữ liệu từ file XML sang Excel việc chuyển đổi sẽ đươc thực hiện như sau:
j++;
}
* i++;
} }
- Đóng file f1
- Đóng file f2
Trang 27Chuyển đổi dạng XML sang MySQL
Để chuyển đổi từ file XML sang file Excel trước hết ta phải chuyển file XML nhận được sang định dạng XML vì người dùng có thể lưu file XML dưới nhiều dạng khác nhau Sau khi đã chuyển đổi thành công ta sẽ chuyển dữ liệu từ file XML sang Excel việc chuyển đổi sẽ đươc thực hiện như sau:
Input: file XML Output: CSDL MySQL Thuật toán:
+ while not node “table”
•Tạo table có tên là thuộc tính name của node “table”
while not node “column”
{
* Tạo column với tên là thuộc tính name của node “column”
* while not node “data”
{ insert dữ liệu của node “data” vào column }
} }
- Đóng file XML
- Đóng file CSDL MySQL
Trang 28CHƯƠNG 3
XÂY DỰNG PHẦN MỀM MÃ HÓA VÀ
CHUYỂN ĐỔI DỮ LIỆU
3.1 Mục đích và yêu cầu chương trình
Chương trình cung cấp cho người dùng 2 công cụ dùng để chuyển đổi và mã hóa
dữ liệu giữa Excel và MySQL:
Công cụ thứ nhất dùng để chuyển đổi dữ liệu từ Excel sang MySQL và ngược lại
Chẳng hạn ta có file Excel chứa các cột: stt, hoten, ngaysinh, diemrl, ghichu Được chuyển sang một table có các cột stt (kiểu double), hoten (kiểu varchar), ngaysinh (kiểu varchar), diemrl (kiểu double), ghichu (kiểu varchar)
Công cụ thứ hai dùng để mã hóa dữ liệu file Excel và MySQL thành các file text thuận tiện cho việc gửi đi trong môi trường Internet
Chẳng hạn ta có 1 file Excel chứa các cột: stt, hoten, ngaysinh, diemrl , ghichu hoặc 1 CSDL MySQL có một table có các cột stt (kiểu double), hoten (kiểu varchar), ngaysinh (kiểu varchar), diemrl (kiểu double), ghichu (kiểu varchar) và 1 key dùng để
mã hóa thì chương trình sẽ chuyển sang 1 file text với dữ liệu đã được mã hóa và sử dụng key chúng ta đưa vào để giải mã và tự động chuyển sang file Excel hoặc CSDL MySQL tương ứng
3.2 Môi trường và công cụ sử dụng
3.2.1 Môi trường
Phần mềm được xây dựng trên ngôn ngữ JAVA, vì thế để có thể chạy được chương trình này chúng ta cần phải tạo môi trường máy ảo JAVA thông qua JVM
Trang 30Hình 3.3: MySQL Workbech
- Microsoft office: Bộ office của Microsoft bộ phần mềm văn phòng phổ biến
nhất hiện nay nhưng có tính phí Ta cũng có thể sử dụng các bộ công cụ tương đương
nhưng miễn phí để có thể tạo bảng Excel như OpenOffice
- Notepad: File XML có thể được tạo bởi bất kỳ phần mềm tạo file txt nào Ở đây ta sử dụng Notepad trong hệ điều hành Windows
Trang 313.3 Giao diện chương trình
Hình 3.4: Giao diện khi vào chương trình
Trên cửa sổ chính của chương trình chứa 2 ô cho phép người dùng nhập các ID và Password dùng để đăng nhập vào hệ quản trị CSDL MySQL Sau khi nhập thông tin
về ID và Password của MySQL người dùng click vào nút “Continute” để vào cửa sổ chức năng của chương trình
Cửa sổ chức năng của chương trình gồm 3 phần với các tính năng tương ứng sau:
Trang 32Hình 3.5: Giao diện cửa sổ conversion
Conversion: chức năng chuyển đổi trực tiếp dữ liệu giữa Excel và MySQL
Trong phần này chia thành chức năng chuyển đổi dữ liệu từ bảng tính Excel sang CSDL MySQL và ngược lại