69 lines
1.7 KiB
Markdown
69 lines
1.7 KiB
Markdown
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
|