Tải bản đầy đủ (.doc) (51 trang)

CHUYỂN ĐỔI CÁC BẢNG TỪ HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU SQLSERVER SANG MYSQL

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (617.74 KB, 51 trang )

ĐẠI HỌC ĐÀ NẴNG
TRƯỜNG ĐẠI HỌC BÁCH KHOA
KHOA CÔNG NGHỆ THÔNG TIN
Tel. (84-511) 736 949, Fax. (84-511) 842 771
Website: itf.ud.edu.vn, E-mail:
LUẬN VĂN TỐT NGHIỆP KỸ SƯ
NGÀNH CÔNG NGHỆ THÔNG TIN
MÃ NGÀNH : 05115
ĐỀ TÀI :
CHUYỂN ĐỔI CÁC BẢNG TỪ HỆ QUẢN TRỊ
CƠ SỞ DỮ LIỆU SQLSERVER SANG MYSQL
Mã số : 07TLT-03
Ngày bảo vệ : 16-17/06/2009
SINH VIÊN : HUỲNH NGỌC ĐỨC
LỚP : 07TLT
CBHD : TS. NGUYỄN THANH BÌNH
ĐÀ NẴNG, 05/2009
LỜI CẢM ƠN
Lời đầu tiên tôi xin bày tỏ lòng biết ơn sâu sắc đến tất cả quý thầy
cô, những người đã tận tụy dạy dỗ, truyền đạt kiến thức và kinh nghiệm
quý báu cho tôi trong suốt năm năm học qua.
Tôi xin chân thành cảm ơn TS. Nguyễn Thanh Bình - thuộc khoa
Công nghệ thông tin, trường Đại học Bách khoa Đà Nẵng, người đã
hướng dẫn, tạo điều kiện thuận lợi và giúp đỡ tôi trong suốt thời gian
làm đề tài.
Và để có được kết quả như ngày hôm nay, tôi rất biết ơn gia đình đã
động viên, khích lệ và tạo mọi điều kiện thuận lợi nhất trong suốt quá
trình học tập cũng như quá trình thực hiện đề tài tốt nghiệp này.
Xin chân thành cảm ơn các bạn trong khoa Công nghệ thông tin, đặc
biệt là các bạn lớp 07TLT đã ủng hộ, giúp đỡ, chia sẻ kiến thức, kinh
nghiệm và tài liệu có được cho tôi trong quá trình nghiên cứu và thực


hiện đề tài.
Một lần nữa xin chân thành cảm ơn!
LỜI CAM ĐOAN
Tôi xin cam đoan:
1 Những nội dung trong luận văn này là do tôi thực hiện dưới sự
hướng dẫn trực tiếp của thầy TS. Nguyễn Thanh Bình.
2 Mọi tham khảo dùng trong luận văn đều được trích dẫn rõ ràng tên
tác giả, tên công trình, thời gian, địa điểm công bố.
3 Mọi sao chép không hợp lệ, vi phạm quy chế đào tạo, hay gian trá, tôi
xin chịu hoàn toàn trách nhiệm.
Sinh viên
Huỳnh Ngọc Đức
MỤC LỤC
MỞ ĐẦU....................................................................................................................................1
I. Bối cảnh đề tài...................................................................................................................1
II. Giới thiệu đề tài...............................................................................................................1
III. Nhiệm vụ thực hiện........................................................................................................1
i. Công nghệ........................................................................................................................1
ii. Ứng dụng........................................................................................................................1
IV. Bố cục trình bày.............................................................................................................1
CHƯƠNG 1...............................................................................................................................2
CƠ SỞ LÝ THUYẾT...............................................................................................................2
I. Công nghệ Dot NET.........................................................................................................2
1. Cấu trúc .Net Framework...............................................................................................2
2. Managed mođule............................................................................................................5
3. Metadata ........................................................................................................................6
4. Common Intermediate Language (CIL).........................................................................6
5. Assembly........................................................................................................................7
6. Manifest..........................................................................................................................8
II. Microsoft SQL Server 2005............................................................................................9

1. SQL Server Management Studio.................................................................................10
2. Catalog views...............................................................................................................10
3. Metadata function.........................................................................................................11
4. Stored Procedrures.......................................................................................................11
III. ADO.Net......................................................................................................................11
1. Mô hình làm việc của ADO.........................................................................................11
ii. Thuận lợi của ADO.Net...............................................................................................12
iii. Cấu trúc của ADO.Net................................................................................................13
iv. Các thành phần của ADO.Net.....................................................................................13
CHƯƠNG 2.............................................................................................................................16
PHÂN TÍCH HỆ THỐNG.....................................................................................................16
I. Giới thiệu bài toán:..........................................................................................................16
II. Định hướng xây dựng chương trình..............................................................................16
1. Các chức năng .............................................................................................................16
2. Giải pháp xây dựng chương trình................................................................................17
III. Xây dựng mô hình Use Case........................................................................................17
1. Xác định Actor và Use Case........................................................................................17
2. Mô hình Use Case........................................................................................................18
IV. Đặt tả Use Case............................................................................................................18
1. Use Case Kết nối cơ sở dữ liệu....................................................................................18
2. Use Case xem cấu trúc.................................................................................................19
3. Use Case xem lược đồ..................................................................................................20
4. Use Case xem dữ liệu...................................................................................................20
5. Use Case kết nối MySQL.............................................................................................21
6. Use Case chuyển đổi tất cả các bảng...........................................................................22
7. Use Case chuyển đổi với bảng lựa chọn......................................................................23
CHƯƠNG 3.............................................................................................................................26
THIẾT KẾ HỆ THỐNG........................................................................................................26
I. Hiện thực hóa các Use Case ở mức thiết kế...................................................................26
II. Sơ đồ lớp........................................................................................................................30

