Tôi nhận thức được ít nhất hai cách tiếp cận lý thuyết khác nhau để hiểu cơ sở dữ liệu quan hệ: đại số / phép tính quan hệ của Codd và lý thuyết thể loại.
Có bất kỳ mối quan hệ giữa hai phương pháp này? Có phải chúng trong một số ý nghĩa tương đương? Có bất kỳ công việc giới thiệu nào giải thích làm thế nào cả hai khung này giải thích cơ sở dữ liệu quan hệ?
Bối cảnh: Cách đây một thời gian tôi đã đọc Lý thuyết chuyên mục dành cho các nhà khoa học của David Spivak , người đã dành khá nhiều thời gian để thảo luận về cách áp dụng lý thuyết thể loại để hiểu lý thuyết về cơ sở dữ liệu quan hệ. Tuy nhiên, có ít kinh nghiệm cá nhân về cơ sở dữ liệu quan hệ là gì hoặc tại sao chúng hữu ích, tại thời điểm đó tôi không hoàn toàn đánh giá cao độ sâu của cái nhìn sâu sắc được tìm thấy trong cuốn sách.
Tuy nhiên, gần đây tôi đã tìm hiểu về các truy vấn SQL và hai gói R để thao tác dữ liệu: dplyr và data.table . SQL rõ ràng có thể diễn đạt nhiều ý tưởng về đại số / mô hình / mô hình quan hệ của Codd, nhưng không phải tất cả . Hơn nữa, tác giả của dplyr, Hadley Wickham, đã tuyên bố rõ ràng rằng triết lý của ông dựa trên gói dựa trên công trình của Codd về đại số quan hệ và các lệnh cơ bản của data.table ánh xạ khá tốt với các lệnh trong SQL và dplyr.
Tôi cũng biết rằng lý thuyết thể loại ảnh hưởng đến rất nhiều lập trình viên sử dụng các ngôn ngữ lập trình chức năng như Haskell. Tuy nhiên, tôi không thực sự biết rằng có bất kỳ việc sử dụng lập trình chức năng nào cho thao tác dữ liệu hoặc khoa học dữ liệu, ngoài gói purrr của Hadley Wickham cho R, thực tế là Apache Spark được viết bằng Scala và các công nghệ liên quan đến MapReduce .
Tất cả những điều này gợi ý cho tôi rằng cần có một mối quan hệ nào đó giữa lý thuyết thể loại và đại số / phép tính quan hệ của Codd, nhưng tôi chưa bao giờ nghe thấy ai đưa ra kết nối rõ ràng như vậy hoặc giải thích cách nó làm cơ sở cho các quyết định thiết kế trong thao tác dữ liệu phổ biến và các công nghệ cơ sở dữ liệu quan hệ. Vì vậy, tôi cũng nghi ngờ tôi có thể sai hoàn toàn.
EDIT: Rõ ràng David Spivak đã làm việc trên một " ngôn ngữ truy vấn functorial (FQL) ". Điều này nghe có vẻ như là một ứng dụng của một kết nối lý thuyết như vậy, miễn là nó tồn tại.
Lưu ý: Tôi không chắc chắn liệu "cấu trúc quan hệ" có phải là thẻ thích hợp để thảo luận về cơ sở dữ liệu quan hệ hoặc đại số / phép tính quan hệ hay không. Bài viết Wikipedia này cho thấy chúng có thể được kết nối, nhưng cuối cùng tôi không biết cụm từ "cấu trúc quan hệ" nghĩa là gì. Xin vui lòng gắn thẻ lại.