İlişkisel cebir / matematik ispatları SQL'i test etmek / doğrulamak için kullanılabilir mi?


9

İlişkisel cebir ve / veya ilişkisel hesabı, SQL deyimlerinin, işlevlerinin ve saklı yordamlarının doğruluğunu sınamak / doğrulamak için bir kanıt şeklinde kullanmak mümkün veya hatta mümkün müdür?

Bana en azından mümkün gibi görünüyor, ama kanıt ve kod arasında 1: 1 eşleme yapar eksik bir ayrıntı varsa bilmiyorum.

Herhangi biriniz böyle bir yöntemi denediniz mi? İşe yaradı mı? Deneyimleriniz nasıldı?


2
Lütfen benden sonra tekrar edin: SQL ilişkisel değildir.
Deer Hunter

Yanıtlar:


4

İlişkisel cebir operatörleri ve SQL ifadeleri arasında bilinen bazı eşleme kuralları vardır. Örneğin, Sigma operatörü bir SELECT deyimiyle eşleşir, birleştirme işleçleri için bire bir eşleme, sütunların bir alt kümesini seçmek için Delta eşlemeleri vb. Vardır.

SQL ifadelerinin doğruluğunu doğrulamak için ilişkisel cebir kullanmak mümkün müdür?

Evet mümkün. Tabii ki, tüm ilişkiler, yabancı anahtarlar, vb. İle veritabanının açık bir şemasına sahip olmanız gerekir. Bazı durumlarda, ilişkisel cebir ifadelerini SQL ifadelerinden daha iyi işlemek daha kolaydır (ifadeleri değiştirmek ve basitleştirmek için kanıtlanmış dönüşüm kuralları vardır ) .

Ancak diğer taraftan, ilişkisel cebir kullanarak ifadeleri doğrulamanın SQL ifadelerini test etmekten çok daha kolay olduğunu düşünmüyorum, özellikle de sorguları yürütebileceğiniz ve sonuçları görebileceğiniz bir veritabanı hazır olduğunda.


1
Sadece şunu söylemek istedim: İlişkisel operatörler "SELECT DISTINCT" ile eşleşir, çünkü ilişkisel cebir tupl setleri kullanır ve bu nedenle kopyaları işleyemez. Sigma'nın kendisi WHERE yan tümcesine, pi SELECT yantümcesine karşılık gelir.
contradictioned

Birleştirme işleçleri 1: 1 değildir, SQL sürümleri boş değerlere özel davranır ve benzer şekilde tahminler Boolean değildir.
philipxy
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.