3.3.2.1.Câu lệnh SELECT
Câu lệnh SELECT trong ngôn ngữ SQL truyền thống là rất linh hoạt, phức tạp và mạnh. Mặc dù rất dễ sử dụng trong những câu truy vấn đơn giản, nhưng nó không dễ sử dụng trong những câu truy vấn phức tạp.
Ngôn ngữ SQL mở rộng (SQLEx) được xây dựng dựa trên ngôn ngữ SQL chuẩn. Điều này có nghĩa là tất cả các câu lệnh hợp lệ trong SQL cũng hợp lệ trong SQL mở rộng. Về cơ bản, cú pháp của câu lệnh SELECT mới trong ngôn ngữ SQLEx là tương tự ngôn ngữ SQL chuẩn. Chỉ có một mở rộng duy nhất là các điều kiện rõ trong phần mệnh đề WHERE được thay bằng các điều kiện mờ.
Câu lệnh SELECT mới có dạng sau, trong đó chỉ có 2 mệnh đềđầu tiên là bắt buộc:
SELECT (danh sách thuộc tính) FROM (danh sách quan hệ) [WHERE (các điều kiện mờ)] Với mỗi điều kiện mờ cơ bản có thể sử dụng một ngưỡng thực hiện THOLD với cú pháp như sau: <điều kiện mờ> THOLD τ Trong mỗi điều kiện mờ có thể sử dụng các phép so sánh truyền thống như =, >, <, ≥,≤, <>, để so sánh dữ liệu rõ với các nhãn ngôn ngữ [Chi tiết trong phần 3.3.1.3].
Ví dụ 3.4. Với quan hệ KHACH_HANG ở ví dụ 3.1, 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 cao với ngưỡng là 0.8”.
SELECT Ten , Tuoi FROM khach_hang
WHERE thu_nhap = $cao THOLD 0.8
3.3.2.2.Câu lệnh INSERT
Cơ sở dữ liệu được sử dụng là cơ sở dữ liệu truyền thống nghĩa là không dữ liệu mờ nào được lưu trữ trong cơ sở dữ liệu, câu lệnh INSERT là không thay đổi so với ngôn ngữ SQL chuẩn và có cú pháp như sau:
INSERT INTO <TABLE> VALUE (<GIA_TRI 1>,...)
Ví dụ 3.5. Xét quan hệ KHACH_HANG ở ví dụ 3.1, Thêm mới một khách hàng có tên là “Nguyễn Văn Quang”, với tuổi là 20, có thu nhập là 300. Câu lệnh INSERT có dạng như sau:
INSERT INTO KHACH_HANG (Ten, Tuoi, Thu nhap) VALUES(“Nguyễn Văn Quang”, 20, 300)
3.3.2.3.Câu lệnh UPDATE
Ở mệnh đề WHERE của câu lệnh này, các điều kiện mờ có thểđược sử dụng tương tự như trong mệnh đề WHERE của câu lệnh SELECT. Do đó, câu lệnh UPDATE mới có dạng như sau:
UPDATE <TABLE>
SET VALUES <THUOC_TINH 1> = <GIA_TRI 1>, [<THUOC_TINH 2> = <GIA_TRI 2>...]
[WHERE <DIEU_KIEN_MO 1> [<CON> <DIEU_KIEN_MO 2> ..]] Trong đó, <CON> là điều kiện kết nối AND và OR.
Ví dụ 3.6. Xét quan hệ KHACH_HANG ở ví dụ 3.1, Cập nhật thông tin tuổi là 25 cho những khách hàng có thu nhập thấp. Câu lệnh UPDATE có dạng như sau:
UPDATE Khach_hang SET tuoi=25
WHERE thu_nhap=$thấp
3.3.2.4.Câu lệnh DELETE
Ở mệnh đề WHERE của câu lệnh này, các điều kiện mờ có thể sử dụng tương tự như trong mệnh đề WHERE của câu lệnh SELECT FSQL.
DELETE FROM <TABLE>
[WHERE <DIEU_KIEN_MO 1> [<CON> <DIEU_KIEN_MO 2> ..]] Trong đó <CON> là điều kiện kết nối AND và OR.
Ví dụ 3.7. Xét quan hệ KHACH_HANG ở ví dụ 3.1, Giả sử cần xoá tất cả khách hàng có thu nhập cao. Câu lệnh DELETE có dạng như sau:
DELETE FROM khach_hang WHERE thu_nhap=$cao
3.4. FSQL trên mô hình c s d liu m
Trong phần trước, luận văn đã trình bày các câu truy vấn mờ được sử dụng như thế nào trong cơ sở dữ liệu quan hệ truyền thống với dữ liệu rõ. Phần này, luận văn giới thiệu một ngôn ngữ SQL mờ (FSQL) trên mô hình cơ sở dữ liệu mờ [16]. FSQL là một mở rộng của ngôn ngữ SQL truyền thống, cho phép thực hiện các câu truy vấn mềm dẻo (mờ) trên cơ sở dữ liệu mờ. Tất cả các câu lệnh hợp lệ trong SQL cũng hợp lệ trong FSQL. Tuy nhiên để thực hiện được các câu truy vấn mềm dẻo, các thuộc tính mờ, các hằng số mờ, các toán tử so sánh mờ, v.v... trong mô hình cơ sở dữ liệu mờ được trình bày.
3.4.1. Dữ liệu mờ và các thuộc tính mờ
Dữ liệu với thông tin mơ hồ, không chính xác được phân loại thành 2 nhóm dữ liệu: dữ liệu với miền trị cơ sở có thứ tự và dữ liệu với miền trị không có thứ tự. Trên miền trị có thứ tự, chúng ta có thể biểu diễn bất kỳ một kiểu phân bố khả năng hoặc tập mờ nào, chẳng hạn như: nhãn ngôn ngữ (liên quan đến một dạng phân bố khả năng), các giá trị xấp xỉ (phân bố tam giác). Trong miền trị không có thứ tự, có các nhãn “vô hướng” và một quan hệ tương tự giữa các cặp nhãn được định nghĩa
Dựa trên việc phân loại dữ liệu đó, luận văn sử dụng 3 kiểu thuộc tính mờ [16] như sau:
Kiểu 1: Đây là các thuộc tính với dữ liệu chính xác và rõ. Các nhãn ngôn ngữ (linguistic label) có thểđược định nghĩa trên miền trị của thuộc tính này. Các câu truy vấn mờ có thể được thực hiện trên kiểu thuộc tính. Ở kiểu này, chúng ta không thể lưu dữ liệu với thông tin không chính xác, mơ hồ và do vậy chúng không mờ mặc dù chúng cho phép các câu truy vấn mờ được thực hiện.
Kiểu 2: Kiểu thuộc tính này cho phép lưu trữ cả dữ liệu rõ và dữ liệu mờ ở dạng phân bố khả năng trên miền trị cơ sở có thứ tự. Nó là một mở rộng của thuộc tính kiểu 1, cho phép lưu dữ liệu với thông tin mơ hồ, không chính xác. Chẳng hạn như là thông tin về tuổi của một người có các nhãn ngôn ngữ: “Cao”, “Trung niên”, “Trẻ”, v.v...
Kiểu 3: Kiểu thuộc tính cho phép lưu trữ các dữ liệu được định nghĩa trên miền trị cơ sở không có thứ tự. Ở các thuộc tính đó các nhãn được định nghĩa (ví dụ: “vàng”, “hoe”, “nâu” , v.v...) và một quan hệ tương tự giữa các cặp nhãn cũng được định nghĩa. Độ tương tự nằm trong khoảng đóng [0, 1]. Trong đó mỗi một nhãn có một độ đo khả năng thể hiện khả năng chắc chắn xảy ra của dữ liệu. Ví dụ như giá trị {0.8|đen, 0.4|nâu} có nghĩa là màu tóc của một người nào đó giống màu đen hơn màu nâu.
Ví dụ 3.8. Xét quan hệ NHAN_VIEN bao gồm các thuộc tính:
MA_NHAN_VIEN (Mã nhân viên), CHIEU_CAO (Chiều cao), TUOI (Tuổi), MAU_TOC (Màu tóc). Các thuộc tính này được mô tả như sau:
MA_NHAN_VIEN: đây là kiểu thuộc tính truyền thống, kiểu số nguyên và là khoá chính của quan hệ này.
CHIEU_CAO: đây là thuộc tính mờ kiểu 1. Miền trị của thuộc tính này nằm trong đoạn [0, 250]. Đây là thuộc tính truyền thống lưu dữ liệu với thông tin chính xác và rõ. Nhưng chúng ta có thể định nghĩa các nhãn ngôn ngữ (như là “Thấp”, “Trung bình”, “Cao”) và sử dụng chúng trong quá trình truy vấn dữ liệu. Nếu không có dữ liệu về chiều cao của một nhân viên thì giá trị NULL được lưu trữ. Điều này cũng tương tự như trong cơ sở dữ liệu truyền thống.
TUOI: Đây là thuộc tính mờ kiểu 2, miền trị nằm trong đoạn [0, 150] (miền trị có thứ tự), có các nhãn ngôn ngữ như là “Trẻ”, “Trung niên”, “Già”. Các nhãn ngôn ngữ này được biểu diễn và định nghĩa như là các phân bố khả năng (hình 3.2). Chú ý rằng, nhãn ngôn ngữ “Trẻ” được định nghĩa bởi một hàm thuộc hình thang với bộ bốn (0/1, 1/20, 1/25, 0/30). Tuổi 26 thuộc về nhãn ngôn ngữ “Trẻ” (hoặc thuộc tập người trẻ) với độ thuộc là 0.8.
Hình 3.2: Phân bố khả năng đối với các nhãn của thuộc tính Tuổi
MAU_TOC: là thuộc tính mờ kiểu 3. Miền trị cơ sở tương đương với tập dữ liệu {“Vàng”, “Đen”, “Hoe”}. Mỗi nhãn ngôn ngữ phải có một độ tương tự với các nhãn ngôn ngữ khác. Độ tương tự nằm trong đoạn [0, 1]. Độ tương tự giữa các cặp nhãn ngôn ngữ của thuộc tính MAU_TOC được trình bày trong bảng 3.1 sau:
Vàng Đen Hoe
Vàng 1 0.1 0.8
Đen 0.1 1 0.3
Hoe 0.8 0.3 1
Bảng 3.1: Quan hệ tương tự giữa các nhãn đối với thuộc tính: MAU_TOC
3.4.2. Ngôn ngữ thao tác dữ liệu (DML) của SQL mờ (FSQL)
Phần này trình bày về các câu lệnh DML trong ngôn ngữ FSQL dựa trên ngôn ngữ SQL truyền thống. Tuy nhiên, cũng tương tự như trong ngôn ngữ SQL mở rộng (SQLEx) được giới thiệu ở phần trên, phần này chỉ trình bày các phần mới được thêm vào ngôn ngữ SQL chuẩn để tạo thành ngôn ngữ FSQL trên cơ sở dữ liệu mờ.
3.4.2.1.Câu lệnh SELECT trong FSQL
Tương tự như trong ngôn ngữ SQL chuẩn, câu lệnh SELECT của FSQL có cú pháp như sau:
SELECT <danh sách thuộc tính> FROM <danh sách các bảng dữ liệu> [WHERE <các điều kiện mờ>]
Ngôn ngữ FSQL là một sự mở rộng đích thực của SQL. Điều này có nghĩa là tất cả các câu lệnh hợp lệ trong SQL cũng hợp lệ trong FSQL. Hơn nữa, FSQL mở rộng và kết hợp các yếu tố mới vào ngôn ngữ SQL chuẩn để cho phép xử lý dữ liệu mờ.
Dưới đây trình bày các phần mới được mở rộng, thêm vào câu lệnh SELECT truyền thống để tạo thành câu lệnh SELECT mờ trong ngôn ngữ FSQL.
Các nhãn ngôn ngữ có thể được định nghĩa trên miền trị của mỗi thuộc tính. Các nhãn ngôn ngữđó sẽ được đặt trước bởi ký tự $ để có thể phân biệt chúng với dữ liệu khác. Có 2 kiểu nhãn ngôn ngữ được sử dụng trong các kiểu thuộc tính mờ khác nhau:
Các nhãn ngôn ngữđược định nghĩa trên các thuộc tính với miền trị cơ sở có thứ tự (ordered underlined domain). Mọi nhãn của kiểu này được biểu diễn bởi một phân bố khả năng (hình thang hoặc tam giác). Chẳng hạn như ví dụ 3.8, thuộc tính Tuoi có các nhãn ngôn
ngữ trẻ, trung niên, già [hình 3.2]. Các nhãn ngôn ngữ này được sử dụng cho các kiểu thuộc tính mờ 1 và 2. [chi tiết ở phần 3.4.1].
Các nhãn ngôn ngữđược định nghĩa trên các thuộc tính với miền trị cơ sở không có thứ tự (nonordered domain). Các nhãn ngôn ngữ này được gọi là các nhãn “vô hướng”. Trong đó, một quan hệ tương tự được định nghĩa giữa các cặp nhãn ngôn ngữ trong cùng một miền trị. Độ tương tự giữa các cặp nhãn là một số thực, nằm trong đoạn [0, 1]. Chẳng hạn như trong ví dụ 3.8, thuộc tính Mau_toc có các nhãn
ngôn ngữ Vàng, Đen, Hoe. Nhãn ngôn ngữ này được sử dụng cho kiểu thuộc tính mờ 3.
2. Các toán tử so sánh mờ
Bên cạnh các phép so sánh truyền thống, điển hình (=, > ...), FSQL bao gồm nhiều toán tử so sánh mờ [Bảng 3.2]. Tương tự như trong SQL, các toán tử so sánh mờđược sử dụng để so sánh một thuộc tính với một hằng số hoặc 2 thuộc tính có cùng kiểu dữ liệu.
Bộ so sánh khả năng Bộ so sánh cần thiết Mô tả
FEQ (F=) NFEQ (NF=) Bằng nhau mờ
FGT (F>) NFGT (NF>) Lớn hơn mờ
FLT (F<) NFLT (NF<) Nhỏ hơn mờ
FLEQ (F<=) NFLEQ (NF<=) Nhỏ hơn hoặc bằng mờ FDIF(F<>) NFDIF(NF<>) Khác nhau mờ
Bảng 3.2: Các toán tử so sánh mờ
Trong luận văn này, các toán tử so sánh mờ được định nghĩa dựa trên độđo khả năng và độđo cần thiết [chi tiết trong phần 3.4.3]. Chú ý rằng trong các thuộc tính với miền trị cơ sở không có thứ tự (thuộc tính mờ kiểu 3), chỉ các toán tử FEQ và FDIF được sử dụng vì chúng không có thứ tự.
3. Ngưỡng thực hiện
Với mỗi điều kiện mờ cơ bản, một ngưỡng thực hiệnτ ∈[0,1] có thể được thiết lập (mặc định là 1) với cú pháp như sau:
<Điều kiện mờ> THOLD τ
Khi ngưỡng thực hiện τ được thiết lập nghĩa là chỉ những điều kiện mờ có ngưỡng tối thiểu làτ ∈ [0,1] mới được xem xét. Từ khoá THOLD (threshold) là không bắt buộc và có giá trị mặc định là 1.
Ví dụ 3.9. Với quan hệ NHAN_VIEN nhưở ví dụ 3.8. Xét câu truy vấn “Tìm tất cả những người có tóc vàng với ngưỡng là 0.5”.
SELECT *
FROM Nhan_Vien
WHERE Mau_toc FEQ $Vàng THOLD 0.5
4. Hằng số mờ
Trong FSQL, các hằng số mờ được sử dụng và được trình bày chi tiết trong bảng sau:
Hằng số mờ Mô tả
Hằng số mờ Mô tả
dụng được.
UNDEFINED Thuộc tính không áp dụng được NULL Không biết gì về nó
$[a,b,c,d] Tập mờ hình thang (a<=b<=c<=d) $label Nhãn ngôn ngữ
[n,m] Đoạn giữa n và m
#n +-m Giá trị mờ “xấp xỉ n”: dạng tam giác với đỉnh là n và biên là m.
Bảng 3.3: Các hằng số mờ trong FSQL
5. Hàm CDEG và các toán tử logic
Hàm CDEG (Compatibility Degree) được sử dụng với một thuộc tính ở phần đối số, có dạng: CDEG (Thuộc tính). Do vậy, hàm này tính độ thoả mãn một điều kiện cho một thuộc tính cụ thể trong câu truy vấn.
Nếu các toán tử logic (AND, OR) xuất hiện trong phần điều kiện. Việc tính toán độ tương thích này được thực hiện bởi các phép toán T-chuẩn (sử dụng hàm min) và T-đối chuẩn (sử dụng hàm max), chi tiết được trình bày trong bảng sau:
<Điều kiện> CDEG(<Điều kiện>)
<Điều kiện1>AND<Điều kiện2> min (CDEG(<điều kiện1>),CDEG(<điều kiện2>)) <Điều kiện1>OR <Điều kiện2> max (CDEG(<điều kiện1>),CDEG(<điều kiện2>))
NOT <Điều kiện1> 1- CDEG(<điều kiện1>)
Bảng 3.4: Cách tính hàm CDEQ với các toán tử logic trong FSQL
Hàm CDEG(*) được sử dụng để tính độ thoả mãn điều kiện của mỗi bộ dữ liệu (bao gồm tất cả các thuộc tính).
Hàm CDEG được sử dụng trong danh sách lựa chọn (sau từ khoá SELECT) trong câu lệnh SELECT để cho thấy độ thoả mãn điều kiện của một thuộc tính hoặc mỗi bộ dữ liệu.
Ví dụ 3.10. Với quan hệ NHAN_VIEN. Xét câu truy vấn “Tìm tất cả những người có màu tóc vàng với ngưỡng là 0.5”.
SELECT *, CDEG(Mau_Toc) FROM Nhan_Vien
WHERE Mau_toc FEQ $Vàng THOLD 0.5
6. Điều kiện với IS
Trong FSQL, điều kiện này được sử dụng với các hằng số mờ được định nghĩa như trong bảng 3.3. Điều kiện này có dạng sau:
<Thuộc tính mờ > IS [NOT] (UNKNOWN, UNDEFINED, NULL)
Nếu thuộc tính không mờ và hằng số là NULL thì hằng số này được hiểu tương tự như trong mô hình cơ sở dữ liệu truyền thống (hệ quản trị cơ sở dữ liệu truyền thống).
Ví dụ 3.11. Với quan hệ NHAN_VIEN. Xét câu truy vấn “Tìm tất cả những người mà màu tóc có giá trị UNKNOWN”.
SELECT *
FROM Nhan_Vien
WHERE Mau_toc IS UNKNOWN
3.4.2.2.Các câu lệnh DML khác trong SQL mờ
Cú pháp của các câu lệnh INSERT, UPDATE, DELETE trong SQL mờ là tương tự như trong SQL chuẩn.
• Câu lệnh INSERT
Các nhãn ngôn ngữ, hằng số mờ có thểđược sử dụng như là các giá trị đầu vào trong thao tác thêm mới dữ liệu.
Ví dụ 3.12. Xét quan hệ NHAN_VIEN như ở ví dụ 3.8. Câu lệnh thêm mới một nhân viên có chiều cao trung bình, tuổi trẻ và có màu tóc là {1/Đen, 0.8/Vàng} được mô tả như sau:
INSERT INTO Nhan_Vien(Ma_nhan_vien, Chieu_cao, Tuoi, Mau_toc) VALUES(9999, 160, Trẻ, {1/Đen, 0.8/Vàng})
• Câu lệnh UPDATE
Các giá trị để cập nhật có thể là các nhãn ngôn ngữ và các hằng số mờ hoặc câu truy vấn con mờ. Hơn nữa, trong mệnh đề WHERE của câu lệnh này, các điều kiện mờ có thể được sử dụng tương tự như mệnh đề WHERE của câu lệnh SELECT.
Ví dụ 3.13. Xét quan hệ NHAN_VIEN nhưở ví dụ 3.8. Cập nhật thông tin chiều cao là 165 cho tất cả các nhân viên nhiều tuổi (Già) với ngưỡng là 0.75. Câu lệnh UPDATE được mô tả như sau:
UPDATE Nhan_Vien SET Chieu_Cao = 165
WHERE Tuoi FEQ $Già THOLD 0.75
• Câu lệnh DELETE
Ở mệnh đề WHERE của câu lệnh này, tương tự các điều kiện mờ có thể sử dụng nhưở mệnh đề WHERE của câu lệnh SELECT.
Ví dụ 3.14. Xét quan hệ NHAN_VIEN nhưở ví dụ 3.8. Câu lệnh xoá tất cả nhân viên có tuổi là trẻđược mô tả như sau:
DELETE
FROM Nhan_Vien WHERE Tuoi FEQ $Trẻ
3.4.3. Các toán tử so sánh mờ
3.4.3.1.So sánh mờđối với thuộc tính mờ kiểu 1 và 2
Các bộ so sánh mờ [bảng 3.2] được sử dụng để so sánh giữa các thuộc tính mờ có cùng kiểu hoặc giữa thuộc tính mờ với 1 hằng số (mờ hoặc rõ).
Thuộc tính mờ kiểu 2 có thể lưu trữ các giá trị rõ (như trong kiểu 1) và cả các giá trị mờ. Do đó thuộc tính mờ kiểu 2 bao gồm cả thuộc tính mờ kiểu 1. Trong phần này giới thiệu các toán tử so sánh mờ trong trường hợp chung nhất là khi hai phân bố khả năng hình thang được so sánh.
Cho hai phân bố khả năng A = [αA, βA, γA, δA ] và B= [αB, βB, γB, δB ] [Hình 3.3]. Hàm CDEG được sử dụng để đo độ phù hợp của phép so sánh mờ. Các bộ so sánh khả năng và cần thiết mờ dựa trên độ đo khả năng và độ đo cần thiết (được trình bày trong bảng 3.2) được định nghĩa như sau [16]:
Hình 3.3: So sánh hai phân bố khả năng hình thang A và B
• So sánh bằng nhau mờ: FEQ (F=) và NFEQ (NF=)
Độ phù hợp thu được khi sử dụng toán tử so sánh mờ FEQ (F=) để so sánh hai phân bố khả năng hình thang A và B, ký hiệu bởi CDEG (A FEQ B), được định nghĩa như sau:
[ ( (x), (x))] sup X