1. Thiết kế chi tiết các lớp................................................................................................30
2. Mối quan hệ giữa các lớp.............................................................................................34
CHƯƠNG 4.............................................................................................................................35
PHÁT TRIỂN ỨNG DỤNG..................................................................................................35
I. Môi trường phát triển chương trình................................................................................35
II. Một số kết quả đạt được................................................................................................35
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN............................................................................40
DANH MỤC HÌNH ẢNH
Hình 1.1: Visual Studio.Net và .Net Framework..................................................................3
Hình 1.2: Các thành phần của CLR.......................................................................................4
Hình 1.3: Mô hình thực thi ứng dụng .Net............................................................................5
Hình 1.4: Sơ đồ một assembly đa file.....................................................................................7
Hình 1.5: Mô hình làm việc của ADO..................................................................................12
Hình 1.6: Cấu trúc của ADO.Net..........................................................................................13
Hình 1.7: Mô hình làm việc của DataSet.............................................................................14
Hình 2.1: Mô hình chung cho việc chuyển đổi cơ sở dữ liệu.............................................17
Hình 2.2: Sơ đồ Use Case của ứng dụng..............................................................................18
Hình 3.1: Sơ đồ tuần tự của Use Case kết nối cơ sở dữ liệu..............................................26
Hình 3.2: Sơ đồ tuần tự của Use Case xem cấu trúc cơ sở dữ liệu ở dạng cây...............26
Hình 3.3: Sơ đồ tuần tự của Use Case xem dữ liệu Table..................................................27
Hình 3.4: Sơ đồ tuần tự của Use Case xem lược đồ cơ sở dữ liệu.....................................27
Hình 3.5: Sơ đồ tuần tự của Use Case chuyển đổi tất cả các bảng...................................28
Hình 3.6: Sơ đồ tuần tự của Use Case chuyển đổi với các bảng lựa chọn.......................29
Hình 3.7: Thiết kế chi tiết lớp KetNoiSqlServer.................................................................30
Hình 3.8: Thiết kế chi tiết lớp KetNoiMySQL....................................................................31
Hình 3.9: Thiết kế chi tiết lớp ThucThiScript.....................................................................31
Hình 3.10: Thiết kế chi tiết lớp XuLy...................................................................................32
Hình 3.11: Thiết kế chi tiết lớp XemDuLieu.......................................................................32
Hình 3.12: Thiết kế chi tiết lớp ChuyenDoi.........................................................................33
Hình 3.13: Sơ đồ lớp của ứng dụng......................................................................................34

Hình 4.1: Giao diện chính khi khởi động ứng dụng...........................................................35
Hình 4.2: Giao diện kết nối với cơ sở dữ liệu SqlServer....................................................36
Hình 4.3: Giao diện chính khi kết nối với cơ sở dữ liệu.....................................................36
Hình 4.4: Giao diện các chức năng trên câu cấu trúc........................................................37
Hình 4.5: Dữ liệu của bảng....................................................................................................37
Hình 4.6: Chuyển đổi với các bảng được lựa chọn.............................................................38
Hình 4.7: Giao diện chuyển đổi thành công........................................................................38
Hình 4.8: Cơ sở dữ liệu vừa mới tạo ra................................................................................39
DANH MỤC BẢNG
Bảng 3.1: Mô tả các thuộc tính của lớp KetNoiSqlServer.................................................30
Bảng 3.2: Mô tả các phương thức của lớp KetNoiSqlServer............................................30
Bảng 3.3: Mô tả các thuộc tính của lớp KetNoiMySql.......................................................31
Bảng 3.4: Mô tả các phương thức của lớp KetNoiMySQL................................................31
Bảng 3.5: Mô tả các phương thức của lớp ThucThiScript................................................31
Bảng 3.6: Mô tả phương thức của lớp XuLy.......................................................................32
Bảng 3.7: Mô tả thuộc tính lớp XemDuLieu.......................................................................32
Bảng 3.8: Mô tả các phương thức của lớp XemDuLieu.....................................................32
Bảng 3.9: Mô tả thuộc tính của lớp ChuyenDoi..................................................................33
Bảng 3.10: Mô tả phương thức của lớp ChuyenDoi...........................................................33
MỞ ĐẦU
I. Bối cảnh đề tài
Với nhiều loại hệ quản trị cơ sở dữ liệu như hiện nay, một người dùng có thể lựa
chọn một loại hệ quản trị cơ sở dữ liệu để phù hợp với nhu cầu sử dụng của mình. Khi
đã có cơ sở dữ liệu của hệ quản trị cơ sở dữ liệu này mà người sử dụng muốn dùng cơ
sở dữ liệu đó ở hệ quản trị cơ sở dữ liệu khác thì một công việc thường thấy là chuyển
đổi từ hệ quản trị cơ sở dữ liệu này sang hệ quản trị cơ sở dữ liệu khác. Một chương
trình để chuyển đổi từ hệ quản trị cơ sở dữ liệu SqlServer qua MySQL có thể được sử
dụng để đáp ứng một phần nào đó nhu cầu của người dùng hiện nay.
II. Giới thiệu đề tài
Với bối cảnh nêu trên, em đã thực hiện đề tài mang tên “Chuyển đổi các bảng từ hệ

quản trị cơ sở dữ liệu từ SqlServer qua MySQL”. Chương trình ở đây được cung
cấp dưới hình thức Winform. Với việc sử dụng chương trình dưới Desktop thì người sử
dụng dễ dàng sử dụng chương trình này.
III.Nhiệm vụ thực hiện
i. Công nghệ
• Tìm hiểu hệ quản trị cơ sở dữ liệu Microsoft SQL Server 2005.
• Tìm hiểu hệ quản trị cơ sở dữ liệu MySQL.
• Áp dụng ngôn ngữ mô hình hóa UML trong quá trình phân tích thiết kế.
• Tìm hiểu và đưa ra các giải pháp trong quá trình thiết kế.
ii. Ứng dụng
• Nắm bắt xu hướng công nghệ và tìm hiểu nhu cầu của người dùng cũng như các
chương trình hiện có giữa các hệ quản trị cơ sở dữ liệu để tạo một chương trình
mang tính chất cộng đồng.
• Chương trình cung cấp dưới hình thức ứng dụng Desktop.
• Chương trình Winform với giao diện quen thuộc giúp người dùng dễ sử dụng.
IV. Bố cục trình bày
Báo cáo được trình bày theo bố cục sau:
• Mở đầu
• Chương 1. Cơ sở lý thuyết
• Chương 2. Phân tích hệ thống
• Chương 3. Thiết kế hệ thống
• Chương 4. Cài đặt và triển khai dịch vụ
• Kết luận
Huỳnh Ngọc Đức, Lớp 07TLT 1
CHƯƠNG 1
CƠ SỞ LÝ THUYẾT
I. Công nghệ Dot NET
Trên thực tế ngày nay, việc sử dụng thư điện tử, lướt trên các trang Web, trao đổi với
các cơ sở dữ liệu và sử dụng các ứng dụng phân tán ngày càng trở nên phức tạp hơn, vì
thế trình độ và kỹ thuật lập trình để tạo và bảo dưỡng các phần mềm cũng ngày càng

