Go to file
Salvo 'LtWorf' Tomaselli f6b4c6708b _rearrange() is an identity if not needed
Operations are possible even when the order of the attributes is
not the same. Because ordering is just an implementation detail and
not an actual part of relational algebra.

A _rearrange() function exists to convert relations to have a similar
format and be able to operate on them.

The function would perform a projection in any case, which would cause
the creation of a new temporary relation, even when the relations where
already using the same order of attributes.

This commit fixes the issue by making it return an identity if the
operation is not necessary.
2015-06-25 16:46:10 +07:00
debian Removed debian patch for encoding in tests 2015-06-16 10:32:40 +07:00
feedback-ltworf Prepare for version 2.1 2015-06-13 17:34:13 +07:00
relational _rearrange() is an identity if not needed 2015-06-25 16:46:10 +07:00
relational_curses Changed about and README to not point to galileo anymore 2013-12-27 00:31:43 +07:00
relational_gui Use handler to suggest name 2015-06-17 16:35:14 +07:00
relational_readline No need to use encode 2015-06-01 13:05:39 +07:00
samples - Change from 0.12 to version 1.0 2011-03-04 12:38:00 +07:00
setup Prepare for version 2.1 2015-06-13 17:34:13 +07:00
test Added new tests on joins 2015-06-06 14:06:02 +07:00
windows Prepare for version 2.1 2015-06-13 17:34:13 +07:00
.gitignore gitignore 2013-02-10 14:25:30 +07:00
CHANGELOG Prepare for version 2.1 2015-06-13 17:34:13 +07:00
COPYING renamed equijoin to thetajoin 2008-07-17 22:53:32 +07:00
CREDITS - termcolor modified to use bold by default 2011-04-01 10:28:47 +07:00
Makefile Switch GUI generation to Qt5 2015-02-19 13:59:41 +07:00
README.md Updated README's examples 2015-05-31 19:12:10 +07:00
TODO - Using more the colored class 2011-05-02 10:02:06 +07:00
complexity Get rid of the last remains of galileo 2013-12-27 00:47:48 +07:00
driver.py Set encoding in test driver 2015-06-13 17:24:38 +07:00
relational-cli.1 Updated manpages 2015-06-01 12:54:52 +07:00
relational.1 Updated manpages 2015-06-01 12:54:52 +07:00
relational.desktop Make lintian happy 2013-12-27 01:02:04 +07:00
relational_gui.py Prepare for version 2.1 2015-06-13 17:34:13 +07:00

README.md

Relational an educational tool to provide a workspace for experimenting with relational algebra, an offshoot of first-order logic.

It provides GUI that can be used for executing relational queries, and also provides a command line interface.

Provides a standalone Python module that can be used for executing relational queries, parsing relational expressions and optimizing them.

Official website

More documentation can be found here http://ltworf.github.io/relational/

Install

Binary download for Windows can be obtained from the website.

For Linux, check your distribution's packages, relational is available on Debian and Ubuntu.

Syntax

These are some valid queries

σage > 25 and rank == weight(A)
σ (name.upper().startswith('J') and age>21 )(people)
Q ⋈ π a,b(A) ⋈ B
ρid➡i,name➡n(A) - π a,b(π a,b(A)) ∩ σage > 25 or rank = weight(A)
π a,b(π a,b(A))
ρid➡i,name➡n(π a,b(A))
A ⋈ B

Run from sources

To launch the application, run

./relational_gui.py

If it needs some dependencies: Qt5, Python 3.4 or greater, PyQt5

It can run on osx but bugreports about that will be rejected.