Trong phần này, thuật toán truyền thống được sử dụng để kiểm tra tính kết nối không mất thông tin trong phép phân tách. Thuật toán kiểm tra truyền thống được sử dụng trong mô hình cơ sở dữ liệu quan hệ mờ được mô tả như
sau. Một bảng được tạo để xác định có thuộc tính kết nối giữa các quan hệ phân tách hay không. Sự mờ sẽ được xem xét sau bước này. Nếu có một thuộc tính kết nối thì các quan hệ có thể được kết nối hay không phụ thuộc vào mức độ tương tự giữa chúng và một ngưỡng được xác định trước. Các bộ dữ liệu cũng phải thoả mãn tất cả các ffd của quan hệ, nghĩa là với mọi cặp bộ dữ liệu t1, t2, với mỗi ffd X →ϑ Y , thì C( Y [t1 ,t2]) ≥ min (ϑ, C(X[t1, t2])).
Thuật toán 2.13. Thuật toán kiểm tra tính kết nối không mất thông tin.
Vào: Cho lược đồ quan hệ R với các thuộc tính A1, A2, ..., An, phép phân tách
ρ={R1, R2, ..., Rk} và tập các phụ thuộc mờ F.
Ra: Một khẳng định là ρ có phải là một phân tách có kết nối không mất
thông tin hay không.
Phương pháp:
1) Khởi tạo bảng T với 1 dòng i cho mỗi quan hệ Ri trong phép phân tách và một cột j cho mỗi thuộc tính Aj trong quan hệ cần được phân tách R. 2) Đưa bij vào mỗi ô của bảng
3) Với mỗi dòng i và cột j
Nếu Aj nằm trong miền thuộc tính, Ui, của Ri, thì thiết lập Tij=aj
4) Lặp lại cho tới khi không có thay đổi nào trong T Với mỗi ffd X →α Y trong F
Với tất cả các dòng trong bảng T, tìm các dòng có ký hiệu giống nhau ở tất cả các cột tương ứng với các thuộc tính trong X,
Nếu tìm được 2 dòng như thế, thiết lập ký hiệu ở tất cả các cột tương ứng với các thuộc tính trong Y như sau: Nếu có bất cứ một ký hiệu là “a”, thiết lập ký hiệu kia cũng là “a”.
5) Cuối cùng, nếu có một dòng toàn là ký hiệu “a” thì phép phân tách
đảm bảo tính kết nối không mất thông tin. Nếu khác, phép phân tách không đảm bảo tính kết nối không mất thông tin.
Ví dụ 2.17. Cho lược đồ quan hệ R = (A, B, C, D, E, F) và các ffd là A
→0.6 B, C →0.5 DE và AC →0.8 F. AC là khoá mờ của quan hệ với độ mạnh là 0.5. Giả sử phân tách R thành 2 quan hệ R1= (B, E) và R2 =(A, C, D, E, F) và
sau đó áp dụng thuật toán kiểm tra tính kết nối không mất thông tin.
Bước 1: Khởi tạo bảng T với i=2 dòng cho quan hệ R1 và R2, và j=6
cột cho các thuộc tính A, B, C, D, E và F.
Bước 2: Khởi tạo các ô là bij (bảng 2.6).
T A B C D E F
R1 b11 b12 b13 b14 b15 b16
R2 b21 b22 b23 b24 b25 b26
Bảng 2.6: Bảng khởi tạo cho quan hệ R=(A, B, C, D, E, F)
Bước 3: Với dòng đầu tiên, T12 và T15 lần lượt thiết lập là a2 và a5, vì quan hệ R1 chứa các thuộc tính A2 = B và A5 = E. Tương tự với dòng thứ 2, lần lượt các ô T21, T23, T24, T25 và T26được thiết lập là a1,
a3, a4, a5 và a6, vì quan hệ R2 chứa các thuộc tính A, C, D, E và F
(bảng 2.7).
T A B C D E F
R1 b11 a2 b13 b14 a5 b16
R2 a1 b22 a3 a4 a5 a6
Bảng 2.7: Bảng sau khi áp dụng bước thứ 3 của thuật toán kiểm tra kết nối không mất thông tin cho R
Bước 4: Với ffd đầu tiên, A →0.6 B, R1 và R2 không có các ký hiệu giống nhau trong cột đầu tiên, cột của thuộc tính A, do đó không có thay đổi ở cột B.
Xét ffd thứ hai, C→0.5 DE, R1 và R2 cũng không có các ký hiệu giống nhau trong cột của thuộc tính C, và không có thay đổi trong bảng. Tương tự với ffd cuối, AC →0.8 F cũng không có thay đổi trong bảng.
Bước 5: Vì không có dòng nào bao gồm toàn ký hiệu “a”, phép phân tách không phải là phép phân tách có kết nối không mất thông tin.
Ví dụ 2.18. Ví dụ về phép phân tách có kết nối không mất thông tin. Cho lược đồ quan hệ R = (A, B, C, D, E, F, G) và các ffd là ABC →0.7 D,
ABC →0.8 E, DE →0.7 F, F →0.6 G. ABC là khoá mờ của quan hệ với độ mạnh là 0.7 (áp dụng thuật toán tìm khoá mờ). Giả sử phân tách R thành 3 quan hệ
R1 = (A, B, C, D, E), R2 = (D, E, F) và R3 = (F, G), và sau đó áp dụng thuật toán kiểm tra kết nối không mất thông tin.
Bước 1: Khởi tạo bảng T có i = 3 dòng cho các quan hệ R1, R2, R3,
và j = 7 cột cho các thuộc tính A, B, C, D, E, F, G. Bước 2: Khởi tạo các ô là bij (bảng 2.8) T A B C D E F G R1 b11 b12 b13 b14 b15 b16 b17 R2 b21 b22 b23 b24 b25 b26 b27 R3 b31 b32 b33 b34 b35 b36 b37
Bảng 2.8: Bảng khởi tạo cho quan hệ R = (A, B, C, D, E, F, G)
Bước 3: Với dòng đầu tiên, T11, T12, T13, T14, và T15 lần lượt được
A2 = B, A3 = C, A4 = D và A5 = E. Tương tự dòng 2, các ô T24, T25 và
T26được thay lần lượt là a4, a5, a6, vì R2 chứa các thuộc tính D, E và
F. Và cuối cùng, các ô T36 và T37 được thay lần lượt là a6, a7, vì R3
chứa các thuộc tính F, G (Bảng 2.9).
T A B C D E F G
R1 a1 a2 a3 a4 a5 b16 b17
R2 b21 b22 b23 a4 a5 a6 b27
R3 b31 b32 b33 b34 b35 a6 a7
Bảng 2.9: Kết quả của bước thứ 3 trong thuật toán kiểm tra kết nối không mất thông tin
Bước 4: Với ffd đầu tiên và thứ 2 ABC →0.7 D, ABC →0.8 E, R1, R2, R3 không có các ký hiệu giống nhau trong các cột của các thuộc tính
A, B, C, do đó không có thay đổi trên cột D và cột E. Xét ffd thứ 3,
DE →0.7 F, R1 và R2 có các ký hiệu giống nhau trong cột D và E, do
đó cột thuộc tính F của quan hệ R1, b16, sẽ thay đổi thành a6 (bảng 2.10).
T A B C D E F G
R1 a1 a2 a3 a4 a5 a6 b17
R2 b21 b22 b23 a4 a5 a6 b27
R3 b31 b32 b33 b34 b35 a6 a7
Bảng 2.10: Kết quả của bước thứ 4 trong thuật toán kiểm tra kết nối không mất thông tin của ffd đầu tiên của R.
Với ffd cuối cùng F →0.6 G, R1, R2, R3 có các ký hiệu giống nhau ở cột
F, do đó cột thuộc tính G của quan hệ R1 và R2 sẽ được thay bằng a7 (bảng 2.11).
T A B C D E F G
R1 a1 a2 a3 a4 a5 a6 a7
R2 b21 b22 b23 a4 a5 a6 a7
R3 b31 b32 b33 b34 b35 a6 a7
Bảng 2.11: Bảng cho R = (A, B, C, D, E, F, G) khi kết thúc thuật toán kiểm tra kết nối không mất thông tin
Bước 5: Vì có 1 dòng chứa toàn bộ ký hiệu “a”, đó là dòng đầu tiên, vì vậy phân tách có đặc tính có kết nối không mất thông tin.
2.3. Kt lu n chưng 2
Chương này đã trình bày các kết quả nghiên cứu về mô hình cơ sở dữ liệu mờ dựa trên quan hệ tương tự, với các nội dung chính sau:
Định nghĩa về sự phù hợp giữa các bộ dữ liệu dựa trên quan hệ tương tự. Đồng thời, đưa ra một công thức mới tính sự phù hợp giữa các bộ dữ liệu dựa trên quan hệ tương tự và độđo khả năng.
Các khái niệm về khoá mờ, phụ thuộc hàm mờ dựa trên sự phù hợp giữa các bộ dữ liệu. Các định nghĩa về dạng chuẩn mờ 1NF, 2NF, 3NF và BCNF và các thuật toán phân tách cũng được giới thiệu. Luận văn cũng thảo luận và trình bày hai thuật toán kiểm tra tính kết nối không mất thông tin và tính bảo toàn phụ thuộc của phép phân tách.
CHƯƠNG 3
NGÔN NGỮ SQL MỜ
Chương này trình bày ngôn ngữ SQL mờ trong mô hình cơ sở dữ liệu truyền thống và mô hình cơ sở dữ liệu mờ.
3.1. S lưc v ngôn ng SQL
Ngôn ngữ SQL cơ bản đã được phát triển bởi Chamberlin và Boyce (1974, 1976). Năm 1986, Viện tiêu chuẩn quốc tế Mỹ (ANSI) và tổ chức tiêu chuẩn quốc tế (ISO) đã công bố chuẩn SQL-86 hay SQL1 (ANSI, 1986). Năm 1989, chuẩn SQL-1989 được công bố và chuẩn SQL2 hay SQL-92 được công bố năm 1992 (ANSI, 1992). Phiên bản mới nhất với nhiều cải tiến của chuẩn SQL là chuẩn SQL 2003.
Trong tất cả chuẩn SQL, các lệnh cơ bản của ngôn ngữ này thường được chia thành hai nhóm chính.
+ Ngôn ngữ thao tác dữ liệu DML (Data Manipulation Language): Các câu lệnh DML cho phép truy vấn dữ liệu (để tra cứu) và thay đổi dữ liệu lưu trữ trong cơ sở dữ liệu. Ví dụ như các câu lệnh này SELECT, INSERT, UPDATE, DELETE.
+ Ngôn ngữđịnh nghĩa dữ liệu DDL (Data Defination Language): các câu lệnh DDL này cho phép tạo và thay đổi cấu trúc dữ liệu được lưu trữ. Ví dụ như câu lệnh: CREATE (để tạo 1 đối tượng trong cơ sở dữ liệu, như là bảng, view, v.v...), DROP (để loại bỏ đối tượng), ALTER (để thay đổi đối tượng ) và các câu lệnh liên quan đến bảo
mật (security), chỉ số (indexes) và các điều khiển lưu trữ vật lý của dữ liệu.
3.2. Ngôn ng SQL m
Ngày nay, ngôn ngữ SQL được xem là một trong những yếu tố chính đem lại sự thành công cho cơ sở dữ liệu quan hệ trong thương mại. Ngôn ngữ SQL đã trở thành ngôn ngữ truy vấn chuẩn cho hầu hết các hệ thống cơ sở dữ liệu thương mại hiện nay. Tuy nhiên, ngôn ngữ SQL này chỉ cho phép thiết lập các câu truy vấn với các tiêu chuẩn chọn dữ liệu cứng nhắc và dữ liệu trả về phải chính xác với các tiêu chuẩn đó. Nó không cho phép thiết lập các câu truy vấn với các tiêu chuẩn chọn dữ liệu là mơ hồ, hay còn gọi là tiêu chuẩn mơ hồ hay tiêu chuẩn mờ và dữ liệu trả về là “gần” với tiêu chuẩn đó. Do đó, một cách tự nhiên, chúng ta cần phải mở rộng ngôn ngữ SQL chuẩn sao cho có thể thiết lập được các câu truy vấn mềm dẻo với các tiêu chuẩn mờ. Ngôn
ngữ SQL mờ (fuzzy SQL hay FSQL) là một mở rộng của ngôn ngữ SQL và cho phép thiết lập các câu truy vấn mềm dẻo với các tiêu chuẩn mờ.
Phần tiếp theo trình bày một ngôn ngữ truy vấn dữ liệu (SQL) được mở rộng từ ngôn ngữ SQL truyền thống trong hai mô hình cơ sở dữ liệu: Mô hình cơ sở dữ liệu truyền thống với dữ liệu rõ và mô hình cơ sở dữ liệu mờ với dữ liệu mờ.
3.3. FSQL trên mô hình c s d liu rõ
3.3.1. Cơ sở
Một cách dễ nhất để kết hợp các yếu tố mờ vào mô hình cơ sở dữ liệu là sử dụng cơ sở dữ liệu truyền thống với dữ liệu rõ và trình bày cách làm thế nào cho phép câu truy vấn mờđược thực hiện trên cơ sở dữ liệu này. Mô hình cơ sở dữ liệu truyền thống chỉ lưu trữ và xử lý được dữ liệu rõ, không lưu trữ
và xử lý được các dữ liệu mờ. Do đó các yếu tố mờ chỉ có thể kết hợp vào trong câu truy vấn.
Để kết hợp các yếu tố mờ vào trong ngôn ngữ SQL truyền thống, các khái niệm về tập mờ, biến ngôn ngữ (Linguistic variable), các nhãn ngôn ngữ (linguistic label, hay còn gọi là Linguistic term) được sử dụng. Mỗi một nhãn ngôn ngữ được định nghĩa và biểu diễn bởi một tập mờ được đặc trưng bởi một hàm thuộc. Có nhiều kiểu hàm thuộc khác nhau [xem chi tiết trong phần 1.1], nhưng trong luận văn này, hàm thuộc dạng hình thang và dạng tam giác được sử dụng để biểu diễn các nhãn ngôn ngữ. Hàm thuộc dạng hình thang có thể biểu diễn được nhiều kiểu dữ liệu khác nhau. Hàm thuộc dạng hình tam giác là một dạng đặc biệt của hình thang, ở đó điểm thứ 2 và thứ 3 là trùng nhau.
Phần này giới thiệu một ngôn ngữ SQL mới cho phép thực hiện được các truy vấn mềm dẻo với thông tin mờ hồ, không chính xác, được mở rộng từ ngôn ngữ SQL chuẩn, gọi là SQL mở rộng (SQLEx). Luận văn không giới thiệu chi tiết ngôn ngữ SQL chuẩn mà chỉ giới thiệu các phần mới được thêm vào trong ngôn ngữ SQL chuẩn để tạo thành ngôn ngữ SQL mở rộng (SQLEx), cho phép thiết lập các câu truy vấn mềm dẻo với tiêu chuẩn mơ hồ và được thực hiện trên cơ sở dữ liệu quan hệ truyền thống với dữ liệu rõ.
3.3.1.1.Biến ngôn ngữ (Linguistic variable)
Biến ngôn ngữ là các thuộc tính của quan hệ mà trên đó các yếu tố mờ hay tân từ mờđược định nghĩa trong miền trị giới hạn của thuộc tính.
3.3.1.2.Nhãn ngôn ngữ (Linguistic Label)
Nhãn ngôn ngữ (Linguistic Label) là tân từ mờ được định nghĩa trên miền trị của biến ngôn ngữ. Một biến ngôn ngữ có thể bao gồm nhiều nhãn
ngôn ngữ. Mỗi nhãn ngôn ngữ được định nghĩa và biểu diễn bởi một tập mờ dạng hình thang hoặc dạng tam giác.
Ví dụ 3.1. Cho quan hệ KHACH_HANG (ID, TEN, TUOI, THU_NHAP).
Trong đó, thuộc tính THU_NHAP được gọi là biến ngôn ngữ với miền trị giới hạn trong đoạn [0, 500], và có các nhãn ngôn ngữđược định nghĩa trên miền trị của thuộc tính THU_NHAP là: thấp, trung bình, khoảng 300, cao. Các
nhãn ngôn ngữ này được biểu diễn bởi các tập mờ dạng hình thang và tam giác (Hình 3.1) như sau:
Thấp= (0,0,150,250); Trung bình= (150,200,250,300);
Khoảng 300= (250, 300, 300, 350); Cao= (300, 400, 500, 500)
Hình 3.1: Các nhãn ngôn ngữđối với thuộc tính THU_NHAP
3.3.1.3.Các toán tử so sánh
Các toán tử so sánh truyền thống vẫn được sử dụng. Tuy nhiên để phân biệt các nhãn ngôn ngữ (tân từ mờ) với dữ liệu rõ thì trước mỗi nhãn ngôn ngữ có tiếp đầu ngữ $.
Ví dụ 3.2. Với quan hệ KHACH_HANG ở ví dụ 3.1 trên, xét câu truy vấn “Tìm tên và tuổi của tất cả các khách hàng có thu nhập trung bình”.
SELECT Ten , Tuoi FROM khach_hang
WHERE thu_nhap = $trung bình
Phần sau sẽ khảo sát các phép so sánh truyền thống được sử dụng như thế nào khi so sánh dữ liệu rõ với các nhãn ngôn ngữ.
Xét điều kiện mờ có dạng XθY, trong đó X là thuộc tính với dữ liệu rõ. Y là nhãn ngôn ngữ (tân từ mờ) được định nghĩa trên miền trị của thuộc tính X. Y được biểu diễn bởi một tập mờ có giá trị nằm trong đoạn [u, v] với hàm thuộc µY, µY(x)>0 với x là giá trị của thuộc tính X và x∈[u, v]. Nếu Y được biểu diễn bởi tập mờ hình thang [a, b, c, d] thì u=a và v=d. Nếu Y là tập mờ hình tam giác [a, m, b] thì u=a và v=b. θ là toán tử so sánh truyền thống =, >, <, ≥,≤. Độ thoả mãn điều kiện mờ XθY, ký hiệu là d(XθY) được định nghĩa như sau:
1. Nếu θ là so sánh bằng (=) thì độ thoả mãn điều kiện X=Y được đánh giá như sau:
d(X=Y) =µY(x).
Ví dụ 3.3. Xét câu truy vấn ở ví dụ 3.2, giả sử giá trị tại thuộc tính
THU_NHAP là 250, thì độ thoả mãn điều kiện truy vấn được tính như sau:
d(thu_nhap = $trung bình) = µ”trung bình”(250)=1
2. Nếu θ là so sánh lớn hơn (>) thì độ thoả mãn điều kiện X > Y được đánh giá như sau: > ≤ = > v x nÕu v x nÕu 1 0 Y) d(X 3. Nếu θ là so sánh lớn hơn hoặc bằng (≥)
Điều kiện so sánh X≥Y tương đương với điều kiện (X>Y or X=Y). Việc đánh giá độ thoả mãn điều kiện này dựa trên việc đánh giá độ thoả mãn các điều kiện cơ bản. Độ thoả mãn của điều kiện X≥Y được xác định như sau:
d(X≥Y) = max (d(X = Y), d(X >Y)).
4. Nếu θ là so sánh nhỏ hơn (<) thì độ thoả mãn điều kiện X < Y được đánh giá như sau: ≥ < = < u x nÕu u x nÕu 0 1 ) Y X ( d 5. Nếu θ là so sánh nhỏ hơn hoặc bằng (≤) Điều kiện so sánh X ≤ Y sẽđược tách thành 2 điều kiện cơ bản (X<Y or X=Y). Việc đánh giá độ thoả mãn điều kiện dựa trên việc đánh giá độ thoả mãn các điều kiện cơ bản. Độ thoả mãn của điều kiện X≤ Y được xác định như sau:.
d(X≤Y) = max (d(X=Y), d(X<Y)).
6. Nếu θ là phép so sánh khác (<>) thì độ thoả mãn điều kiện X<>Y được đánh giá như sau: < > ≤ ≤ = <> u x và v x nÕu v x u nÕu 1 0 ) Y