được yêu cầu cao hơn, tinh vi hơn. Các nhà lập trình chúng ta hàng ngày phải đối diện
với COM, COM+, DCOM, SP, SOAP, XML, XSL,…, các bộ công cụ SDK (Software
Developer Kit) phức tạp.
Microsoft, cũng như đa số trong chúng ta, đã tạo nên ngày càng nhiều các công cụ
chuyên dùng. Hệ điều hành hay các ứng dụng Windows đầy đủ tính năng hơn, theo yêu
cầu của kỹ thuật công nghệ và do đó đã thêm vào không ít các SDK hay các tiêu chuẩn
ở chỗ này, chỗ nọ. Kết quả là hệ điều hành, thư viện, công cụ trở nên không còn khả
chuyển, quá nặng nề với biết bao các mở rộng. Thế là bộ khung .NET (.NET
FRAMEWORK) ra đời, và nó thực sự làm thay đổi điều kể trên. Đó không chỉ là một
bước tiến, một nâng cấp hay một hợp nhất các công việc. Mà đó chính là một điều vĩ
đại, một cuộc bức phá ngoạn mục. Nó định nghĩa lại tất cả mọi điều bạn đã biết về lập
trình cho máy PC về tất cả mọi hình thù lẫn kích thước, kể cả về ngôn ngữ lập trình
trong đó.
1. Cấu trúc .Net Framework
.Net Framework là một nền tảng cung cấp các tiện nghi cho việc xây dựng và chạy
các ứng dụng. Các thành phần chính của nó là CLR(common language runtime) và
FCL(.Net Framework Class Library).
CLR trừu tượng hóa các dịch vụ của hệ điều hành và đóng vai trò là máy thực thi các
ứng dụng chịu sự quản lý của nó. FCL cung cấp API hướng đối tượng để viết các ứng
dụng .Net. Khi viết các ứng dụng .Net ta bỏ lại đằng sau các công cụ như Window API,
MFC, ATL, COM, v.v.. và chỉ sử dụng FCL.
Huỳnh Ngọc Đức, Lớp 07TLT 2
Đồ án tốt nghiệp Cơ sở lý thuyết
Cấu trúc cụ thể của .Net Framework như sau:
Hình 1.1: Visual Studio.Net và .Net Framework
Base Class Library cung cấp các lớp đối tượng để lập trình ứng dụng. ADO.NET là
phiên bản tiếp theo của ADO phục vụ cho việc truy cập dữ liệu từ hầu hết các nguồn
cung cấp dữ liệu hiện nay, đặc biệt có hỗ trợ XML. Hai dòng ứng dụng chính của .Net là
ứng dụng mạng (Web Form, Web service) và Window Form. Common Language
Specification hỗ trợ các nhà phát triển phần mềm các công cụ để biên dịch, giao tiếp

giữa các ngôn ngữ VB, C++, C#, J#, … gọi chung là các ngôn ngữ họ .Net.
Common Language Runtime (CLR):
CLR là gì?
CLR là một máy thực thi nằm ở phần trên cùng của hệ điều hành và cung cấp một
môi trường ảo để chạy các ứng dụng dưới sự quản lý của nó. Khi bạn chạy một chương
trình, CLR nạp mô đun chứa managed code và thực thi mã lệnh bên trong nó. Managed
code là mã lệnh viết để chạy trên CLR, gồm tập hợp các chỉ lệnh viết bằng một ngôn
ngữ giả ngôn ngữ assembly gọi là CIL (common intermediate language).
Các chỉ lệnh CIL được biên dịch tức thời (JIT – just-in-time) sang ngôn ngữ máy vào
thời điểm thực thi. Trong hầu hết các trường hợp việc biên dịch chỉ được thực hiện một
lần duy nhất vào thời điểm nó được gọi, sau đó được lưu vào bộ nhớ đệm cho lần chạy
sau khỏi bị gián đoạn.
Việc biên dịch JIT chắc chắn có ảnh hưởng đến tốc độ thực thi nhưng thực tế một
phương thức chỉ được biên dịch một lần duy nhất trong suốt phiên chạy của ứng dụng.
Về lý thuyết, mã biên dịch JIT có thể chạy nhanh hơn mã biên dịch thông thường bởi vì
Huỳnh Ngọc Đức, Lớp 07TLT 3
Đồ án tốt nghiệp Cơ sở lý thuyết
trình biên dịch JIT có thể tối ưu hóa mã máy mà nó sản sinh cho các phiên bản khác
nhau của bộ xử lý.
Hình 1.2: Các thành phần của CLR
Một số chức năng của CLR:
Code veryfication: Khi trình biên dịch JIT chuyển đổi các chỉ lệnh CIL sang native
code, nó tạo ra một tiến trình kiểm tra để đảm bảo rằng các mã lệnh là an toàn. Các mã
lệnh không được truy cập vào vùng nhớ mà ứng dụng không có quyền truy cập. Khi có
một con trỏ sai lạc được sử dụng thì CLR sẽ phát sinh một ngoại lệ. Bạn không thể gọi
một phương thức mà cơ cấu stack của nó có khiếm khuyết vì CLR không cho phép điều
đó. Tóm lại là code veryfication sẽ ngăn ngừa các mã lệnh gây hại cho hệ thống. Tuy
nhiên người quản trị hệ thống có thể tắt chức năng code veryfication nếu cần.
Application domain: CLR có khả năng host nhiều ứng dụng trong một tiến trình bằng
cách chia tiến trình ra thành nhiều ngăn ảo gọi là miền ứng dụng (application domain).

