Resolve "Database Design"
Closes #47 (closed)
Design choices:
- We will use SQLalchemy and a PostgreSQL database.
- Double bordered fields like user_details are uesd to reduce amount of Null values in DB.
- papwer_raw_details field is used in case that the CSV headers can't be matches with any of the available papers. If that's the case, we simply safe it as a JSON string.
- We use Strings for all paper details, since we are not certain whether fields always return values we might expect. Therefore the backend will handle further logic.
- This DB should be in 3. normal form.
- User details like role_in_work, organization etc. inspired from Covidence.
Future decisions:
- If we use SSO, we might replace user_id in user with cern_upn and move user_email to user_details.
- Also we might then remove some columns (eg names are getting safed by SSO, so do we need to safe them as well?).
Edited by Stefan Schorkmeier