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ẻ