= Database import

The import file has to be a text file (with `.txt` at the end) encoded in UTF-8. It has to *strictly* follow the required format.

You can take a look at the file link:example_database_import.txt[] for an example.

== Required manipulation on the web interface

The following tables can not be imported from a file and have to be manipulated on the web interface.

* Semester
* Program
* Part
* User
* Assistant
* Experiment
* Semester Experiment

== Optional values
If an attribute is optional/nullable and it has no value, then `NULL` (uppercase) has to be written.

== How to understand this document
=== ID
None of the mentioned ids in this document is meant as database id. The ids here only refer to the imported instances. The id in the database is assigned automatically.

=== Table
* id -> 0 / 1 / 2 / ... (starts with 0 and has step 1)
* attribute -> example1 / example2 / ... (explanation)
* ...

The type of the attributes can be seen in the drawio file link:DB.drawio[] which can be opened using https://www.diagrams.net/[diagrams.net]. Some attributes have constraints marked also in the drawio file.

== Tables
=== Semester (only one!)
* label -> WS / SS
* year -> 21 / 22 / ...

=== Part
* id
* number -> 1 / 2 / ...
* program_label -> BS / MS / BE / ... (for bachelor of science, master of science, bachelor of education, etc.)

=== Student
* student_number
* first_name
* last_name
* uni_email
* _contact_email_ (optional)
* _bachelor_thesis_ (optional)
* _bachelor_thesis_work_group_ (optional)
* _note_ (optional)

=== Group
* id
* number -> 1 / 2 / ...
* program_label

=== Part Student
* student_number
* part_id
* group_id

=== Experiment
* id
* number -> 1 / 2 / ...
* program_label

=== Group Experiment
* id
* experiment_id
* group_id

=== Appointment
* date -> 21.08.2022
* special -> 1 / 0
* group_experiment_id
* assistant_email
