Bisakah bukti aljabar / kalkulus relasional digunakan untuk menguji / memverifikasi SQL?


9

Apakah layak atau bahkan mungkin untuk menggunakan aljabar relasional dan / atau kalkulus relasional dalam bentuk bukti untuk menguji / memverifikasi kebenaran pernyataan SQL, fungsi, dan prosedur tersimpan?

Sepertinya saya paling tidak harus melakukannya, tapi saya tidak tahu apakah ada detail yang saya lewatkan sehingga membuat pemetaan 1: 1 antara bukti dan kode salah.

Adakah di antara kalian yang mencoba metode seperti ini? Apa itu bekerja? Seperti apa pengalaman Anda?


2
Silakan ulangi setelah saya: SQL tidak berhubungan.
Pemburu Rusa

Jawaban:


4

Ada beberapa aturan pemetaan yang diketahui antara operator aljabar relasional dan pernyataan SQL. Misalnya, operator Sigma memetakan pernyataan SELECT, ada pemetaan satu-ke-satu untuk operator yang bergabung, Delta memetakan untuk memilih subset kolom, dll.

Apakah mungkin menggunakan aljabar relasional untuk memverifikasi kebenaran pernyataan SQL?

Ya itu mungkin. Tentu saja Anda harus memiliki skema database yang jelas dengan semua hubungan, kunci asing, dll. Dalam beberapa kasus bahkan lebih mudah untuk memanipulasi pernyataan aljabar relasional daripada pernyataan SQL (ada aturan transformasi yang terbukti untuk memodifikasi dan menyederhanakan pernyataan) .

Tetapi di sisi lain, saya tidak berpikir bahwa memverifikasi pernyataan menggunakan aljabar relasional jauh lebih mudah daripada menguji pernyataan SQL, terutama ketika Anda memiliki database yang siap di mana Anda dapat menjalankan kueri dan melihat hasilnya.


1
Hanya ingin mengatakan: Operator relasional memetakan ke "SELECT DISTINCT" karena aljabar relasional menggunakan set tupel dan karenanya tidak dapat menangani duplikat. Sigma itu sendiri sesuai dengan klausa WHERE, pi ke SELECT dan seterusnya.
contradictioned

Operator gabungan bukan 1: 1, versi SQL memperlakukan nulls secara khusus, dan predikat yang sama bukan Boolean.
philipxy
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.