96404b4d98 | ||
---|---|---|
.github | ||
debian | ||
feedback-ltworf | ||
relational | ||
relational_gui | ||
relational_readline | ||
samples | ||
setup | ||
tests_dir | ||
windows | ||
.gitignore | ||
.travis.yml | ||
CHANGELOG | ||
COPYING | ||
CREDITS | ||
Makefile | ||
README.md | ||
SECURITY.md | ||
complexity | ||
driver.py | ||
relational-cli.1 | ||
relational.1 | ||
relational.desktop | ||
relational.py |
README.md
Relational
Relational an educational tool to provide a workspace for experimenting with relational algebra, an offshoot of first-order logic.
I test it on GNU/Linux and Windows. It probably works on other systems too.
It provides:
- A GUI that can be used for executing relational queries
- A standalone Python module that can be used for executing relational queries, parsing relational expressions and optimizing them
- A command line interface
Official website
More documentation can be found here https://ltworf.github.io/relational/
Install
- Windows: https://ltworf.github.io/relational/download.html?exe
- Debian based:
apt-get install relational
- Everyone else: Download the sources https://ltworf.github.io/relational/download.html?tar.gz
Run from sources
For the dependencies, check debian/control
for the build dependencies.
You will need to run
make
to generate some .py files.
To launch the application, run
./relational.py
Syntax
These are some valid queries (using the provided example dataset)
# Join people and skills
people ⋈ skills
# Select people within a certain age range
σ age > 25 and age < 50 (people)
# Selection with complicated expression requires an extra set of () around the expression
σ (name.upper().startswith('J') and age > 21) (people)
# Cartesian product of people with itself, including only name and id
ρ id➡i, name➡n (people) * π name, id (people)
For the selection, python expressions are used.
The syntax is explained here: https://ltworf.github.io/relational/allowed_expressions.html