We started the development of a database by collecting and ordering everything that should be stored in OSCAR. For this, we were in close contact with scientists.
Important constraints for the database schema are:
The result was the following Entity-Relationship model:
Next, we converted the ER-model (Figure 2) into a relational model. For each entity and each relationship, we created one relation and marked the respective primary key by underlining it.
In the relational model, all relations representing a 1:N relationship or a 1:1 relationship are respectively marked.
The relational model can be simplified by including both the 1:N relationships as well as the 1:1 relationships in the entity of the respective primary key. This leads to the following, simplified relational model:
We considered further simplification - for instance by choosing another attribute as primary key, so that no ID is needed. However, the constraints described above did not allow for this. Additionally, we investigated a possible improvement of the database scheme by transforming the schema into a high normal form. If applied, such a transformation removes redundancies from the schema. After examining all functional dependencies, we registered that the database schema described above already satisfies all conditions required to be in Boyce–Codd normal form (BCNF). We decided to not go beyond BCNF in order to avoid unnecessary complexity.
The bedrock of our app is made up of Django, a Python framework with an included REST API, allowing for seamless communication between our React.js frontend, and PostgreSQL, an open-source relational database that stores all our CARs. We used the Bootstrap framework to stylize the application and then bundled it all together into a small package with Webkit to provide a seamless user experience. In the end, we deployed the app to an Amazon Elastic Compute Cloud instance while the production database runs on the Amazon Relational Database Service.
Access the OSCAR database here!
The source code for OSCAR can be found on our Software GitLab.
We won’t stop at just cataloging CARs and fostering
academic interactions, we want to continue by
building an integrated development environment where anyone can assemble CARs from already existing
parts.
Let’s see where our journey takes us!