Window cách ly các ứng dụng bằng cách tổ chức chúng thành các tiến trình khác nhau.
Cách tổ chức như vậy làm tốn nhiều bộ nhớ. Trong một số trường hợp nhất định CLR
không phóng một tiến trình mới cho mỗi ứng dụng mà cho một nhóm các ứng dụng và
host các ứng dụng riêng biệt trong các application domain. Application domain an toàn
như tiến trình bởi vì nó hình thành một ranh giới mà ứng dụng không được xâm phạm.
Nhưng các application domain hoạt động hiệu quả hơn bởi vì một tiến trình có thể host
Huỳnh Ngọc Đức, Lớp 07TLT 4
Class Loader
IL to Native
Compilers
Code
Manager
Garbage
Collector
Security Engine Debug Engine
Type Checker Exception Manager
Thread Support COM Marshaler
Base Class Library Support
Đồ án tốt nghiệp Cơ sở lý thuyết
nhiều application domain và các thư viện được nạp vào miền ứng dụng có thể chia sẻ
cho tất cả các ứng dụng trong miền.
Garbage collection: CLR chứa một bộ dọn rác khá công phu. Bộ dọn rác kiểm tra các
tham chiếu đến các đối tượng bạn tạo ra và phá hủy những đối tượng này khi không cần
chúng nữa để cấp cho các việc khác. Các giải thuật dọn rác trong CLR nhanh hơn so với
bộ cấp phát vùng nhớ trong C rất nhiều.
Mô hình thực thi ứng dụng trong .Net:
Hình 1.3: Mô hình thực thi ứng dụng .Net
Mã nguồn viết bởi các ngôn ngữ .Net được trình biên dịch tương ứng biên dịch thành
các mô đun chứa mã CIL. Các mô đun này được định dạng để chạy trên CLR nên được
gọi là các managed module. Các managed module của cùng một ứng dụng được liên kết

lại với nhau thành một cơ cấu gọi là assembly. Khi chạy ứng dụng, CLR dựa vào các
thông tin trong mô đun chính của assembly để nạp các mô đun khác khi cần thiết.
2. Managed mođule
Khi xây dựng một chương trình với một trình biên dịch sản sinh mã CIL, nó sẽ tạo ra
các managed module. Đó là các file thực thi được thiết kế để chạy trong CLR. Thông
thường chúng có phần mở rộng là EXE, DLL hoặc NETMODULE.
Bên trong một managed module có 4 yếu tố quan trọng:
• Một header của file thực thi trên Windows
Huỳnh Ngọc Đức, Lớp 07TLT 5
Đồ án tốt nghiệp Cơ sở lý thuyết
• Một CLR header chứa các thông tin quan trọng về module như nơi đặt CIL và
metadata của nó
• Metadata mô tả mọi thứ bên trong module và các phần phụ thuộc bên ngoài.
• Các chỉ lệnh CIL được sản sinh từ mã nguồn.
Mỗi managed module chứa siêu dữ liệu (metadata) mô tả nội dung module. Khi nạp
một mô đun, CLR dựa vào metadata để biết các thông tin về các kiểu dữ liệu dùng trong
mô đun và một số thông tin khác. Mọi trình biên dịch tương thích CLR đều tạo ra
metadata trong module. Điều này cũng rất quan trọng cho người lập trình, vì mỗi
managed module đều mô tả chính nó. Nhờ vậy mà ta có thể phân tích một file exe hay
DLL viết bằng các ngôn ngữ .Net để xem trong đó có các class gì và các class này chứa
những gì. Và nhờ vào metadata, trình biên dịch C# có thể tìm trong 1 file DLL viết bằng
VB .Net các class để thừa kế chúng. Ngoài ra metadata còn giúp thực hiện chức năng
IntelliSense trong Visual Studio .Net (chức năng liệt kê các thuộc tính, phương thức, …
của một đối tượng, kiểu dữ liệu).
3. Metadata
Metadata của một module được lưu trong một tập các bảng. Một bảng TypeDef chứa
các kiểu (class, struct, enumeration,…) trong module. Một bảng chứa các phương thức
được thừa kế bởi các kiểu này, một bảng khác liệt kê các trường, một bảng khác liệt kê
các thuộc tính, v.v.. Một số các bảng liệt kê các tham chiếu đến các kiểu dữ liệu bên
ngoài module, các assembly chứa các kiểu dữ liệu bên ngoài, v.v..

Các thông tin metadata phụ được lưu trữ bên ngoài các bảng trong vùng heap chứa
các mục tham chiếu bởi các thực thể bảng. Ví dụ, các tên lớp và các tên phương thức
được lưu trong string heap, các string literals được lưu trong một heap riêng gọi là user-
string heap.Các bảng metadata và các heap cùng nhau định nghĩa mọi thứ mà bạn hay
CLR có thể cần để biết được nội dung của mô đun và các phụ thuộc bên ngoài.
4. Common Intermediate Language (CIL)
CIL thường được mô tả giống như một ngôn ngữ mô phỏng assembly bởi vì nó định
nghĩa một tập hợp các chỉ lệnh trung gian cho bộ xử lý. Tuy nhiên trong trường hợp này,
bộ xử lý là CLR chứ không phải bộ xử lý thông thường. Ta không cần phải biết CIL
mới lập trình được .NET. Nhưng kiến thức cơ bản về CIL có thể thực sự hữu ích khi
một phương thức trong FCL không chạy theo cách ta mong muốn. Khi đó ta dựa vào mã
CIL để tìm ra nguyên nhân.
Huỳnh Ngọc Đức, Lớp 07TLT 6
Đồ án tốt nghiệp Cơ sở lý thuyết
CIL có khoảng 100 chỉ lệnh, đóng vai trò trung gian giữa các ngôn ngữ C#, VB.Net,
Visual C++, J#, … Các managed module là kết quả của việc biên dịch từ các ngôn ngữ
này sang CIL. .Net có sẵn công cụ ILDASM để trình bày cho người dùng nội dung của
một mô đun ở dạng CIL.
5. Assembly
Như đã nói ở trên, các trình biên dịch .NET tạo ra các managed modun và các
managed modun chứa các CIL và metadata. Nhưng CLR không có khả năng sử dụng
trực tiếp các managed modun. Đó là do đơn vị cơ bản quản lý an toàn, versioning và
deployment trong .NET không phải các managed modun mà là các assembly.
Một assembly là một tập hợp của một hoặc nhiều file được nhóm lại với nhau để hình
thành một đơn vị về logic. Thuật ngữ file ở đây thường chỉ các managed modun, nhưng
các assembly có thể bao gồm nhiều file không phải là các managed modun. Hầu hết các
assembly chỉ chứa một file (single-file assembly – assembly đơn file) nhưng các
assembly có thể và đôi khi chứa nhiều file (multifile assembly – assembly đa file). Tất
cả các file tạo nên một assembly đa file phải nằm cùng trong cùng một thư mục. Khi bạn
sử dụng trình biên dịch C# để sinh ra một file exe đơn giản, file exe này không chỉ là

