relational/README.md
Salvo 'LtWorf' Tomaselli 259a7c6497
README.md
2020-08-24 14:38:45 +02:00

69 lines
1.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Relational
==========
Relational an educational tool to provide a workspace for experimenting with *relational* *algebra*, an offshoot of first-order logic.
![screenshot](https://ltworf.github.io/relational/screenshots/3.png)
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