6. Ý nghĩa khoa học của đề tài
2.2. Giải thuật nhúng đề xuất
Xuất phát từ các kiến thức tìm hiểu trên, một câu hỏi đặt ra liên quan tới việc sắp xếp, tổ chức lại dữ liệu của CSDL trong quá trình tìm hiểu các giải pháp nhúng tin vào CSDL. Câu hỏi và cũng là ý tƣởng phát triển là: “Tại sao ta không tìm cách tổ chức, sắp xếp các thông tin trong CSDL dạng nhƣ một bức ảnh ?!” Tức là ta xây dựng một bảng duy nhất lƣu trữ toàn bộ các thông tin trong các bảng của CSDL. Ta gọi bảng duy nhất này là “Bảng hợp”. Mỗi giá trị trong bảng hợp là một giá trị thông tin lƣu trữ tại từng trƣờng, từng bản ghi trong các bảng của CSDL. Sau khi xây dựng xong bảng hợp này thì toàn bộ CSDL cũ đã đƣợc lƣu trữ dƣới dạng ma trận. Ta có thể coi bảng hơp này giống nhƣ một ma trận các điểm ảnh của một bức ảnh.
Giá trị lƣu trữ trong từng ô của bảng hợp là các giá trị khác nhau của các trƣờng, bản ghi khác nhau, có thể nhiều kiểu dữ liệu khác nhau. Do đó không thể đồng nhất 1 kiểu dữ liệu trong bảng. Đây cũng lá một khó khăn lớn trong việc tổ chức bảng hợp. Chính vì thế, để thuận lợi cho việc xậy dựng
bảng hợp tôi đƣa ra cách tổ chức lƣu trữ trong từng giá trị của bảng. Tại các ô
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
xác định giá trị chính xác của nó trong CSDL. Tuy nhiên ta không nhúng thông tin vào các giá trị lƣu trữ trong các ô nhớ mà nhúng vào thông tin thực mà nó tham chiếu đến trong CSDL.
Mỗi một giá trị đƣợc tham chiếu đến qua các ô nhớ trong ma trận bảng hợp có thể chỉ lá 1 bit, vã cũng có thể là dãy bit thể hiện các thông tin lƣu trong CSDL. Nó là một dạng dữ liệu bất kỳ, có thể là văn bản, số nguyện, số thực, ngày tháng, hay một dạng thông tin nào khác. Và việc nhúng thông tin vào các dạng dữ liệu này cũng có nhiều cách thức khác nhau.
Một điều chúng ta cần quan tâm nữa là việc tạo ra bảng hợp với kích thức rộng “K”; giá trị kích thức “K” tuy thuộc vào ngƣời dùng cho vào. Điều này cũng tạo ra nhiều cơ hội cho việc xây dựng các bảng hợp với các kích thƣớc khác nhau, tuy thuộc vào chủ nhân của CSDL.
Ta xét minh họa sau:
Minh họa là một phần cơ sở dữ liệu quản lý sinh viên thu, trong đó ta quan tâm tới mã sinh viên, mã môn học làm tham số tìm kiếm giá trị cần nhúng thông tin. Năm công tác, điểm là bộ dữ liệu che giấu thông tin nhúng.
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
Hình 2.2.2 Minh họa dữ liệu kết quả học tập của sinh viên Hai bảng dữ liệu minh họa trên có quan hệ với nhau qua khóa chính của bảng dữ liệu sinh viên là idSinhvien.
Ta ví dụ xây dựng đƣợc bảng hợp với kích thƣớc K = 4 để chứa các
thông tin lƣu dữ liệu nhúng. Bảng hợp này đƣợc xây dựng bằng cách duyệt
lần lƣợt các giá trị trong bảng SinhVien, với mỗi giá trị trong bảng SinhVien ta lấy lần lƣợt các giá trị có liên quan trong bảng KetQuaHocTap. Trong quá trình duyệt lấy dữ liệu, ta đƣa dữ liệu vào bảng hợp theo thứ tự từ trái qua phải, hết hàng trên thì tiếp tục xuống hàng tiếp theo. Kết quả ta đƣợc bảng nhƣ sau:
Hình 2.2.3 Bảng hợp lƣu dữ liệu để nhúng tin
Trên hình bảng hợp trên, dữ liệu mỗi màu là các thông tin của 6 sinh viên khác nhau.
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
Mã số: 2014010001 - Nguyễn Thị Vân An. - Giá trị [1,1] = 2 là năm công tác
- Giá trị [1,2] = 6 là điểm môn học có mã số 0312 - Giá trị [1,3] = 8 là điểm môn học có mã số 0701
Các giá trị màu xanh dƣơng, nền trắng là các dữ liệu thuộc về sinh viên:
Mã số: 2014010002 – Vũ Thị Thục An. - Giá trị [1,4] = 2 là năm công tác
- Giá trị [2,1] = 6 là điểm môn học có mã số 0215 - Giá trị [2,2] = 5 là điểm môn học có mã số 0302 - Giá trị [2,3] = 5 là điểm môn học có mã số 0701 Tƣơng tự các giá trị còn lại.
Các giá trị “null” không chứa thông tin gì.
Nhƣ phần trên đã trình bày việc tổ chức lƣu trữ bảng hợp là bảng các giá trị chứa thông tin nhúng. Căn cứ vào đó ta tiến hành tổ chức bảng hợp là bảng các thông tin mang tính tìm kiếm, xác định thông tin chứa dữ liệu nhúng. Tức là lƣu các khóa chính và khóa ngoại của các bảng để tìm kiếm, xác định thông tin trong bảng. Ta qua sát hình sau:
Hình 2.2.4: Hình mô phỏng bảng hợp chứa thông tin tìm kiếm, xác định dữ liệu.
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
Trong bảng hợp này các giá trị chứa 1 giá trị khóa tƣơng ứng với xác định dữ liệu tại bảng khóa đó làm khóa chính. Còn bảng chứa hơn 1 khóa là thì các khóa này có thể là khóa chính, cũng có thể là khóa ngoại của bảng chứa tập các khóa này. Ta đối chiếu hình 2.2.4 và 2.2.3 ta thấy:
- Giá trị mã sinh viên 2001410001 xác định đƣợc năm công tác là 2 của sinh viên Nguyễn Thị Vân An.
- Giá trị mã sinh viên 2001410002 xác định đƣợc năm công tác là 2 của sinh viên Vũ Thị Thục An.
- Giá trị mã sinh viên 2001410001 và mã môn học 0312 xác định đƣợc điểm là 6 của sinh viên Nguyễn Thị Vân An.
- Giá trị mã sinh viên 2001410002 và mã môn học 0302 xác định đƣợc điểm là 5 của sinh viên Vũ Thị Thục An.
- Tƣơng tự các giá trị khác.
Bảng hợp đã đƣợc xây dựng, việc của ta trong quá trình nhúng tin vào CSDL là tìm cách đƣa đƣợc các thông tin cần nhúng vào trong bảng hợp này. Ta duyệt lần lƣợt từng ô nhớ của bảng hợp, thông qua các thông tin mang tính chất xác định vị trí và tìm kiếm này, ta tiến hành nhúng tin vào trong vào giá trị xác định đƣợc. Việc nhúng tin vào bảng hợp này cũng cho phép nhiều cách tiếp cận khác nhau. Ứng với từng loại dữ liệu cho mà các ô nhớ của bảng hợp tham chiếu tới cho ta các cách nhúng tin vào khác nhau.
Việc có nhiều cách xây dựng bảng hợp, nhiều cách duyệt bảng hợp để nhúng tin cũng đòi hỏi ngƣời nhúng tin phải nhớ từng bƣớc, từng cách để thông qua các bƣớc này mới lấy ra đƣợc thông tin nhúng và dữ liệu gốc.
Sau khi hoàn thành quá trình tạo bảng hợp, toàn bộ CSDL cần nhúng tin có thể coi nhƣ một ma trận điểm nhớ. Ta bắt đầu nhúng tin vào bảng hợp này.
Thực chất bảng hợp là một ma trận, một mảng 2 chiều lƣu trữ các giá trị tham chiếu. Nên có bao nhiêu cách duyệt ma trận, duyệt mảng 2 chiều thì
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
có bấy nhiêu cách duyệt bảng hợp để nhúng tin. Điều này tạo nên những đặc điểm khác nhau, khó xác định nữa trong việc nhúng tin là cách duyệt các ô nhớ của bảng hợp để nhúng tin.
Giải thuật nhúng:
Input: - CSDL quan hệ D
- Dãy bit nhúng B[N,M]. - Vị trí nhúng đầu tiên (x,y) - Số lần nhùng Nx
- Khoảng cách lần nhúng Dx,Dy
Output: CSDL đƣợc nhúng tin D’
Action:
A[h,w]:= Tạo bảng hợp(D); ii:=0; A’[h,w] : bit[h,w];
While(ii<Nx) do
Với mỗi B[i,j] A’[x+i,y+j] := B[i,j]; //nhúng(B[i,j],A[x+i,y+j]);
x=x+Dx+N; y=y+Dy+M; ii++;
endwhile;
D’=Cập nhật(D,A[h,w],A’[h,w]); Return D’;
- Ở trong giải thuật này có 3 phƣơng thức cần lƣu ý
1. Tạo bảng hợp(D): Tức là căn cứ vào CSDL quan hệ D ta xây dựng một bảng hợp lƣu các tham số giúp tìm kiếm, xác định dữ liệu trong CSDL
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
2. A’[x+i,y+j] := B[i,j]: Phƣơng thức này chỉ đơn giản căn cứ vào bit B[i,j] mà nhúng tin vào một vị trí nhớ nào đó trong của dữ liệu tại vị trí xác định theo A[x+i,y+j].
3. Cập nhật(D,A[h,w],A’[h,w]): Đây là bƣớc cập nhật từ các tham số xác định trong bảng hợp vào CSDL. Ở bƣớc này với mỗi A’[i,j] (0<i<h; 0<j<w) ta xem có quyết định nhúng 1 lƣợng tin vào dữ liệu tại vị trí xác định qua A[i,j] không.
Ứng với minh họa của bảng hợp ở trên, ta tiến hành nhúng tin vào bảng hợp, rồi từ bảng hợp nhúng tin ta cập nhật vào trong CSDL.
Thí dụ dãy bít cần nhúng là: “101”. Cách duyệt bảng hợp để nhúng
trong thí dụ này là ta dùng duyệt “lần lƣợt từng giá trị từ [1,1], [1,2], [1,3], ..., [2,1], [2,2], …”. Và với khoảng cách nhúng là 2 giá trị kế tiếp. Số lần nhúng không hạn chế; nhúng cho tới khi hết bảng hợp.
Và đƣợc kết quả:
Hình: 2.2.5: Minh họa bảng hợp vào các bít sẽ nhúng
Căn cứ vào bảng hợp trên, ta cập nhật lại vào CSDL. Do dữ liệu minh
họa “a” thuộc kiểu số thực chỉ mang giá trị phấn nguyên và chấp nhận thay đổi tại phần thập phân nên việc nhúng thông tin vào từng giá trị đƣợc thao tác nhƣ sau:
Ta nhúng mỗi giá trị 1 bit.
Nếu bit nhúng là “1” thì a= a+0,1; Nếu bit nhúng là 0 thì a= a+ 0,01;
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
Hình 2.2.6: Bảng sinh viên sau khi nhúng tin
Hình 2.2.7 Bảng Kết quả học tập sau khi nhúng tin
Với dữ liệu sau khi nhúng thì giá trị sử dụng của từng gia trị trong CSDL không bị thay đổi nhiều. Trên đây là một cách nhúng tin đơn giản, trong thực tế khi sử dụng thì ngƣời dùng có thể cài đặt các cách đƣa bit vào trong CSDL hiệu quả hơn.
Giải thuật trên có độ phức tạp tuy thuộc vào độ dài của bảng hợp. Mà chiều dài bảng hợp phụ thuộc số bản ghi trong từng bảng dữ liệu của CSDL. Số ô nhớ cần lƣu trữ trong bảng hợp bằng tổng của tích số bảng ghi từng bảng và số cột lấy tin. Điều này làm cho kích thƣớc bảng hợp trở nên rất lớn khi áp dụng giải thuật vào CSDL có số bản ghi lớn. Đây cũng là một hạn chế của bảng hợp; hợp chỉ xây dựng hiệu quả với CSDL kích thƣớc nhỏ và vừa khoảng vài nghì bản ghi.
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
Còn với CSDL lớn hơn thì ta có thể cải tiến bằng cách duyệt lần lƣợt nhƣ cách ví dụ trên đã trình bày vào không thông qua bảng hợp ta nhúng tin trực tiếp trong từng bƣớc duyệt giá trị trong CSDL.
Điều nêu trên đặt ra câu hỏi: “Có nhất thiết phải sử dụng bảng hợp
không ?”.
Câu hỏi đƣợc trả lời nhƣ sau: Bảng hợp chỉ giúp ngƣời nhúng tin tổ chức lại dữ liệu theo ý của riêng của mình thành dạng ma trân. Từ đó áp dụng các kỹ thuật thao tác với ma trận phức tạp riêng của mình để nhúng tin một cách bí mật, lộn xộn, chỉnh mình ngƣời nhúng lấy đƣợc tin ra. Trong trƣờng hợp đặc biệt có thể bỏ qua bảng hợp mà thao tác trực tiếp với CSDL.