một managed modun, nó là một assembly. Hầu hết các trình dịch đều có thể tạo các
managed modun không phải là assembly và cũng có thể thêm các file khác vào assembly
mà nó tạo ra.
Hình 1.4: Sơ đồ một assembly đa file
Các assembly đa file thường được dùng để gắn các modun viết bằng các ngôn ngữ
khác nhau lại với nhau, hay dùng để kết hợp các managed modun với các file thông
thường chứa các ảnh JPEG hoặc các tài nguyên khác.
Huỳnh Ngọc Đức, Lớp 07TLT 7
Đồ án tốt nghiệp Cơ sở lý thuyết
Các assembly còn được dùng để phân ứng dụng thành các phần rời rạc để tiện
download. Ví dụ, thử tưởng tượng có một người với kết nối dialup muốn download một
ứng dụng nhiều mb được chứa trong một assembly đơn file, việc download code có thể
kéo dài mãi. Để giải quyết vấn đề này ta có thể chia đoạn mã thành nhiều file và đặt các
file đó vào một assembly đa file. Bởi vì một modun không được nạp trừ khi cần đến nó,
người dùng sẽ không chịu phí download các phần của ứng dụng mà họ không dùng.
6. Manifest
Làm thế nào để CLR biết các file nào thuộc về một assembly. Một trong số các file
asembly chứa một manifest (bản kê khai). Manifest chỉ là phần thêm vào trong
metadata. Khi một trình biên dịch tạo ra một managed modun (cũng là assembly), nó chỉ
đơn giản viết manifest vào metadata của module. Một cách logic, manifest là một bản
đồ dẫn đến nội dung của assembly.
Các thành phần quan trọng của manifest gồm:
• Tên của assembly
• Danh sách các file khác của assembly
• Danh sách các kiểu dữ liệu nhập khẩu từ các file khác trong assembly và
thông tin ánh xạ các kiểu dữ liệu này với các file định nghĩa chúng
• Số phiên bản dạng major.minor.build.revision
Assembly còn được chia làm 2 loại là weakly named assembly và strongly named
assembly. Weakly named nghĩa là assembly không được đánh dấu mã hóa và CLR chỉ
sử dụng tên của assembly lưu giữ trong manifest của assembly (chỉ là tên file không có

phần mở rộng) để xác định assembly. Strongly named assembly chứa một khóa public
của nhà cung cấp và một chữ ký số mà thực chất là mã băm của manifest chứa khóa
public đó. Chữ ký số, được phát sinh từ khóa private của nhà cung cấp và dùng để xác
nhận cùng khóa public để kiểm tra xem assembly có bị chỉnh sửa lại hay không.
Định danh của một strongly named assembly được kết hợp bằng tên assembly, khóa
public, số phiên bản và culture string nếu có. Bất kỳ một sự sửa đổi nhỏ nào CLR cũng
có thể nhận ra. Khi CLR nạp một strongly named assembly, nó so sánh số phiên bản
trong assembly với số phiên bản mà ứng dụng đã được biên dịch cùng với assembly
trước đó. Nếu các số không khớp thì CLR sẽ phát sinh một exception. Điều này nhằm
ngăn ngừa trường hợp các DLL bị sửa đổi, biên dịch lại và phiên bản biên dịch lại này
chứa lỗi bên trong dẫn đến lỗi ứng dụng.
Huỳnh Ngọc Đức, Lớp 07TLT 8
Đồ án tốt nghiệp Cơ sở lý thuyết
II. Microsoft SQL Server 2005.
SQL Server là ngôn ngữ truy vấn dữ liệu, là một bước nhảy vọt về phía cơ sở dữ liệu
đa người dùng của Microsoft, nhằm phục vụ cho những nhà phát triển hệ thống cơ sở dữ
liệu. Hơn nữa, sự phát triển nhanh chóng của nhu cầu xây dựng những cơ sở dữ liệu lớn
theo mô hình client/server thì ngôn ngữ SQL càng phổ biến. Trong mô hình
client/server, toàn bộ cơ sở dữ liệu được tập trung lưu trữ trên server, mọi thao tác xử lý
dữ liệu được thực hiện trên server bằng các lệnh SQL. Client chỉ lấy thông tin từ server.
SQL được sử dụng để nhanh chóng tạo ra các trang Web động (Dynamic Web Page),
nối kết giữa cơ sở dữ liệu và trang Web. Khi người dùng yêu cầu, SQL sẽ thực hiện việc
truy cập thông tin trong cơ sở dữ liệu trên server và hiển thị kết quả trên trang Web.
SQL xử lý, phân tích thông tin, sửa đổi dữ liệu của các bảng vì SQL chỉ làm việc với
những dữ liệu có cấu trúc dạng bảng (table) như Foxpro, Access. SQL sử dụng Query
cho phép nhiều người truy cập đồng thời, mỗi Query là một câu lệnh SQL được xây
dựng hoàn chỉnh và ghi lại để có thể mang ra sử dụng bất kỳ lúc nào. SQL có khả năng
đáp ứng hầu hết các yêu cầu đối với việc cập nhật, phân tích dữ liệu từ các bảng.
Một số công dụng chính của SQL:
• Kết nối dữ liệu trên server, dùng lệnh SQL để tương tác với cơ sở dữ liệu.

