Лыцарь пичальнава образа - Building New SQL [entries|archive|friends|userinfo]
silly_sad

[ userinfo | ljr userinfo ]
[ archive | journal archive ]

Building New SQL [Dec. 16th, 2013|09:19 pm]
Previous Entry Add to Memories Tell A Friend Next Entry
Abstract

In the following article we criticize SQL for not following the relational algebra; describe the
problem of the multitude of different relation representations in SQL; analyze in detail the
disadvantages of the notions “TABLE” and “FOREIGN KEY”; and propose a complex solution
which includes brand new query language and relatively small yet very significant alteration of the
data storage concept.
In the proposed language we will try to overcome the following apparent flaws of SQL:
– human language mimicking
-– which leads to inconsistent, completely inextensible, and needlessly complicated syntax
– mixing relational operations together and with the output
– imperative DDL
– impossibility of relations between relations
-– which leads to non-homogenous representation and undermines the relation abstraction itself,
lowering the level of programming
by abandoning the notion of table and by creating:
– frugal, extensible, functional-style syntax, utilizing “set-theory properties” of relations
– implicit and independent notions of relational operations and I/O operations
– declarative DDL
– single unified representation for relations capable of adopting another relation as a domain
To support the last and the most important novelty we propose certain storage means for relations
between relations.

http://file.bestmx.net/ee/articles/SQL-2.0/sql-2.0.pdf
http://file.bestmx.net/ee/articles/SQL-2.0/sql-2.0.odt
LinkLeave a comment

Comments:
[User Picture]
From:[info]panduro
Date:December 17th, 2013 - 05:05 am
(Link)
А чем их даталог не устраивает, интересно
From:[info]silly_sad
Date:December 17th, 2013 - 11:21 am
(Link)
совсем ведь нихуя разницы нет, да?
[User Picture]
From:[info]panduro
Date:December 18th, 2013 - 12:59 am
(Link)
основная разница, как я понял, в отношениях к отношениям, я правда не совсем понимаю, зачем это нужно
From:[info]silly_sad
Date:December 18th, 2013 - 01:25 am
(Link)
как это зачем?
в окружающем вас мире нет отношений к отношениям????
[User Picture]
From:[info]panduro
Date:December 18th, 2013 - 02:24 am
(Link)
Есть-есть.

Погодите, кажется, даталог позволяет всё те "отношения к отношениям", по крайней мере, те, которые показаны в статье. ( Можно посмотреть на BNF и на примеры использования тут: http://docs.racket-lang.org/datalog/datalog.html )

Я просто не понял, почему автор отталкивается от эскуэля, тогда как предложение больше похоже на ноэскуэль типа монги или даже на даталог, а там ни то, ни то, не упоминается. И это я так ехидно подначивал пояснить, чтобы самому не разбираться, хехе.
From:[info]silly_sad
Date:December 18th, 2013 - 02:28 pm
(Link)
-- вы не желаете разделить со мной трапезу?
-- а что будем кушать?
-- яичницу.
-- что заставило вас приготовить яичницу, а не омлет?
-- воспоминания о бывшей жене.
-- ну уж нет! извините! такую яичницу я есть не буду!
[User Picture]
From:[info]panduro
Date:December 18th, 2013 - 09:48 pm
(Link)
печалин: вы не желаете разделить со мной трапезу?
пандуровский: а что будем кушать?
печалин: блюдо из яиц. я придумал его как замену яичнице, вот рецепт (протягивает бумаги).
пандуровский: (бегло просматривая бумаги) так.. добавить молока, взбить... но позвольте, чем же это отличается от омлета?
печалин: право, если вы не видите разницы, то я даже не знаю... мне вас жаль!
(пандуровский озадаченно теребит бороду, затем идёт в библиотеку сверять рецепты)
печалин (в зал): в наше время только так и можно заманить молодёжь в библиотеки (подмигивает).
From:[info]silly_sad
Date:December 18th, 2013 - 09:58 pm
(Link)
дело ваше.
From:[info]silly_sad
Date:December 21st, 2013 - 10:16 pm
(Link)
кстате вы можете записать на даталоге пример "про библиотеку" из статьи
[User Picture]
From:[info]panduro
Date:December 23rd, 2013 - 12:19 pm
(Link)
Да вроде точно так же выглядит (использую кложуру с библиотекой [fogus/bacwn "0.3.0"], которая есть возрождённая clojure.contrib.datalog. Последний завести не удалось, а в "просто даталоге", без всяческих обвесов, как например http://docs.racket-lang.org/datalog всё это происходит в уме какбы, там просто хуячатся данные)
(def db-base
  (make-database
   (relation :author [:id :name :birthdate]) 
   (relation :book [:id :author-id :title :publicationdate]) 
   (relation :genre [:id :name])
   (relation :book-genre [:genre-id :book-id])
   (relation :department [:id :name])
   (relation :available [:department-id :book-id])))


Хотя я бы сделал проще, типа
(def db-base
  (make-database
   (relation :author [:id :name :birthdate]) 
   (relation :book [:author-id :title :publicationdate :genre :department])))


А вообще, я предполагаю, тут фишечка в том, что в бумажке в посте зависимости (логика) вшиты в схему (данные), а в даталоге данные просты как бревно (а схема просто для удобства именования в выборках), а логика либо просто подразумевается при выборке (для простых случаев, типа как тут связать автора и книгу), либо описывается отдельно в виде логики над ними. И подход даталога мне тут кажется более функциональным и кисс, кроме того, (во-первых) для инференса в бумажке надо отдельную штуку изобретать, и (во-вторых) можно делать всякие интересные штуки с распараллеливанием и распределённых хранением c даталогом (потому что мьютабл стейта нет), которые с подходом в бумажке я не пойму, как получатся. В общем, кажется, напрасно смешаны задачи хранилища, логики над данными и прочими операциями.

Я тут, получается, сам себе отвечаю снова, не смотря на то, что я не настоящий программист.