İlişkisel cebir / matematik ile kategori teorisi arasında bir ilişki var mı?


17

İlişkisel veritabanlarını anlamak için en az iki farklı teorik yaklaşımın farkındayım: Codd'un ilişkisel cebiri / hesabı ve kategori teorisi.

Bu iki yaklaşım arasında herhangi bir ilişki var mı? Bir anlamda eşdeğer midirler? Bu çerçevelerin her ikisinin de ilişkisel veritabanlarını nasıl açıkladığını açıklayan herhangi bir giriş çalışması var mı?

Tarihsel Bilgiler: Bir süre önce , ilişkisel veri tabanları teorisini anlamak için kategori teorisinin nasıl uygulanabileceğini tartışmak için epey zaman harcayan David Spivak'ın Bilim Adamları için Kategori Teorisi'ni okudum . Bununla birlikte, ilişkisel veritabanlarının ne olduğu veya neden yararlı oldukları hakkında çok az kişisel deneyime sahip olmak, o sırada kitapta bulunan içgörü derinliklerini tam olarak takdir etmedim.

Ancak, son zamanlarda veri işleme için SQL sorguları ve iki R paketleri hakkında öğreniyorum : dplyr ve data.table . SQL, görünüşe göre Codd'un ilişkisel cebiri / hesabı / modeli fikirlerinin çoğunu ifade edebilir , ancak hepsini değil . Üstelik dplyr yazarı Hadley Wickham, etti açıkça belirtilen paket altında yatan onun felsefesi Codd'un ilişkisel cebir çalışma ve temel komutları dayandığını data.table SQL ve dplyr haritanın oldukça kuyuya komutları.

Kategori teorisinin Haskell gibi fonksiyonel programlama dillerini kullanan birçok programcıyı etkilediğini de biliyorum. Ancak, Hadley Wickham'ın R için purrr paketinin yanı sıra Apache Spark'ın Scala'da yazılmış olması ve MapReduce ile ilgili teknolojilerin yanı sıra veri manipülasyonu veya veri bilimi için fonksiyonel programlamanın herhangi bir kullanımının gerçekten farkında değilim .

Tüm bu tür bana, kategori teorisi ile Codd'un ilişkisel cebiri / hesabı arasında bir tür ilişki olması gerektiğini öne sürüyor , ancak böyle bir bağlantıyı açıkça belirten veya popüler veri manipülasyonundaki tasarım kararlarının altında yatan kimseyi açıklamamıştım. ve ilişkisel veritabanı teknolojileri. Bu yüzden tamamen yanlış olabileceğimden şüpheleniyorum.

EDIT: Görünüşe göre David Spivak bir " işlevsel sorgu dili (FQL) " üzerinde çalıştı . Bu, var olduğu sürece böyle bir teorik bağlantının bir uygulaması gibi görünebilir.

Not: İlişkisel veritabanlarının veya ilişkisel cebir / hesabın tartışılması için "ilişkisel yapılar" ın uygun etiket olup olmadığından emin değilim. Bu Wikipedia makalesi , birbirine bağlı olabileceklerini öne sürüyor, ancak sonuçta "ilişkisel yapı" ifadesinin ne anlama geldiğini bilmiyorum. Lütfen yeniden etiketlemekten çekinmeyin.


2
Tannen ve Buneman'ın çalışmalarını gördünüz mü, örneğin Sorgu Dili Tasarımına Yapısal Bir Yaklaşım ?
reinierpost

@reinierpost Yapmadım ama bakacağım.
Chill2Macht

Yanıtlar:


12

Dilleri sorgulamak için kategorik yaklaşımlar biraz niş bir ilgi alanıdır, ancak bence çok ilginç bir niş!

Bu alandaki kilit figürlerden ikisi Peter Buneman ve Torsten Grust . Açıkçası, tüm işi yapmadılar, ancak kağıtlarıyla başlar ve alıntı grafiğini izlerseniz, alanın oldukça iyi bir şekilde kapsanmasını sağlarsınız.

Çalıştıkları merkezi gözlem, bir ilişkinin bir grup tuple olarak görülebildiği için, güç kümesi işlevi, o demet üzerindeki ilişkilerin türüne bir demet tipi alarak yorumlanabilir. Daha sonra, güç kümesinin bir monad oluşturması, Philip Wadler'in monad anlama sözdiziminden esinlenen fikirleri , zengin bir denklem teorisine sahip sorgular için kategorik olarak esinlenen bir hesap vermek için kullanabileceğiniz anlamına gelir .

Gerçekten de Buneman ve arkadaşlarının sorgu sistemi Kleisli adını, monadlara bazen "Kleisli triples" deniyor.

Grust'un Doktora tezi, Sorguları Anlama , bu fikirleri, toplama operatörlerini ( sumve gibi count) modellemek için monad morfizmlerinin kullanımı da dahil olmak üzere ayrıntılı olarak ele almaktadır . Grust ve grubu ayrıca, veritabanlarının programlama dillerine nasıl entegre edileceğini inceleyen Ferry adlı bir sistem kurdu.

():P(X)xP(Y)P(XxY)μ:P(P(X))P(X)

Muhtemelen sorgu dillerine kategorik yaklaşımlar üzerine çalışmanın birincil akışı budur.

Yeni bir fikir (ne yazık ki hak ettiğimi düşündüğüm kadar fazla çekiş elde etmedi) David Spivak'ın veritabanlarını modellemek için basit kümeler kullanma çalışması - bkz. Basit Veritabanları . Temel yenilik, basit yapının tablolar (örn. Yabancı anahtarlar sistemi) arasındaki ilişkiler de dahil olmak üzere tüm veritabanı şemasının açıkça modellenmesine izin vermesidir ve bu şema güncelleme işlemlerine anlambilim kazandırır.

Standart sorgu dillerinden bir başka sapma, ilişkisel cebir artı bir sabit nokta operatörü olarak anlaşılabilen Datalog gibi kısıtlı mantık programlama dilleridir. Sabit noktalar, geçişli kapatma sorguları gibi şeyleri ifade etmeyi sağlar ve bu nedenle Datalog tabanlı Datomic özellik sorgu dilleri gibi yeni veritabanları . Doktora öğrencim Michael Arntzenius ve ben Datalog'un semantiğini inceledik ve Datafun adını verdiğimiz işlevsel bir analog bulduk.

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.