Có thể sử dụng bằng chứng đại số / tính toán quan hệ để kiểm tra / xác minh SQL không?


9

Có khả thi hay thậm chí có thể sử dụng đại số quan hệ và / hoặc phép tính quan hệ dưới dạng bằng chứng để kiểm tra / xác minh tính đúng đắn của các câu lệnh SQL, hàm và các thủ tục được lưu trữ không?

Đối với tôi có vẻ như nó ít nhất có thể, nhưng tôi không biết liệu có một chi tiết nào tôi thiếu khiến ánh xạ 1: 1 giữa bằng chứng và mã không chính xác.

Có ai trong số các bạn đã thử một phương pháp như thế này chưa? Nó có hoạt động không? Kinh nghiệm của bạn như thế nào?


2
Xin nhắc lại sau tôi: SQL không liên quan.
Deer Hunter

Câu trả lời:


4

Có một số quy tắc ánh xạ đã biết giữa các toán tử đại số quan hệ và các câu lệnh SQL. Ví dụ: toán tử Sigma ánh xạ tới câu lệnh CHỌN, có ánh xạ một-một cho các toán tử nối, ánh xạ Delta để chọn một tập hợp con các cột, v.v.

Có thể sử dụng đại số quan hệ để xác minh tính đúng đắn của các câu lệnh SQL không?

Vâng, nó là có thể. Tất nhiên bạn sẽ cần phải có một sơ đồ rõ ràng về cơ sở dữ liệu với tất cả các mối quan hệ, các phím nước ngoài, vv Trong một số trường hợp nó thậm chí còn dễ dàng hơn để thao tác báo cáo đại số quan hệ hơn câu lệnh SQL (có được chứng minh quy tắc chuyển đổi cho việc thay đổi và đơn giản hóa báo cáo) .

Nhưng mặt khác, tôi không nghĩ rằng việc xác minh các câu lệnh bằng cách sử dụng đại số quan hệ dễ dàng hơn nhiều so với việc kiểm tra các câu lệnh SQL, đặc biệt là khi bạn có sẵn một cơ sở dữ liệu để bạn có thể thực hiện các truy vấn và xem kết quả.


1
Chỉ muốn nói: Các toán tử quan hệ ánh xạ tới "CHỌN DISTINCT" vì đại số quan hệ sử dụng các bộ dữ liệu và do đó không thể xử lý các bản sao. Bản thân sigma tương ứng với mệnh đề WHERE, số pi cho CHỌN, v.v.
mâu thuẫn

Các toán tử nối không phải là 1: 1, các phiên bản SQL xử lý null đặc biệt và các biến vị ngữ tương tự không phải là Boolean.
philipxy
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.