| Key | Column Name | Datatype | Not Null | Default | Comment |
| PK | id | INT(11) | Yes | ||
| user_id | INT(11) | Yes | |||
| course_offering_id | INT(11) | Yes | |||
| course_role_id | INT(11) | Yes |
| Index Name | Columns | Primary | Unique | Type | Kind | Comment |
| PRIMARY | Yes | No | PRIMARY | |||
| index_course_enrollments_on_user_id_and_course_offering_id | No | Yes | UNIQUE | |||
| index_course_enrollments_on_user_id | No | No | INDEX | |||
| index_course_enrollments_on_course_offering_id | No | No | INDEX | |||
| index_course_enrollments_on_course_role_id | No | No | INDEX |
| Relationship Name | Relationship Type | Parent Table | Child Table | Card. |
| course_enrollments_course_offering_id_fk | Non-Identifying | course_offerings | course_enrollments | 1:n |
| course_enrollments_course_role_id_fk | Non-Identifying | course_roles | course_enrollments | 1:n |
| course_enrollments_user_id_fk | Non-Identifying | users | course_enrollments | 1:n |
| Key | Column Name | Datatype | Not Null | Default | Comment |
| PK | id | INT(11) | Yes | ||
| course_id | INT(11) | Yes | |||
| term_id | INT(11) | Yes | |||
| label | VARCHAR(255) | Yes | |||
| url | VARCHAR(255) | No | NULL | ||
| self_enrollment_allowed | TINYINT(1) | No | '1' | ||
| created_at | DATETIME | No | NULL | ||
| updated_at | DATETIME | No | NULL | ||
| cutoff_date | DATE | No | NULL | ||
| late_policy_id | INT(11) | No | NULL | ||
| lms_instance_id | INT(11) | Yes | |||
| lms_course_code | VARCHAR(255) | No | NULL | ||
| lms_course_num | VARCHAR(255) | Yes | |||
| archived | TINYINT(1) | No | '0' |
| Index Name | Columns | Primary | Unique | Type | Kind | Comment |
| PRIMARY | Yes | No | PRIMARY | |||
| index_course_offerings_on_course_id | No | No | INDEX | |||
| index_course_offerings_on_term_id | No | No | INDEX | |||
| course_offerings_late_policy_id_fk | No | No | INDEX | |||
| index_course_offerings_on_lms_instance_id_and_lms_course_num | No | No | INDEX |
| Relationship Name | Relationship Type | Parent Table | Child Table | Card. |
| course_offerings_course_id_fk | Non-Identifying | courses | course_offerings | 1:n |
| course_offerings_late_policy_id_fk | Non-Identifying | late_policies | course_offerings | 1:n |
| course_offerings_lms_instance_id_fk | Non-Identifying | lms_instances | course_offerings | 1:n |
| course_offerings_term_id_fk | Non-Identifying | terms | course_offerings | 1:n |
| course_enrollments_course_offering_id_fk | Non-Identifying | course_offerings | course_enrollments | 1:n |
| inst_books_course_offering_id_fk | Non-Identifying | course_offerings | inst_books | 1:n |
| fk_rails_c71b456de9 | Non-Identifying | course_offerings | inst_course_offering_exercises | 1:n |
| fk_rails_69fdb0d95d | Non-Identifying | course_offerings | inst_module_versions | 1:n |
| Key | Column Name | Datatype | Not Null | Default | Comment |
| PK | id | INT(11) | Yes | ||
| name | VARCHAR(255) | Yes | |||
| can_manage_course | TINYINT(1) | Yes | '0' | ||
| can_manage_assignments | TINYINT(1) | Yes | '0' | ||
| can_grade_submissions | TINYINT(1) | Yes | '0' | ||
| can_view_other_submissions | TINYINT(1) | Yes | '0' | ||
| builtin | TINYINT(1) | Yes | '0' |
| Index Name | Columns | Primary | Unique | Type | Kind | Comment |
| PRIMARY | Yes | No | PRIMARY |
| Relationship Name | Relationship Type | Parent Table | Child Table | Card. |
| course_enrollments_course_role_id_fk | Non-Identifying | course_roles | course_enrollments | 1:n |
| Key | Column Name | Datatype | Not Null | Default | Comment |
| PK | id | INT(11) | Yes | ||
| name | VARCHAR(255) | Yes | |||
| number | VARCHAR(255) | Yes | |||
| organization_id | INT(11) | Yes | |||
| user_id | INT(11) | Yes | |||
| created_at | DATETIME | No | NULL | ||
| updated_at | DATETIME | No | NULL | ||
| slug | VARCHAR(255) | Yes |
| Index Name | Columns | Primary | Unique | Type | Kind | Comment |
| PRIMARY | Yes | No | PRIMARY | |||
| index_courses_on_organization_id | No | No | INDEX | |||
| index_courses_on_user_id | No | No | INDEX | |||
| index_courses_on_slug | No | No | INDEX |
| Relationship Name | Relationship Type | Parent Table | Child Table | Card. |
| courses_organization_id_fk | Non-Identifying | organizations | courses | 1:n |
| course_offerings_course_id_fk | Non-Identifying | courses | course_offerings | 1:n |
| Key | Column Name | Datatype | Not Null | Default | Comment |
| PK | id | INT(11) | Yes | ||
| name | VARCHAR(255) | Yes | |||
| can_manage_all_courses | TINYINT(1) | Yes | '0' | ||
| can_edit_system_configuration | TINYINT(1) | Yes | '0' | ||
| builtin | TINYINT(1) | Yes | '0' |
| Index Name | Columns | Primary | Unique | Type | Kind | Comment |
| PRIMARY | Yes | No | PRIMARY |
| Relationship Name | Relationship Type | Parent Table | Child Table | Card. |
| users_global_role_id_fk | Non-Identifying | global_roles | users | 1:n |
| Key | Column Name | Datatype | Not Null | Default | Comment |
| PK | id | INT(11) | Yes | ||
| inst_book_id | INT(11) | Yes | |||
| inst_section_id | INT(11) | Yes | |||
| inst_exercise_id | INT(11) | No | NULL | ||
| points | DECIMAL(5,2) | Yes | |||
| required | TINYINT(1) | No | '0' | ||
| threshold | DECIMAL(5,2) | Yes | |||
| created_at | DATETIME | No | NULL | ||
| updated_at | DATETIME | No | NULL | ||
| type | TINYINT(1) | No | NULL | ||
| options | LONGTEXT | No | NULL |
| Index Name | Columns | Primary | Unique | Type | Kind | Comment |
| PRIMARY | Yes | No | PRIMARY | |||
| inst_book_section_exercises_inst_exercise_id_fk | No | No | INDEX | |||
| inst_book_section_exercises_inst_book_id_fk | No | No | INDEX | |||
| inst_book_section_exercises_inst_section_id_fk | No | No | INDEX |
| Relationship Name | Relationship Type | Parent Table | Child Table | Card. |
| inst_book_section_exercises_inst_book_id_fk | Non-Identifying | inst_books | inst_book_section_exercises | 1:n |
| inst_book_section_exercises_inst_exercise_id_fk | Non-Identifying | inst_exercises | inst_book_section_exercises | 1:n |
| inst_book_section_exercises_inst_section_id_fk | Non-Identifying | inst_sections | inst_book_section_exercises | 1:n |
| odsa_exercise_attempts_inst_book_section_exercise_id_fk | Non-Identifying | inst_book_section_exercises | odsa_exercise_attempts | 1:n |
| odsa_exercise_progresses_inst_book_section_exercise_id_fk | Non-Identifying | inst_book_section_exercises | odsa_exercise_progresses | 1:n |
| odsa_user_interactions_inst_book_section_exercise_id_fk | Non-Identifying | inst_book_section_exercises | odsa_user_interactions | 1:n |
| odsa_user_time_tracking_inst_book_section_exercise_id_fk | Non-Identifying | inst_book_section_exercises | odsa_user_time_trackings | 1:n |
| Key | Column Name | Datatype | Not Null | Default | Comment |
| PK | id | INT(11) | Yes | ||
| course_offering_id | INT(11) | No | NULL | ||
| user_id | INT(11) | Yes | |||
| title | VARCHAR(50) | Yes | |||
| created_at | DATETIME | No | NULL | ||
| updated_at | DATETIME | No | NULL | ||
| template | TINYINT(1) | No | '0' | ||
| desc | VARCHAR(255) | No | NULL | ||
| last_compiled | DATETIME | No | NULL | ||
| options | LONGTEXT | No | NULL | ||
| book_type | INT(11) | No | NULL |
| Index Name | Columns | Primary | Unique | Type | Kind | Comment |
| PRIMARY | Yes | No | PRIMARY | |||
| inst_books_course_offering_id_fk | No | No | INDEX | |||
| inst_books_user_id_fk | No | No | INDEX |
| Relationship Name | Relationship Type | Parent Table | Child Table | Card. |
| inst_books_course_offering_id_fk | Non-Identifying | course_offerings | inst_books | 1:n |
| inst_books_user_id_fk | Non-Identifying | users | inst_books | 1:n |
| inst_book_section_exercises_inst_book_id_fk | Non-Identifying | inst_books | inst_book_section_exercises | 1:n |
| inst_chapters_inst_book_id_fk | Non-Identifying | inst_books | inst_chapters | 1:n |
| odsa_book_progresses_inst_book_id_fk | Non-Identifying | inst_books | odsa_book_progresses | 1:n |
| odsa_exercise_attempts_inst_book_id_fk | Non-Identifying | inst_books | odsa_exercise_attempts | 1:n |
| odsa_module_progresses_inst_book_id_fk | Non-Identifying | inst_books | odsa_module_progresses | 1:n |
| odsa_user_interactions_inst_book_id_fk | Non-Identifying | inst_books | odsa_user_interactions | 1:n |
| odsa_user_time_tracking_inst_book_id_fk | Non-Identifying | inst_books | odsa_user_time_trackings | 1:n |
| Key | Column Name | Datatype | Not Null | Default | Comment |
| PK | id | INT(11) | Yes | ||
| inst_chapter_id | INT(11) | Yes | |||
| inst_module_id | INT(11) | Yes | |||
| module_position | INT(11) | No | NULL | ||
| lms_module_item_id | INT(11) | No | NULL | ||
| lms_section_item_id | INT(11) | No | NULL | ||
| created_at | DATETIME | No | NULL | ||
| updated_at | DATETIME | No | NULL | ||
| lms_assignment_id | INT(11) | No | NULL |
| Index Name | Columns | Primary | Unique | Type | Kind | Comment |
| PRIMARY | Yes | No | PRIMARY | |||
| inst_chapter_modules_inst_chapter_id_fk | No | No | INDEX | |||
| inst_chapter_modules_inst_module_id_fk | No | No | INDEX |
| Relationship Name | Relationship Type | Parent Table | Child Table | Card. |
| inst_chapter_modules_inst_chapter_id_fk | Non-Identifying | inst_chapters | inst_chapter_modules | 1:n |
| inst_chapter_modules_inst_module_id_fk | Non-Identifying | inst_modules | inst_chapter_modules | 1:n |
| inst_sections_inst_chapter_module_id_fk | Non-Identifying | inst_chapter_modules | inst_sections | 1:n |
| odsa_module_progresses_inst_chapter_module_id_fk | Non-Identifying | inst_chapter_modules | odsa_module_progresses | 1:n |
| Key | Column Name | Datatype | Not Null | Default | Comment |
| PK | id | INT(11) | Yes | ||
| inst_book_id | INT(11) | Yes | |||
| name | VARCHAR(100) | Yes | |||
| short_display_name | VARCHAR(45) | No | NULL | ||
| position | INT(11) | No | NULL | ||
| lms_chapter_id | INT(11) | No | NULL | ||
| lms_assignment_group_id | INT(11) | No | NULL | ||
| created_at | DATETIME | No | NULL | ||
| updated_at | DATETIME | No | NULL |
| Index Name | Columns | Primary | Unique | Type | Kind | Comment |
| PRIMARY | Yes | No | PRIMARY | |||
| inst_chapters_inst_book_id_fk | No | No | INDEX |
| Relationship Name | Relationship Type | Parent Table | Child Table | Card. |
| inst_chapters_inst_book_id_fk | Non-Identifying | inst_books | inst_chapters | 1:n |
| inst_chapter_modules_inst_chapter_id_fk | Non-Identifying | inst_chapters | inst_chapter_modules | 1:n |
| odsa_user_time_tracking_inst_chapter_id_fk | Non-Identifying | inst_chapters | odsa_user_time_trackings | 1:n |
| Key | Column Name | Datatype | Not Null | Default | Comment |
| PK | id | INT(11) | Yes | ||
| course_offering_id | INT(11) | Yes | |||
| inst_exercise_id | INT(11) | Yes | |||
| resource_link_id | VARCHAR(255) | No | NULL | ||
| resource_link_title | VARCHAR(255) | No | NULL | ||
| created_at | DATETIME | No | NULL | ||
| updated_at | DATETIME | No | NULL | ||
| threshold | DECIMAL(5,2) | Yes | |||
| points | DECIMAL(5,2) | Yes | |||
| options | LONGTEXT | No | NULL |
| Index Name | Columns | Primary | Unique | Type | Kind | Comment |
| PRIMARY | Yes | No | PRIMARY | |||
| index_inst_course_offering_exercises_on_course_offering_res | No | Yes | UNIQUE | |||
| inst_course_offering_exercises_inst_exercise_id_fk | No | No | INDEX |
| Relationship Name | Relationship Type | Parent Table | Child Table | Card. |
| fk_rails_c71b456de9 | Non-Identifying | course_offerings | inst_course_offering_exercises | 1:n |
| inst_course_offering_exercises_inst_exercise_id_fk | Non-Identifying | inst_exercises | inst_course_offering_exercises | 1:n |
| odsa_exercise_attempts_inst_course_offering_exercise_id_fk | Non-Identifying | inst_course_offering_exercises | odsa_exercise_attempts | 1:n |
| odsa_exercise_progresses_inst_course_offering_exercise_id_fk | Non-Identifying | inst_course_offering_exercises | odsa_exercise_progresses | 1:n |
| odsa_user_interactions_inst_course_offering_exercise_id_fk | Non-Identifying | inst_course_offering_exercises | odsa_user_interactions | 1:n |
| odsa_user_time_tracking_inst_course_offering_exercise_id_fk | Non-Identifying | inst_course_offering_exercises | odsa_user_time_trackings | 1:n |
| Key | Column Name | Datatype | Not Null | Default | Comment |
| PK | id | INT(11) | Yes | ||
| name | VARCHAR(255) | No | NULL | ||
| short_name | VARCHAR(255) | Yes | |||
| ex_type | VARCHAR(50) | No | NULL | ||
| description | VARCHAR(255) | No | NULL | ||
| created_at | DATETIME | No | NULL | ||
| updated_at | DATETIME | No | NULL | ||
| learning_tool | VARCHAR(255) | No | NULL | ||
| av_address | VARCHAR(512) | No | NULL | ||
| width | INT(11) | No | NULL | ||
| height | INT(11) | No | NULL | ||
| links | TEXT | No | NULL | ||
| scripts | TEXT | No | NULL |
| Index Name | Columns | Primary | Unique | Type | Kind | Comment |
| PRIMARY | Yes | No | PRIMARY | |||
| index_inst_exercises_on_short_name | No | Yes | UNIQUE |
| Relationship Name | Relationship Type | Parent Table | Child Table | Card. |
| inst_book_section_exercises_inst_exercise_id_fk | Non-Identifying | inst_exercises | inst_book_section_exercises | 1:n |
| inst_course_offering_exercises_inst_exercise_id_fk | Non-Identifying | inst_exercises | inst_course_offering_exercises | 1:n |
| fk_rails_9b61737c9f | Non-Identifying | inst_exercises | inst_module_section_exercises | 1:n |
| Key | Column Name | Datatype | Not Null | Default | Comment |
| PK | id | INT(11) | Yes | ||
| inst_module_version_id | INT(11) | Yes | |||
| inst_module_section_id | INT(11) | Yes | |||
| inst_exercise_id | INT(11) | Yes | |||
| points | DECIMAL(5,2) | Yes | |||
| required | TINYINT(1) | No | '0' | ||
| threshold | DECIMAL(5,2) | Yes | |||
| options | TEXT | No | NULL | ||
| created_at | DATETIME | Yes | |||
| updated_at | DATETIME | Yes |
| Index Name | Columns | Primary | Unique | Type | Kind | Comment |
| PRIMARY | Yes | No | PRIMARY | |||
| fk_rails_5c4fc2ff52 | No | No | INDEX | |||
| fk_rails_b320810099 | No | No | INDEX | |||
| fk_rails_9b61737c9f | No | No | INDEX |
| Relationship Name | Relationship Type | Parent Table | Child Table | Card. |
| fk_rails_5c4fc2ff52 | Non-Identifying | inst_module_versions | inst_module_section_exercises | 1:n |
| fk_rails_9b61737c9f | Non-Identifying | inst_exercises | inst_module_section_exercises | 1:n |
| fk_rails_b320810099 | Non-Identifying | inst_module_sections | inst_module_section_exercises | 1:n |
| fk_rails_6944f2321b | Non-Identifying | inst_module_section_exercises | odsa_exercise_attempts | 1:n |
| fk_rails_7b1bb7d31f | Non-Identifying | inst_module_section_exercises | odsa_exercise_progresses | 1:n |
| fk_rails_9d3d089a83 | Non-Identifying | inst_module_section_exercises | odsa_user_interactions | 1:n |
| odsa_user_time_tracking_inst_module_section_exercise_id_fk | Non-Identifying | inst_module_section_exercises | odsa_user_time_trackings | 1:n |
| Key | Column Name | Datatype | Not Null | Default | Comment |
| PK | id | INT(11) | Yes | ||
| inst_module_version_id | INT(11) | Yes | |||
| name | VARCHAR(255) | Yes | |||
| show | TINYINT(1) | No | '1' | ||
| learning_tool | VARCHAR(255) | No | NULL | ||
| resource_type | VARCHAR(255) | No | NULL | ||
| resource_name | VARCHAR(255) | No | NULL | ||
| created_at | DATETIME | Yes | |||
| updated_at | DATETIME | Yes |
| Index Name | Columns | Primary | Unique | Type | Kind | Comment |
| PRIMARY | Yes | No | PRIMARY | |||
| fk_rails_ff11275e48 | No | No | INDEX |
| Relationship Name | Relationship Type | Parent Table | Child Table | Card. |
| fk_rails_ff11275e48 | Non-Identifying | inst_module_versions | inst_module_sections | 1:n |
| fk_rails_b320810099 | Non-Identifying | inst_module_sections | inst_module_section_exercises | 1:n |
| Key | Column Name | Datatype | Not Null | Default | Comment |
| PK | id | INT(11) | Yes | ||
| inst_module_id | INT(11) | Yes | |||
| name | VARCHAR(255) | Yes | |||
| git_hash | VARCHAR(255) | Yes | |||
| file_path | VARCHAR(4096) | Yes | |||
| template | TINYINT(1) | No | '0' | ||
| course_offering_id | INT(11) | No | NULL | ||
| resource_link_id | VARCHAR(255) | No | NULL | ||
| resource_link_title | VARCHAR(512) | No | NULL | ||
| created_at | DATETIME | Yes | |||
| updated_at | DATETIME | Yes |
| Index Name | Columns | Primary | Unique | Type | Kind | Comment |
| PRIMARY | Yes | No | PRIMARY | |||
| index_inst_module_versions_on_course_resource | No | Yes | UNIQUE | |||
| fk_rails_7e343b3134 | No | No | INDEX |
| Relationship Name | Relationship Type | Parent Table | Child Table | Card. |
| fk_rails_69fdb0d95d | Non-Identifying | course_offerings | inst_module_versions | 1:n |
| fk_rails_7e343b3134 | Non-Identifying | inst_modules | inst_module_versions | 1:n |
| fk_rails_5c4fc2ff52 | Non-Identifying | inst_module_versions | inst_module_section_exercises | 1:n |
| fk_rails_ff11275e48 | Non-Identifying | inst_module_versions | inst_module_sections | 1:n |
| fk_rails_73d3622e40 | Non-Identifying | inst_module_versions | inst_modules | 1:n |
| fk_rails_38a9ac7560 | Non-Identifying | inst_module_versions | odsa_module_progresses | 1:n |
| fk_rails_599b647d17 | Non-Identifying | inst_module_versions | odsa_user_interactions | 1:n |
| odsa_user_time_tracking_inst_module_version_id_fk | Non-Identifying | inst_module_versions | odsa_user_time_trackings | 1:n |
| Key | Column Name | Datatype | Not Null | Default | Comment |
| PK | id | INT(11) | Yes | ||
| path | VARCHAR(255) | Yes | |||
| name | VARCHAR(255) | Yes | |||
| created_at | DATETIME | No | NULL | ||
| updated_at | DATETIME | No | NULL | ||
| current_version_id | INT(11) | No | NULL |
| Index Name | Columns | Primary | Unique | Type | Kind | Comment |
| PRIMARY | Yes | No | PRIMARY | |||
| index_inst_modules_on_path | No | Yes | UNIQUE | |||
| fk_rails_73d3622e40 | No | No | INDEX |
| Relationship Name | Relationship Type | Parent Table | Child Table | Card. |
| fk_rails_73d3622e40 | Non-Identifying | inst_module_versions | inst_modules | 1:n |
| inst_chapter_modules_inst_module_id_fk | Non-Identifying | inst_modules | inst_chapter_modules | 1:n |
| fk_rails_7e343b3134 | Non-Identifying | inst_modules | inst_module_versions | 1:n |
| inst_sections_inst_module_id_fk | Non-Identifying | inst_modules | inst_sections | 1:n |
| odsa_user_time_tracking_inst_module_id_fk | Non-Identifying | inst_modules | odsa_user_time_trackings | 1:n |
| Key | Column Name | Datatype | Not Null | Default | Comment |
| PK | id | INT(11) | Yes | ||
| inst_module_id | INT(11) | Yes | |||
| inst_chapter_module_id | INT(11) | Yes | |||
| short_display_name | VARCHAR(50) | No | NULL | ||
| name | VARCHAR(255) | Yes | |||
| position | INT(11) | No | NULL | ||
| gradable | TINYINT(1) | No | '0' | ||
| soft_deadline | DATETIME | No | NULL | ||
| hard_deadline | DATETIME | No | NULL | ||
| time_limit | INT(11) | No | NULL | ||
| show | TINYINT(1) | No | '1' | ||
| lms_item_id | INT(11) | No | NULL | ||
| lms_assignment_id | INT(11) | No | NULL | ||
| created_at | DATETIME | No | NULL | ||
| updated_at | DATETIME | No | NULL | ||
| learning_tool | VARCHAR(255) | No | NULL | ||
| resource_type | VARCHAR(255) | No | NULL | ||
| resource_name | VARCHAR(255) | No | NULL | ||
| lms_posted | TINYINT(1) | No | NULL | ||
| time_posted | DATETIME | No | NULL |
| Index Name | Columns | Primary | Unique | Type | Kind | Comment |
| PRIMARY | Yes | No | PRIMARY | |||
| inst_sections_inst_chapter_module_id_fk | No | No | INDEX | |||
| inst_sections_inst_module_id_fk | No | No | INDEX |
| Relationship Name | Relationship Type | Parent Table | Child Table | Card. |
| inst_sections_inst_chapter_module_id_fk | Non-Identifying | inst_chapter_modules | inst_sections | 1:n |
| inst_sections_inst_module_id_fk | Non-Identifying | inst_modules | inst_sections | 1:n |
| inst_book_section_exercises_inst_section_id_fk | Non-Identifying | inst_sections | inst_book_section_exercises | 1:n |
| odsa_exercise_attempts_inst_section_id_fk | Non-Identifying | inst_sections | odsa_exercise_attempts | 1:n |
| odsa_user_interactions_inst_section_id_fk | Non-Identifying | inst_sections | odsa_user_interactions | 1:n |
| odsa_user_time_tracking_inst_section_id_fk | Non-Identifying | inst_sections | odsa_user_time_trackings | 1:n |
| Key | Column Name | Datatype | Not Null | Default | Comment |
| PK | id | INT(11) | Yes | ||
| name | VARCHAR(255) | Yes | |||
| late_days | INT(11) | Yes | |||
| late_percent | INT(11) | Yes | |||
| created_at | DATETIME | No | NULL | ||
| updated_at | DATETIME | No | NULL |
| Index Name | Columns | Primary | Unique | Type | Kind | Comment |
| PRIMARY | Yes | No | PRIMARY | |||
| index_late_policies_on_name | No | Yes | UNIQUE |
| Relationship Name | Relationship Type | Parent Table | Child Table | Card. |
| course_offerings_late_policy_id_fk | Non-Identifying | late_policies | course_offerings | 1:n |
| Key | Column Name | Datatype | Not Null | Default | Comment |
| PK | id | INT(11) | Yes | ||
| name | VARCHAR(255) | Yes | |||
| key | VARCHAR(255) | Yes | |||
| secret | VARCHAR(255) | Yes | |||
| launch_url | VARCHAR(255) | Yes | |||
| created_at | DATETIME | No | NULL | ||
| updated_at | DATETIME | No | NULL |
| Index Name | Columns | Primary | Unique | Type | Kind | Comment |
| PRIMARY | Yes | No | PRIMARY | |||
| index_learning_tools_on_name | No | Yes | UNIQUE |
| Key | Column Name | Datatype | Not Null | Default | Comment |
| PK | id | INT(11) | Yes | ||
| access_token | VARCHAR(255) | No | NULL | ||
| created_at | DATETIME | No | NULL | ||
| updated_at | DATETIME | No | NULL | ||
| lms_instance_id | INT(11) | Yes | |||
| user_id | INT(11) | Yes | |||
| consumer_key | VARCHAR(255) | No | NULL | ||
| consumer_secret | VARCHAR(255) | No | NULL |
| Index Name | Columns | Primary | Unique | Type | Kind | Comment |
| PRIMARY | Yes | No | PRIMARY | |||
| index_lms_accesses_on_lms_instance_id_and_user_id | No | Yes | UNIQUE | |||
| lms_accesses_user_id_fk | No | No | INDEX |
| Relationship Name | Relationship Type | Parent Table | Child Table | Card. |
| lms_accesses_lms_instance_id_fk | Non-Identifying | lms_instances | lms_accesses | 1:n |
| lms_accesses_user_id_fk | Non-Identifying | users | lms_accesses | 1:n |
| fk_rails_3327f6b532 | Non-Identifying | lms_accesses | odsa_exercise_progresses | 1:n |
| odsa_module_progresses_lms_access_id_fk | Non-Identifying | lms_accesses | odsa_module_progresses | 1:n |
| Key | Column Name | Datatype | Not Null | Default | Comment |
| PK | id | INT(11) | Yes | ||
| url | VARCHAR(255) | Yes | |||
| created_at | DATETIME | No | NULL | ||
| updated_at | DATETIME | No | NULL | ||
| lms_type_id | INT(11) | No | NULL | ||
| consumer_key | VARCHAR(255) | No | NULL | ||
| consumer_secret | VARCHAR(255) | No | NULL | ||
| organization_id | INT(11) | No | NULL |
| Index Name | Columns | Primary | Unique | Type | Kind | Comment |
| PRIMARY | Yes | No | PRIMARY | |||
| index_lms_instances_on_url | No | Yes | UNIQUE | |||
| lms_instances_lms_type_id_fk | No | No | INDEX | |||
| lms_instances_organization_id_fk | No | No | INDEX |
| Relationship Name | Relationship Type | Parent Table | Child Table | Card. |
| lms_instances_lms_type_id_fk | Non-Identifying | lms_types | lms_instances | 1:n |
| lms_instances_organization_id_fk | Non-Identifying | organizations | lms_instances | 1:n |
| course_offerings_lms_instance_id_fk | Non-Identifying | lms_instances | course_offerings | 1:n |
| lms_accesses_lms_instance_id_fk | Non-Identifying | lms_instances | lms_accesses | 1:n |
| Key | Column Name | Datatype | Not Null | Default | Comment |
| PK | id | INT(11) | Yes | ||
| name | VARCHAR(255) | Yes | |||
| created_at | DATETIME | No | NULL | ||
| updated_at | DATETIME | No | NULL |
| Index Name | Columns | Primary | Unique | Type | Kind | Comment |
| PRIMARY | Yes | No | PRIMARY | |||
| index_lms_types_on_name | No | Yes | UNIQUE |
| Relationship Name | Relationship Type | Parent Table | Child Table | Card. |
| lms_instances_lms_type_id_fk | Non-Identifying | lms_types | lms_instances | 1:n |
| Key | Column Name | Datatype | Not Null | Default | Comment |
| PK | id | INT(11) | Yes | ||
| user_id | INT(11) | Yes | |||
| inst_book_id | INT(11) | Yes | |||
| started_exercises | LONGTEXT | Yes | |||
| proficient_exercises | LONGTEXT | Yes | |||
| created_at | DATETIME | No | NULL | ||
| updated_at | DATETIME | No | NULL |
| Index Name | Columns | Primary | Unique | Type | Kind | Comment |
| PRIMARY | Yes | No | PRIMARY | |||
| index_odsa_book_progresses_on_user_id_and_inst_book_id | No | Yes | UNIQUE | |||
| odsa_book_progresses_inst_book_id_fk | No | No | INDEX |
| Relationship Name | Relationship Type | Parent Table | Child Table | Card. |
| odsa_book_progresses_inst_book_id_fk | Non-Identifying | inst_books | odsa_book_progresses | 1:n |
| odsa_book_progresses_user_id_fk | Non-Identifying | users | odsa_book_progresses | 1:n |
| Key | Column Name | Datatype | Not Null | Default | Comment |
| PK | id | INT(11) | Yes | ||
| user_id | INT(11) | Yes | |||
| inst_book_id | INT(11) | No | NULL | ||
| inst_section_id | INT(11) | No | NULL | ||
| inst_book_section_exercise_id | INT(11) | No | NULL | ||
| worth_credit | TINYINT(1) | Yes | |||
| time_done | DATETIME | Yes | |||
| time_taken | INT(11) | Yes | |||
| count_hints | INT(11) | Yes | |||
| hint_used | TINYINT(1) | Yes | |||
| points_earned | DECIMAL(5,2) | Yes | |||
| earned_proficiency | TINYINT(1) | Yes | |||
| count_attempts | BIGINT(20) | Yes | |||
| ip_address | VARCHAR(20) | Yes | |||
| question_name | VARCHAR(50) | Yes | |||
| request_type | VARCHAR(50) | No | NULL | ||
| created_at | DATETIME | No | NULL | ||
| updated_at | DATETIME | No | NULL | ||
| correct | TINYINT(1) | No | NULL | ||
| pe_score | DECIMAL(5,2) | No | NULL | ||
| pe_steps_fixed | INT(11) | No | NULL | ||
| inst_course_offering_exercise_id | INT(11) | No | NULL | ||
| inst_module_section_exercise_id | INT(11) | No | NULL | ||
| answer | VARCHAR(255) | No | NULL |
| Index Name | Columns | Primary | Unique | Type | Kind | Comment |
| PRIMARY | Yes | No | PRIMARY | |||
| odsa_exercise_attempts_inst_book_section_exercise_id_fk | No | No | INDEX | |||
| odsa_exercise_attempts_user_id_fk | No | No | INDEX | |||
| odsa_exercise_attempts_inst_book_id_fk | No | No | INDEX | |||
| odsa_exercise_attempts_inst_section_id_fk | No | No | INDEX | |||
| odsa_exercise_attempts_inst_course_offering_exercise_id_fk | No | No | INDEX | |||
| fk_rails_6944f2321b | No | No | INDEX |
| Relationship Name | Relationship Type | Parent Table | Child Table | Card. |
| fk_rails_6944f2321b | Non-Identifying | inst_module_section_exercises | odsa_exercise_attempts | 1:n |
| odsa_exercise_attempts_inst_book_id_fk | Non-Identifying | inst_books | odsa_exercise_attempts | 1:n |
| odsa_exercise_attempts_inst_book_section_exercise_id_fk | Non-Identifying | inst_book_section_exercises | odsa_exercise_attempts | 1:n |
| odsa_exercise_attempts_inst_course_offering_exercise_id_fk | Non-Identifying | inst_course_offering_exercises | odsa_exercise_attempts | 1:n |
| odsa_exercise_attempts_inst_section_id_fk | Non-Identifying | inst_sections | odsa_exercise_attempts | 1:n |
| odsa_exercise_attempts_user_id_fk | Non-Identifying | users | odsa_exercise_attempts | 1:n |
| Key | Column Name | Datatype | Not Null | Default | Comment |
| PK | id | INT(11) | Yes | ||
| user_id | INT(11) | Yes | |||
| inst_book_section_exercise_id | INT(11) | No | NULL | ||
| current_score | INT(11) | Yes | |||
| highest_score | INT(11) | Yes | |||
| first_done | DATETIME | Yes | |||
| last_done | DATETIME | Yes | |||
| total_correct | INT(11) | Yes | |||
| total_worth_credit | INT(11) | Yes | |||
| proficient_date | DATETIME | Yes | |||
| current_exercise | VARCHAR(255) | No | NULL | ||
| correct_exercises | VARCHAR(255) | No | NULL | ||
| hinted_exercise | VARCHAR(255) | No | NULL | ||
| created_at | DATETIME | No | NULL | ||
| updated_at | DATETIME | No | NULL | ||
| inst_course_offering_exercise_id | INT(11) | No | NULL | ||
| lis_outcome_service_url | VARCHAR(255) | No | NULL | ||
| lis_result_sourcedid | VARCHAR(255) | No | NULL | ||
| lms_access_id | INT(11) | No | NULL | ||
| inst_module_section_exercise_id | INT(11) | No | NULL |
| Index Name | Columns | Primary | Unique | Type | Kind | Comment |
| PRIMARY | Yes | No | PRIMARY | |||
| index_odsa_ex_prog_on_user_id_and_inst_bk_sec_ex_id | No | Yes | UNIQUE | |||
| index_odsa_exercise_prog_on_user_course_offering_exercise | No | Yes | UNIQUE | |||
| index_odsa_ex_prog_on_user_module_sec_ex | No | Yes | UNIQUE | |||
| odsa_exercise_progresses_inst_book_section_exercise_id_fk | No | No | INDEX | |||
| odsa_exercise_progresses_inst_course_offering_exercise_id_fk | No | No | INDEX | |||
| fk_rails_3327f6b532 | No | No | INDEX | |||
| fk_rails_7b1bb7d31f | No | No | INDEX |
| Relationship Name | Relationship Type | Parent Table | Child Table | Card. |
| fk_rails_3327f6b532 | Non-Identifying | lms_accesses | odsa_exercise_progresses | 1:n |
| fk_rails_7b1bb7d31f | Non-Identifying | inst_module_section_exercises | odsa_exercise_progresses | 1:n |
| odsa_exercise_progresses_inst_book_section_exercise_id_fk | Non-Identifying | inst_book_section_exercises | odsa_exercise_progresses | 1:n |
| odsa_exercise_progresses_inst_course_offering_exercise_id_fk | Non-Identifying | inst_course_offering_exercises | odsa_exercise_progresses | 1:n |
| odsa_exercise_progresses_user_id_fk | Non-Identifying | users | odsa_exercise_progresses | 1:n |
| Key | Column Name | Datatype | Not Null | Default | Comment |
| PK | id | INT(11) | Yes | ||
| user_id | INT(11) | Yes | |||
| inst_book_id | INT(11) | No | NULL | ||
| first_done | DATETIME | Yes | |||
| last_done | DATETIME | Yes | |||
| proficient_date | DATETIME | Yes | |||
| created_at | DATETIME | No | NULL | ||
| updated_at | DATETIME | No | NULL | ||
| inst_chapter_module_id | INT(11) | No | NULL | ||
| lis_outcome_service_url | VARCHAR(255) | No | NULL | ||
| lis_result_sourcedid | VARCHAR(255) | No | NULL | ||
| current_score | FLOAT | Yes | |||
| highest_score | FLOAT | Yes | |||
| lms_access_id | INT(11) | No | NULL | ||
| inst_module_version_id | INT(11) | No | NULL |
| Index Name | Columns | Primary | Unique | Type | Kind | Comment |
| PRIMARY | Yes | No | PRIMARY | |||
| index_odsa_module_progress_on_user_and_module | No | Yes | UNIQUE | |||
| index_odsa_mod_prog_on_user_mod_version | No | Yes | UNIQUE | |||
| odsa_module_progresses_inst_book_id_fk | No | No | INDEX | |||
| odsa_module_progresses_inst_chapter_module_id_fk | No | No | INDEX | |||
| odsa_module_progresses_lms_access_id_fk | No | No | INDEX | |||
| fk_rails_38a9ac7560 | No | No | INDEX |
| Relationship Name | Relationship Type | Parent Table | Child Table | Card. |
| fk_rails_38a9ac7560 | Non-Identifying | inst_module_versions | odsa_module_progresses | 1:n |
| odsa_module_progresses_inst_book_id_fk | Non-Identifying | inst_books | odsa_module_progresses | 1:n |
| odsa_module_progresses_inst_chapter_module_id_fk | Non-Identifying | inst_chapter_modules | odsa_module_progresses | 1:n |
| odsa_module_progresses_lms_access_id_fk | Non-Identifying | lms_accesses | odsa_module_progresses | 1:n |
| odsa_module_progresses_user_id_fk | Non-Identifying | users | odsa_module_progresses | 1:n |
| Key | Column Name | Datatype | Not Null | Default | Comment |
| PK | id | INT(11) | Yes | ||
| user_id | INT(11) | Yes | |||
| inst_book_id | INT(11) | No | NULL | ||
| inst_section_id | INT(11) | No | NULL | ||
| inst_book_section_exercise_id | INT(11) | No | NULL | ||
| name | VARCHAR(50) | Yes | |||
| description | LONGTEXT | Yes | |||
| action_time | DATETIME | Yes | |||
| uiid | BIGINT(20) | Yes | |||
| browser_family | VARCHAR(20) | Yes | |||
| browser_version | VARCHAR(20) | Yes | |||
| os_family | VARCHAR(50) | Yes | |||
| os_version | VARCHAR(20) | Yes | |||
| device | VARCHAR(50) | Yes | |||
| ip_address | VARCHAR(20) | Yes | |||
| created_at | DATETIME | No | NULL | ||
| updated_at | DATETIME | No | NULL | ||
| inst_course_offering_exercise_id | INT(11) | No | NULL | ||
| inst_chapter_module_id | INT(11) | No | NULL | ||
| inst_module_version_id | INT(11) | No | NULL | ||
| inst_module_section_exercise_id | INT(11) | No | NULL |
| Index Name | Columns | Primary | Unique | Type | Kind | Comment |
| PRIMARY | Yes | No | PRIMARY | |||
| odsa_user_interactions_user_id_fk | No | No | INDEX | |||
| odsa_user_interactions_inst_book_id_fk | No | No | INDEX | |||
| odsa_user_interactions_inst_section_id_fk | No | No | INDEX | |||
| odsa_user_interactions_inst_book_section_exercise_id_fk | No | No | INDEX | |||
| odsa_user_interactions_inst_course_offering_exercise_id_fk | No | No | INDEX | |||
| index_odsa_user_interactions_on_inst_chapter_module | No | No | INDEX | |||
| fk_rails_599b647d17 | No | No | INDEX | |||
| fk_rails_9d3d089a83 | No | No | INDEX |
| Relationship Name | Relationship Type | Parent Table | Child Table | Card. |
| fk_rails_599b647d17 | Non-Identifying | inst_module_versions | odsa_user_interactions | 1:n |
| fk_rails_9d3d089a83 | Non-Identifying | inst_module_section_exercises | odsa_user_interactions | 1:n |
| odsa_user_interactions_inst_book_id_fk | Non-Identifying | inst_books | odsa_user_interactions | 1:n |
| odsa_user_interactions_inst_book_section_exercise_id_fk | Non-Identifying | inst_book_section_exercises | odsa_user_interactions | 1:n |
| odsa_user_interactions_inst_course_offering_exercise_id_fk | Non-Identifying | inst_course_offering_exercises | odsa_user_interactions | 1:n |
| odsa_user_interactions_inst_section_id_fk | Non-Identifying | inst_sections | odsa_user_interactions | 1:n |
| odsa_user_interactions_user_id_fk | Non-Identifying | users | odsa_user_interactions | 1:n |
| Key | Column Name | Datatype | Not Null | Default | Comment |
| PK | id | BIGINT(20) | Yes | ||
| user_id | INT(11) | Yes | |||
| inst_book_id | INT(11) | No | NULL | ||
| inst_section_id | INT(11) | No | NULL | ||
| inst_book_section_exercise_id | INT(11) | No | NULL | ||
| inst_course_offering_exercise_id | INT(11) | No | NULL | ||
| inst_module_id | INT(11) | No | NULL | ||
| inst_chapter_id | INT(11) | No | NULL | ||
| inst_module_version_id | INT(11) | No | NULL | ||
| inst_module_section_exercise_id | INT(11) | No | NULL | ||
| uuid | VARCHAR(50) | Yes | |||
| session_date | VARCHAR(50) | Yes | |||
| total_time | DECIMAL(10,2) | Yes | |||
| sections_time | TEXT | Yes | |||
| created_at | DATETIME | No | NULL | ||
| updated_at | DATETIME | No | NULL |
| Index Name | Columns | Primary | Unique | Type | Kind | Comment |
| PRIMARY | Yes | No | PRIMARY | |||
| index_odsa_user_time_trackings_on_user_id_uuid | No | Yes | UNIQUE | |||
| odsa_user_time_tracking_inst_section_id_fk | No | No | INDEX | |||
| odsa_user_time_tracking_inst_book_section_exercise_id_fk | No | No | INDEX | |||
| odsa_user_time_tracking_inst_module_id_fk | No | No | INDEX | |||
| odsa_user_time_tracking_inst_chapter_id_fk | No | No | INDEX | |||
| odsa_user_time_tracking_inst_course_offering_exercise_id_fk | No | No | INDEX | |||
| odsa_user_time_tracking_inst_module_version_id_fk | No | No | INDEX | |||
| odsa_user_time_tracking_inst_module_section_exercise_id_fk | No | No | INDEX | |||
| index_odsa_user_time_trackings_on_inst_book_id_session_date | No | No | INDEX |
| Relationship Name | Relationship Type | Parent Table | Child Table | Card. |
| odsa_user_time_tracking_inst_book_id_fk | Non-Identifying | inst_books | odsa_user_time_trackings | 1:n |
| odsa_user_time_tracking_inst_book_section_exercise_id_fk | Non-Identifying | inst_book_section_exercises | odsa_user_time_trackings | 1:n |
| odsa_user_time_tracking_inst_chapter_id_fk | Non-Identifying | inst_chapters | odsa_user_time_trackings | 1:n |
| odsa_user_time_tracking_inst_course_offering_exercise_id_fk | Non-Identifying | inst_course_offering_exercises | odsa_user_time_trackings | 1:n |
| odsa_user_time_tracking_inst_module_id_fk | Non-Identifying | inst_modules | odsa_user_time_trackings | 1:n |
| odsa_user_time_tracking_inst_module_section_exercise_id_fk | Non-Identifying | inst_module_section_exercises | odsa_user_time_trackings | 1:n |
| odsa_user_time_tracking_inst_module_version_id_fk | Non-Identifying | inst_module_versions | odsa_user_time_trackings | 1:n |
| odsa_user_time_tracking_inst_section_id_fk | Non-Identifying | inst_sections | odsa_user_time_trackings | 1:n |
| odsa_user_time_tracking_user_id_fk | Non-Identifying | users | odsa_user_time_trackings | 1:n |
| Key | Column Name | Datatype | Not Null | Default | Comment |
| PK | id | INT(11) | Yes | ||
| name | VARCHAR(255) | Yes | |||
| created_at | DATETIME | No | NULL | ||
| updated_at | DATETIME | No | NULL | ||
| abbreviation | VARCHAR(255) | No | NULL | ||
| slug | VARCHAR(255) | Yes |
| Index Name | Columns | Primary | Unique | Type | Kind | Comment |
| PRIMARY | Yes | No | PRIMARY | |||
| index_organizations_on_name | No | Yes | UNIQUE | |||
| index_organizations_on_slug | No | Yes | UNIQUE |
| Relationship Name | Relationship Type | Parent Table | Child Table | Card. |
| courses_organization_id_fk | Non-Identifying | organizations | courses | 1:n |
| lms_instances_organization_id_fk | Non-Identifying | organizations | lms_instances | 1:n |
| Key | Column Name | Datatype | Not Null | Default | Comment |
| PK | id | BIGINT(20) | Yes | ||
| user_id | INT(11) | No | NULL | ||
| frame_name | VARCHAR(255) | No | NULL | ||
| question | INT(11) | No | NULL | ||
| correct | INT(11) | No | NULL | ||
| created_at | DATETIME | Yes | |||
| updated_at | DATETIME | Yes |
| Index Name | Columns | Primary | Unique | Type | Kind | Comment |
| PRIMARY | Yes | No | PRIMARY |
| Key | Column Name | Datatype | Not Null | Default | Comment |
| PK | id | BIGINT(20) | Yes | ||
| user_id | INT(11) | Yes | |||
| exercise_id | INT(11) | Yes | |||
| progress | TEXT | No | NULL | ||
| grade | DECIMAL(5,2) | Yes | |||
| created_at | DATETIME(6) | Yes | |||
| updated_at | DATETIME(6) | Yes |
| Index Name | Columns | Primary | Unique | Type | Kind | Comment |
| PRIMARY | Yes | No | PRIMARY |
| Key | Column Name | Datatype | Not Null | Default | Comment |
| PK | id | INT(11) | Yes | ||
| season | INT(11) | Yes | |||
| starts_on | DATE | Yes | |||
| ends_on | DATE | Yes | |||
| year | INT(11) | Yes | |||
| created_at | DATETIME | No | NULL | ||
| updated_at | DATETIME | No | NULL | ||
| slug | VARCHAR(255) | Yes |
| Index Name | Columns | Primary | Unique | Type | Kind | Comment |
| PRIMARY | Yes | No | PRIMARY | |||
| index_terms_on_slug | No | Yes | UNIQUE | |||
| index_terms_on_starts_on | No | No | INDEX | |||
| index_terms_on_year_and_season | No | No | INDEX |
| Relationship Name | Relationship Type | Parent Table | Child Table | Card. |
| course_offerings_term_id_fk | Non-Identifying | terms | course_offerings | 1:n |
| Key | Column Name | Datatype | Not Null | Default | Comment |
| PK | id | INT(11) | Yes | ||
| name | VARCHAR(255) | No | NULL | ||
| zone | VARCHAR(255) | No | NULL | ||
| display_as | VARCHAR(255) | No | NULL | ||
| created_at | DATETIME | No | NULL | ||
| updated_at | DATETIME | No | NULL |
| Index Name | Columns | Primary | Unique | Type | Kind | Comment |
| PRIMARY | Yes | No | PRIMARY |
| Relationship Name | Relationship Type | Parent Table | Child Table | Card. |
| users_time_zone_id_fk | Non-Identifying | time_zones | users | 1:n |
| Key | Column Name | Datatype | Not Null | Default | Comment |
| PK | id | INT(11) | Yes | ||
| VARCHAR(255) | Yes | '' | |||
| encrypted_password | VARCHAR(255) | Yes | '' | ||
| reset_password_token | VARCHAR(255) | No | NULL | ||
| reset_password_sent_at | DATETIME | No | NULL | ||
| remember_created_at | DATETIME | No | NULL | ||
| sign_in_count | INT(11) | Yes | '0' | ||
| current_sign_in_at | DATETIME | No | NULL | ||
| last_sign_in_at | DATETIME | No | NULL | ||
| current_sign_in_ip | VARCHAR(255) | No | NULL | ||
| last_sign_in_ip | VARCHAR(255) | No | NULL | ||
| confirmation_token | VARCHAR(255) | No | NULL | ||
| confirmed_at | DATETIME | No | NULL | ||
| confirmation_sent_at | DATETIME | No | NULL | ||
| created_at | DATETIME | No | NULL | ||
| updated_at | DATETIME | No | NULL | ||
| first_name | VARCHAR(255) | No | NULL | ||
| last_name | VARCHAR(255) | No | NULL | ||
| global_role_id | INT(11) | Yes | |||
| avatar | VARCHAR(255) | No | NULL | ||
| slug | VARCHAR(255) | Yes | |||
| time_zone_id | INT(11) | No | NULL |
| Index Name | Columns | Primary | Unique | Type | Kind | Comment |
| PRIMARY | Yes | No | PRIMARY | |||
| index_users_on_email | No | Yes | UNIQUE | |||
| index_users_on_slug | No | Yes | UNIQUE | |||
| index_users_on_reset_password_token | No | Yes | UNIQUE | |||
| index_users_on_confirmation_token | No | Yes | UNIQUE | |||
| index_users_on_global_role_id | No | No | INDEX | |||
| index_users_on_time_zone_id | No | No | INDEX |
| Relationship Name | Relationship Type | Parent Table | Child Table | Card. |
| users_global_role_id_fk | Non-Identifying | global_roles | users | 1:n |
| users_time_zone_id_fk | Non-Identifying | time_zones | users | 1:n |
| course_enrollments_user_id_fk | Non-Identifying | users | course_enrollments | 1:n |
| inst_books_user_id_fk | Non-Identifying | users | inst_books | 1:n |
| lms_accesses_user_id_fk | Non-Identifying | users | lms_accesses | 1:n |
| odsa_book_progresses_user_id_fk | Non-Identifying | users | odsa_book_progresses | 1:n |
| odsa_exercise_attempts_user_id_fk | Non-Identifying | users | odsa_exercise_attempts | 1:n |
| odsa_exercise_progresses_user_id_fk | Non-Identifying | users | odsa_exercise_progresses | 1:n |
| odsa_module_progresses_user_id_fk | Non-Identifying | users | odsa_module_progresses | 1:n |
| odsa_user_interactions_user_id_fk | Non-Identifying | users | odsa_user_interactions | 1:n |
| odsa_user_time_tracking_user_id_fk | Non-Identifying | users | odsa_user_time_trackings | 1:n |