- Cỏc phộp toỏn cần phải được sắp xếp để trỏnh thực hiện tớch Descartes hoặc để lại thực hiện sau.
FROM E, G
WHERE E.MANV= G.MANV
AND G.MADA=”J1”
AND THOIGIAN=12 OR THOIGIAN=24
Điều kiện trong dạng chuẩn hội là:
E.MANV=G.MANV
E.MANV=G.MANV ∧∧ G.MADA=”J1” G.MADA=”J1” ∧∧ (THOIGIAN=12 (THOIGIAN=12 ∨∨ THOIGIAN=24) THOIGIAN=24)
Điều kiện trong dạng chuẩn tuyển là:
2. Phõn tớch
Mục đớch: Phỏt hiện ra những thành phần khụng đỳng (sai
kiểu hoặc sai ngữ nghĩa) và loại bỏ chỳng sớm nhất nếu cú thể.
Truy vấn sai kiểu: nếu một thuộc tớnh bất kỳ hoặc tờn quan
hệ của nú khụng được định nghĩa trong lược đồ tổng thể, hoặc phộp toỏn ỏp dụng cho cỏc thuộc tớnh sai kiểu.
Vớ dụ: truy vấn dưới đõy là sai kiểu
SELECT E#
FROM E
WHERE E.TENNV > 200
vỡ hai lý do:
•Thuộc tớnh E# khụng khai bỏo trong lược đồ
•Phộp toỏn “>200” khụng thớch hợp với kiểu chuỗi của thuộc tớnh E.TENNV
Truy vấn sai ngữ nghĩa: nếu cỏc thành phần của nú
khụng tham gia vào việc tạo ra kết quả.
Để xỏc định truy vấn cú sai về ngữ nghĩa hay khụng, ta dựa trờn việc biểu diễn truy vấn như một đồ thị gọi là đồ thị
truy vấn. Đồ thị này được xỏc định bởi cỏc truy vấn liờn quan
đến phộp chọn, chiếu và nối. Nếu đồ thị truy vấn mà khụng khụng
liờn thụng thỡ truy vấn là sai ngữ nghĩa
liờn thụng thỡ truy vấn là sai ngữ nghĩa
Đồ thị truy vấn:
• Cú một nỳt dựng để biểu diễn cho quan hệ kết quả
• Cỏc nỳt khỏc biểu diễn cho cỏc toỏn hạng trong cõu truy vấn (cỏc quan hệ)
• Cạnh nối giữa hai nỳt mà khụng phải là nỳt kết quả thỡ biểu diễn một phộp nối.phộp nối.
• Cạnh cú nỳt đớch là nỳt kết quả thỡ biểu diễn một phộp chiếu. phộp chiếu
• Một nỳt khụng phải là nỳt kết quả cú thể được gỏn nhón bởi
phộp chọn
phộp chọn hoặc phộp tự nối (seft-join: nối của quan hệ với chớnh nú). phộp tự nối
Đồ thị kết nối:
• Là một đồ thị con của đồ thị truy vấn (join graph), trong đú chỉ cú phộp nối.
Vớ dụ: Từ cỏc quan hệ E=E (MANV, TENNV, CHUCVU) và G =
HOSO (MANV, MADA, NHIEMVU, THOIGIAN) và J=DUAN (MADA, TENDA, NGANSACH).
Hóy xỏc định “Tờn và nhiệm vụ cỏc lập trỡnh viờn làm dự ỏn
CSDL cú thời gian lớn hơn 3 năm.”
Truy vấn SQL tương ứng là:
SELECT E.TENNV, G.NHIEMVU
FROM E, G, J
WHERE E.MANV=G.MANV
AND G.MADA.= J.MADA
AND TENDA=”CSDL”