• Kết hợp các trang Web với cơ sở dữ liệu bằng lệnh SQL. Tất cả các chức năng
của SQL đều có thể được thực hiện bằng các công cụ khác của các phần mềm
có sử dụng SQL.
• Thêm, cập nhật, xoá các bảng ghi trên toàn bảng theo những điều kiện khác
nhau.
• Câu lệnh đơn giản, rất ngắn gọn, dễ nhớ, dễ sử dụng.
Có thể sử dụng SQL Server thực hiện việc xử lý giao dịch, lưu trữ và phân tích dữ
liệu.
SQL Server thuộc họ các sản phẩm và công nghệ mà kho dữ liệu phù hợp với các yêu
cầu môi trường xử lý giao dịch trực tuyến và xử lý phân tích trực tuyến. SQL Server là
hệ quản trị cơ sở dữ liệu quan hệ với các tính năng sau:
• Quản lý kho dữ liệu cho các giao dịch.
• Khả năng lưu trữ dữ liệu với các kiểu dữ liệu có miền giá trị rộng, bao gồm
text, numeric, XML và các đối tượng lớn.
Huỳnh Ngọc Đức, Lớp 07TLT 9
Đồ án tốt nghiệp Cơ sở lý thuyết
• Đáp trả các yêu cầu từ các ứng dụng client.
• Sử dụng Transact-SQL, XML hay các câu lệnh SQL Server khác để gởi các
yêu cầu giữa ứng dụng client và SQL Server.
Hệ quản trị cơ sở dữ liệu SQL Server là đáng tin cậy đối với:
• Việc duy trì các mối liên hệ giữa các đối tượng dữ liệu trong một cơ sở dữ
liệu.
• Việc đảm bảo rằng dữ liệu được lưu trữ đúng đắn và các quy tắc định nghĩa
các quan hệ giữa các đối tượng dữ liệu là không bị xâm phạm.
Ta có thể xem cấu trúc dữ liệu hệ thống cơ sở dữ liệu bằng hai cách khác nhau. Khi
cần xem thông tin về đối tượng cơ sở dữ liệu, cách dễ dàng nhất là sử dụng SQL Server
Management Studio. Khi viết các ứng dụng lấy cấu trúc dữ liệu các đối tượng cơ sở dữ
liệu, nên sử dụng Transact-SQL để lấy thông tin từ các danh mục được cung cấp bởi hệ
thống, nên tận dụng các hàm hệ thống hoặc thi hành các thủ tục được xây dựng sẵn của
hệ thống.

1. SQL Server Management Studio.
SQL Server Management Studio cung cấp các công cụ trực quan để hiển thị metadata
của cơ sở dữ liệu và đồng thời thông qua môi trường này ta có thể dễ dàng quản lý nó.
Các công cụ thường gặp nhất:
• Object Explorer: là công cụ đồ họa cho việc định vị và quản lý các servers,
databases và các đối tượng cơ sở dữ liệu.
• Properties Window: mỗi đối tượng cơ sở dữ liệu bên trong Object Explorer có
một cửa sổ Properties tương ứng mà có thể truy xuất bằng cách click phải
chuột tại đối tượng và chọn Properties.
Reports: SQL Server Management Studio chứa một tập hợp các reports cho các nodes
khác nhau được cung cấp bên trong Object Explorer bởi SQL Server Report Server
Engine. Các nodes thường được sử dụng có thể hiện các report bao gồm Server,
Database, Login, Management.
2. Catalog views.
Catalog views cho phép truy vấn metadata liên quan các đối tượng cơ sở dữ liệu SQL
Server như tables, stored procedures và constraints.
Huỳnh Ngọc Đức, Lớp 07TLT 10
Đồ án tốt nghiệp Cơ sở lý thuyết
Catalog views được liệt kê trong thư mục Views. Một thư mục Views cho mỗi cơ sở
dữ liệu trong SQL Server Management Studio. Mặc dù có thể truy vấn chúng bằng cú
pháp Transact-SQL chuẩn đối với các views do người dùng định nghĩa, chúng không
thực sự được cài đặt như các views truyền thống, có nghĩa là nó không truy vấn trên các
tables mà thay vào đó nó truy vấn trực tiếp trên các metadata của hệ thống. Có hơn 200
catalog views và chúng được định nghĩa sẵn trong System Schema.
3. Metadata function
SQL Server 2005 định nghĩa một số các loại hàm khác nhau trả về thông liên quan cơ
sở dữ liệu và các đối tượng cơ sở dữ liệu. Ngược lại với catalog views trả về nhiều dòng
thông tin, các hàm này chỉ trả về một giá trị đơn lẻ và được hiểu là hàm vô hướng.
4. Stored Procedrures
SQL Server 2005 cung cấp nhiều Store Procedures của hệ thống lấy thông tin

metadata cơ sở dữ liệu. Các thủ tục này cung cấp một khả năng thực hiện khác cho việc
truy vấn thông tin mà catalog views đã cung cấp và chấp nhận các tham số thủ tục cho
phép sự tùy biến các tập kết quả.
III. ADO.Net
1. Mô hình làm việc của ADO
ActiveX Data Object (ADO) là phương thức truy cập cơ sở dữ liệu. Nó là tập hợp các
đối tượng được sử dụng để truy cập cơ sở dữ liệu. ADO kết nối đến cơ sở dữ liệu thông
qua một cung cấp OLE DB.
ADO là một mô hình lập trình định nghĩa việc xử lý được theo sau khi truy cập và
duy trì dữ liệu nguồn. Sử dụng ADO, chúng ta có thể:
• Kết nối đến dữ liệu nguồn.
• Chỉ định một lệnh để truy cập dữ liệu nguồn và thực thi nó.
• Lưu trữ dữ liệu được trả lại như là kết quả của lệnh vào nơi lưu trữ, nơi mà nó
có thể được thao tác.
• Cập nhật dữ liệu nguồn với dữ liệu được chỉnh sửa trong nơi lưu trữ.
Huỳnh Ngọc Đức, Lớp 07TLT 11
Đồ án tốt nghiệp Cơ sở lý thuyết
Hình 1.5: Mô hình làm việc của ADO
ii. Thuận lợi của ADO.Net
ADO.Net cho phép thỏa thuận sự thuận lợi dễ dàng xử lý của dữ liệu thao tác thông
qua trang web. Sự thuận lợi của nó như sau:
• Thao tác bên trong: các thành phần được phát triển bởi các công cụ khác có
thể giao tiếp với mỗi thành phần khác thông qua các DataSet vì DataSet được
thao tác trong định dạng XML.
• Sự thực thi: Trong ADO khi Recordset chuyển đổi dữ liệu với sự giúp đỡ của
COM, dữ liệu trong Recordset phải được chuyển đổi sang kiểu dữ liệu COM.
Tuy nhiên, xử lý sự chuyển đổi kiểu dữ liệu là không cần thiết trong trường
hợp của ADO.Net vì dataset được chuyển đổi sang XML vì DataSet là định
dạng trong XML.
• Tính linh hoạt: trong trường hợp Recordset gia tăng số người sử dụng, số kết

nối được yêu cầu tăng lên và vượt quá duy trì nên sự kết nối đó cản trở sự
thực thi của trình ứng dụng. Mô hình không kết nối của mô hình ADO.Net
không tạo ra các giá trị vượt quá. Vì thế, khả năng trình ứng dụng có thể được
gia tăng mà không phải lo lắng về sự gia tăng giá trị vượt quá duy trì.
• Tiêu chuẩn hóa: vì dữ liệu trong dataset có thể được duy trì ở mẫu dạng XML
và chuyển đổi giữa các tầng trong mẫu của XML nên tiêu chuẩn hóa là điều có
thể.
• Khả năng lập trình: trong ADO.Net ngôn ngữ giống như C# và VB được sử
dụng cho lập trình.
Huỳnh Ngọc Đức, Lớp 07TLT 12
Đồ án tốt nghiệp Cơ sở lý thuyết
iii. Cấu trúc của ADO.Net
Khi dữ liệu được yêu cầu thực thi, nó được đưa đến tầng trung gian từ cơ sở dữ liệu
rồi đến lớp hiển thị. Khi chuyển dữ liệu đến giao diện người sử dụng, ADO.Net chuyển
nó dạng XML. Trong khi chuyển đổi dữ liệu từ một tầng này đến một tầng khác,
ADO.Net hiển thị dữ liệu dưới dạng XML rồi chuyển dữ liệu này đến thành phần khác.
Hình 1.6: Cấu trúc của ADO.Net
iv. Các thành phần của ADO.Net
Các thành phần của ADO.Net được thiết kế để truy cập và thao tác dữ liệu trong .Net
framwork. ADO.Net gồm có hai thành phần chính sau:
a. DataSet
DataSet là phần biểu thị trong bộ nhớ của một loạt dữ liệu hoàn chỉnh, bao gồm các
bảng, các mối quan hệ và các hạn chế. DataSet không duy trì một tuyến nối với nguồn
dữ liệu, điều đó cho phép vận dụng cơ chế quản trị dữ liệu rời một cách đích thực. Có
thể truy cập, điều tác, cập nhật hoặc xóa dữ liệu trong một DataSet rồi cập nhật nó với
nguồn dữ liệu ban đầu. Do DataSet tách rời với nguồn dữ liệu nên ít có tranh chấp về
nguồn tài nguyên và ít bị khóa khoản tin hơn.
DataSet được lập nên bởi ba tập hợp Tables, Relations và ExtendedProperties. Các
tập hợp này tạo thành cấu trúc dữ liệu quan hệ của DataSet.
• Tập hợp Tables: Thuộc tính DataSet.Tables trả về một đối tượng

DataTablesCollection chứa 0 hoặc nhiều đối tượng DataTable. Mỗi
DataTables biểu thị một bảng dữ liệu từ nguồn dữ liệu. Mỗi DataTables được
tạo thành bởi một tập hợp Columns và một tập hợp Rows bao gồm 0 hoặc
nhiều DataColumns hay DataRows theo thứ tự trên.
• Tập hợp Relations: Thuộc tính DataSet.Relations trả về một đối tượng
DataRelationsCollection chứa 0 hoặc nhiều đối tượng DataRelation. Các đối
Huỳnh Ngọc Đức, Lớp 07TLT 13
Đồ án tốt nghiệp Cơ sở lý thuyết
tượng DataRelation định nghĩa một mối quan hệ cha-con giữa hai bảng dựa
vào các giá trị khóa ngoại.
• Tập hợp ExtendedProperties: Thuộc tính DataSet.ExtendedProperties trả về
một đối tượng PropertyCollection chứa 0 hoặc nhiều tính chất do người dùng
định nghĩa. Có thể dùng tập hợp ExtendedProperties để lưu trữ dữ liệu tùy
biến có liên quan đến DataSet, chẳng hạn như thời gian lúc DataSet được cấu
tạo.
Hình 1.7: Mô hình làm việc của DataSet
b. .Net data provider
.Net data provider chứa đựng các đối tượng truy cập đến nơi lưu trữ cơ sở dữ liệu
trong nhiều nguồn khác nhau. Nó được lập nên bởi các tập hợp sau:
• Connection Object: dùng để nối với nguồn dữ liệu. Các lớp tuyến nối lưu trữ
thông tin mà ADO.Net cần để nối với một nguồn dữ liệu dưới dạng một chuỗi
nối.
• Command Object: dùng để thực thi một lệnh SQL hoặc các thủ tục lưu trữ sẵn
dựa trên nguồn dữ liệu và truy lục một DataReader hay DataSet, hoặc thực thi
một lệnh Insert, Update hay Delete dựa trên nguồn dữ liệu.
• DataReader Object: một tệp kết quả nối (connected resulted) chỉ cho phép đọc
(read only) và tiến tới (forward only). Ta không thể di chuyển qua nó theo
cách thức ngẫu nhiên và cũng không thể dùng nó để cập nhật nguồn dữ liệu.
Do đó nó cho phép truy cập dữ liệu cực kỳ nhanh khi đơn thuần ta chỉ muốn
duyệt qua một lần dữ liệu. DataReader chỉ có thể được trả về từ một lệnh gọi

đến phương pháp ExecuteReader của một đối tượng Command, ta không thể
trực tiếp tạo ra một đối tượng DataReader.
Huỳnh Ngọc Đức, Lớp 07TLT 14
Đồ án tốt nghiệp Cơ sở lý thuyết
• DataAdapter Object: dùng để điền một DataSet bằng dữ liệu từ nguồn dữ liệu
và cập nhật nguồn dữ liệu. DataAdapter tác động như một cầu nối giữa
DataSet rời và nguồn dữ liệu.
Huỳnh Ngọc Đức, Lớp 07TLT 15
CHƯƠNG 2
PHÂN TÍCH HỆ THỐNG
I. Giới thiệu bài toán:
Để có thể tận dụng được hết những thế mạnh của các hệ quản trị cơ sở dữ liệu thì bài
toán đặt ra là cần phải nghiên cứu tìm ra các giải pháp thực hiện việc chuyển đổi qua lại
giữa các hệ quản trị cơ sở dữ liệu, giúp người dùng có thể dùng vào các mục đích ứng
dụng lưu trữ dữ liệu trong các loại hệ quản trị cơ sở dữ liệu khác nhau mà không cần
phải tạo ra lại cơ sở dữ liệu ban đầu trong hệ quản trị cơ sở dữ liệu khác. Các loại hệ
quản trị cơ sở dữ liệu trong cùng một hãng Microsoft như SqlServer, Access có thể
chuyển đổi qua lại cho nhau. Trong phạm vi của đề tài này tôi chỉ chú trọng vào việc
chuyển đổi các bảng từ hệ quản trị cơ sở dữ liệu SqlServer qua MySQL.
“Chuyển đổi các bảng từ hệ quản trị cơ sở dữ liệu SqlServer qua MySQL” là một ứng
dụng nhằm chuyển dữ liệu từ hệ quản trị cơ sở dữ liệu SqlServer qua MySQL, từ đó
người dùng có thể sử dụng cơ sở dữ liệu trong hệ quản trị cơ sở dữ liệu MySQL giống
như cơ sở dữ liệu đích SqlServer. Quá trình này được mô tả đơn giản như sau: Người
dùng vào ứng dụng rồi truy cập vào cơ sở dữ liệu của hệ quản trị cơ sở dữ liệu
SqlServer. Ứng dụng sẽ thực hiện việc chuyển đổi dữ liệu và cấu trúc của các bảng
trong cơ sở dữ liệu của hệ quản trị cơ sở dữ liệu SqlServer sang hệ quản trị cơ sở dữ liệu
MySQL tương ứng. Cấu trúc và dữ liệu của các bảng được lưu trong hệ quản trị cơ sở
dữ liệu MySQL. Người dùng cũng có thể xem lại nội dung cơ sở dữ liệu của hệ quản trị
cơ sở dữ liệu MySQL để so sánh đối chiếu xem thử cấu trúc và dữ liệu của các bảng có
tương đương với nhau hay chưa.

II. Định hướng xây dựng chương trình
1. Các chức năng
• Truy cập vào cơ sở dữ liệu của hệ quản trị cơ sở dữ liệu SqlServer và hiển thị
cấu trúc của cơ sở dữ liệu đó dưới dạng cây.
• Xem lược đồ tổng quát của cơ sở dữ liệu.
• Xem dữ liệu của bảng được chọn trên cây cấu trúc.
• Chuyển đổi cấu trúc bảng và dữ liệu từ hệ quản trị cơ sở dữ liệu SqlServer qua
MySQL với tất cả các bảng hoặc chỉ các bảng được lựa chọn.
Huỳnh Ngọc Đức, Lớp 07TLT 16
Đồ án tốt nghiệp Phân tích hệ thống
2. Giải pháp xây dựng chương trình
Mục đích của chương trình là chuyển đổi bảng từ hệ quản trị cơ sở dữ liệu SqlServer
qua MySQL, giúp người dùng có thể đáp ứng được với yêu cầu của thực tế với cấu trúc
hệ quản trị cơ sở dữ liệu gần như tương đương nhau. Trong phạm vi của đề tài này tôi
chỉ tập trung chuyển đổi ở mức các bảng. Cùng với hai hệ quản trị cơ sở dữ liệu
SqlServer và MySQL thì chương trình được xây dựng bằng ngôn ngữ lập trình C#. Đây
là công cụ lập trình thích hợp để xây dựng ứng dụng WinForm.
Do vậy, một cách để giải quyết tốt vấn đề trên là lấy thông tin các bảng của cần
chuyển đổi sau đó tạo ra Script tương ứng phù hợp với MySQL để mà thực thi đoạn
Script vừa tạo ra. Sau đó chuyển dữ liệu tương ứng của các bảng giữa hai bên hệ quản
trị cơ sở dữ liệu.
Hình 2.1: Mô hình chung cho việc chuyển đổi cơ sở dữ liệu
III.Xây dựng mô hình Use Case
1. Xác định Actor và Use Case
• Actor
Chương trình có một Actor Người dùng – sử dụng chương trình này để
chuyển đổi các bảng từ hệ quản trị cơ sở dữ liệu SqlServer qua MySQL
• Use Case
o Kết nối cơ sở dữ liệu: truy cập vào cơ sở dữ liệu.
o Xem cấu trúc: Xem cấu trúc cơ sở dữ liệu ở dạng cây.

o Xem lược đồ: Xem lược đồ cơ sở dữ liệu.
o Xem dữ liệu: Xem dữ liệu của bảng được chọn.
Huỳnh Ngọc Đức, Lớp 07TLT 17

×