| public._sqlx_migrations |
6 |
|
BASE TABLE |
| public.application_task_default_language_models |
7 |
Info about the model and context utilization for LLMs to be used in
application tasks, like cleaning course material content and generating
chatbot suggested messages. |
BASE TABLE |
| public.block_feedback |
8 |
Used to link feedback to the related blocks. |
BASE TABLE |
| public.certificate_configuration_to_requirements |
6 |
A join table that can be used to figure out what course modules and
course instances are required to be completed to be eligible for a
specific certificate. To find out all requirements one will need to
query for all rows that match a certificate configuration id. Note that
this is the correct table if you want a certificate to relate to a
course or to courses because all courses have course modules and course
instances. |
BASE TABLE |
| public.certificate_configurations |
31 |
Configures how a certificate should be rendered. Can be used to
change certificate background, certificate overlay, font sizes, font
positions, etc. |
BASE TABLE |
| public.certificate_fonts |
7 |
When renderding certificates, we will load all the fonts from this
table to be available during rendering. Fonts that are not in this table
will not be rendered. |
BASE TABLE |
| public.chapter_lock_action_logs |
9 |
Stores teacher-initiated chapter lock/unlock actions for
students. |
BASE TABLE |
| public.chapters |
14 |
Chapters divide pages of a course. They also have a front page. |
BASE TABLE |
| public.chatbot_configurations |
27 |
Tells how a chatbot on a course should behave. |
BASE TABLE |
| public.chatbot_configurations_models |
8 |
Stores Azure OpenAI LLMs that have been deployed in Azure AI. The
chatbot_configurations table references this table to indicate which LLM
the configuration uses. |
BASE TABLE |
| public.chatbot_conversation_message_messages |
11 |
Contains text messages made in a chatbot conversation. |
BASE TABLE |
| public.chatbot_conversation_message_reasoning |
8 |
Contains reasoning items generated by a chatbot in a
conversation. |
BASE TABLE |
| public.chatbot_conversation_message_tool_calls |
10 |
Contains tool call outputs in a chatbot conversation. These can be
outputs from our function tools or the Azure AI Search tool. Intended
for the chatbot. |
BASE TABLE |
| public.chatbot_conversation_message_tool_outputs |
9 |
The results from a chatbot tool call. Associated one-to-one with
chatbot_conversation_messages row with the role “tool”. |
BASE TABLE |
| public.chatbot_conversation_messages |
6 |
The messages in a conversation between a student and a chatbot. |
BASE TABLE |
| public.chatbot_conversation_messages_citations |
11 |
Stores citations associated with chatbot conversation messages.
Multiple citations can be associated with a single message. Citations
may be returned in a conversation if the chatbot configuration
use_azure_search is true. |
BASE TABLE |
| public.chatbot_conversation_suggested_messages |
6 |
Messages that the user is suggested to send to the chatbot next. New
messages are generated after every chatbot message |
BASE TABLE |
| public.chatbot_conversations |
7 |
Grops the messages in a conversation between a student and a
chatbot. |
BASE TABLE |
| public.chatbot_page_sync_statuses |
10 |
Tells the status of whether the content of a page has been
synchronized with the chatbot backend. |
BASE TABLE |
| public.cheater_thresholds |
6 |
This table stores thresholds set by the instructor, representing the
maximum score or duration a student can surpass before being suspected
of cheating cheaters. |
BASE TABLE |
| public.cheating_confirmation_grade_snapshots |
7 |
Pre-confirmation grade snapshots for course module completions,
allowing a confirmed cheating suspicion to be undone by restoring the
completion’s original passed/grade. |
BASE TABLE |
| public.code_giveaway_codes |
8 |
A code that is available in a code giveaway. A user can only receive
one code from a giveaway. |
BASE TABLE |
| public.code_giveaways |
9 |
With a code giveaway you can create a list of codes that can be
distributed to students that complete a course module. To use the
giveaway, the teacher needs to add a block to the course materil for the
giveaway. |
BASE TABLE |
| public.course_audiences |
6 |
The audience course is meant for |
BASE TABLE |
| public.course_background_question_answers |
7 |
An answer to a background question. A single user can have only one
answer to one question. |
BASE TABLE |
| public.course_background_questions |
8 |
A teacher-defined extra question that gets asked from the students
when they start a course. The question can be either for all students in
a course or it can be only for the students that selected a specific
course instance. |
BASE TABLE |
| public.course_credit_registration_consents |
10 |
Per (user, course) consent to register completions into the study
registry. One consent covers every module of the course. No row means
never asked, which is what makes the course-start dialog appear;
consent_given = false means asked and declined, which must not re-ask on
every page load. |
BASE TABLE |
| public.course_custom_privacy_policy_checkbox_texts |
7 |
Used to set the privacy policy checkbox texts in the course settings
dialog when a course has a different privacy policy than all the other
courses. (e.g., the Elements of AI course) |
BASE TABLE |
| public.course_designer_plan_events |
10 |
Append-only event log for reconstructing a design plan timeline and
auditing changes. |
BASE TABLE |
| public.course_designer_plan_members |
6 |
Users who can access and collaborate on a MOOC course design
plan. |
BASE TABLE |
| public.course_designer_plan_stage_tasks |
13 |
Tasks belonging to a specific stage in a MOOC course design
plan. |
BASE TABLE |
| public.course_designer_plan_stages |
12 |
Per-plan stage schedule and actual progress data for the fixed MOOC
course design stages. |
BASE TABLE |
| public.course_designer_plans |
9 |
A collaborative plan used to design a MOOC course over multiple
months. |
BASE TABLE |
| public.course_exams |
5 |
Links exams to courses. |
BASE TABLE |
| public.course_instance_enrollments |
6 |
Tells in which of the courses many instances certain user has
enrolled to. The relationship defines to which instance we should
associate the student’s submissions and scores. |
BASE TABLE |
| public.course_instances |
12 |
Allows teachers to use a course multiple times with different
points, submissions, and enrollments. |
BASE TABLE |
| public.course_language_groups |
5 |
Group of courses that have the same content but in different
languages. |
BASE TABLE |
| public.course_module_completion_registered_to_study_registries |
10 |
Completed course module completion registrations to study
registries. |
BASE TABLE |
| public.course_module_completions |
17 |
Internal student completions for course modules. |
BASE TABLE |
| public.course_module_completions_backup |
18 |
|
BASE TABLE |
| public.course_module_suotar_configurations |
14 |
Per-module Suotar credit registration configuration, the per-module
pause, and the config-validation phase’s last verdict. At most one live
row per course module; no row means the module is not configured, which
is not an error. The enable_credit_registration_via_suotar rollout
switch stays on course_modules instead, because it is read on the
per-user my-studies path for every logged-in user. |
BASE TABLE |
| public.course_module_suotar_realisations |
15 |
Which Sisu course unit realisations a module maps to, one per term.
Enrolment discovery polls the active ones. The last-run counters give
teachers and admins feedback that the configuration is right without
reading logs. |
BASE TABLE |
| public.course_modules |
18 |
A module is a collection of chapters which can be used to categorise
the chapters of a course. |
BASE TABLE |
| public.course_page_markdown_content |
7 |
Course page content that has been converted from Gutenberg blocks to
Markdown format with an LLM. |
BASE TABLE |
| public.course_prerequisites |
6 |
Prerequisites are preliminary knowledge that is assumed for the
student to have for a course |
BASE TABLE |
| public.course_specific_consent_form_answers |
8 |
Stores information about students answers to questions in consent
forms |
BASE TABLE |
| public.course_specific_consent_form_questions |
7 |
Stores a custom research consent questions for a specific
course |
BASE TABLE |
| public.course_specific_research_consent_forms |
6 |
Stores a custom research consent forms for a specific course |
BASE TABLE |
| public.courses |
29 |
Collection of course materials and exercises that define a online
course. |
BASE TABLE |
| public.credit_registration_account_linking_emails |
11 |
One row per account-linking mail we queued, keyed on the Sisu person
id plus the recipient address. Prevents mailing the same Sisu person
twice for the same course and backs the per-person rate caps. |
BASE TABLE |
| public.credit_registration_admin_actions |
16 |
One row per manual action on the credit registration pipeline,
written in the same transaction as the effect. Separate from
credit_registration_events because this is a global, actor-ordered read
with a before/after pair and targets that are not registrations at all:
a phase, a course module, a student-number link. |
BASE TABLE |
| public.credit_registration_daily_snapshots |
9 |
Daily queue depth per ledger state. The ledger holds current state
only, so a row that passed through a state in an hour leaves no depth
trace and the dashboard trend charts have nothing to read. Aggregates
only, deliberately: anything per-person belongs in the ledger. Roughly
sixteen rows a day, so no retention policy is needed. |
BASE TABLE |
| public.credit_registration_events |
13 |
Append-only audit trail for the credit registration ledger. There is
no retention sweep here, so anything stored survives the 90-day
suotar_api_calls window; every Suotar payload written to details is
scrubbed at write time, but only best-effort — email addresses,
student-number-shaped digit runs, access tokens and the known person
fields are removed, while a personal name quoted in a free-text error
message is deliberately left in place because the study registry holds
it anyway. Treat this table as holding personal data, not as a
guaranteed personal-data-free store. |
BASE TABLE |
| public.credit_registration_phase_state |
19 |
One row per pipeline phase, not per worker process. Phases are what
an operator reasons about, what the dashboard lists and what the system
tests tick individually. Rows are seeded by migration and thereafter
only ever updated. |
BASE TABLE |
| public.credit_registrations |
43 |
The credit registration ledger: one row per attempt at registering
one course module completion into the study registry via Suotar. Every
state write goes through credit_registrations::transition, which stamps
state_entered_at and appends an event row in the same transaction;
nothing else may update state. |
BASE TABLE |
| public.email_deliveries |
14 |
An email delivery table, which contains info about if an email has
been sent to an user or if it failed |
BASE TABLE |
| public.email_delivery_errors |
11 |
Log of individual email delivery failures. |
BASE TABLE |
| public.email_templates |
11 |
An email template table, which contains the email subject and
content written in the Gutenberg Editor. Template is general if
course_instance_id is NULL, or specific to a course instance if
course_instance_id is set. Supports adding exercise points/completions
threshold templates for course instances. |
BASE TABLE |
| public.email_verification_tokens |
10 |
Stores email verification tokens and codes for two-step
authentication. Expired records are automatically filtered in queries
and randomly cleaned up (1 in 10 chance) to prevent table bloat. |
BASE TABLE |
| public.ended_processed_exams |
4 |
Helper table for listing ended exams that have been processed. |
BASE TABLE |
| public.error_occurrences |
10 |
One row per individual error report. References error_variants for
exact deduplication. Rows expire after 2 months. |
BASE TABLE |
| public.error_variants |
15 |
One row per exact stored error variant, identified by (service,
exact_error_identifier). Tracks aggregated stats across all
occurrences. |
BASE TABLE |
| public.exam_enrollments |
9 |
Stores which users are enrolled in which exams and related
data. |
BASE TABLE |
| public.exams |
13 |
An exam is a special set of exercises with a common deadline. |
BASE TABLE |
| public.exercise_language_groups |
5 |
Used to figure out which exercises are the same in different course
language versions. Each page belongs to one language group though the
exercises.exercise_language_group_id column. If two exercises have the
same exercise language group, they are the same exercise but in
different languages. For finding course language versions itself, please
see the table course_language_groups. This table is not used for
exercises not related to courses, like exam exercises. |
BASE TABLE |
| public.exercise_repositories |
11 |
A git repository that contains exercises. |
BASE TABLE |
| public.exercise_reset_logs |
10 |
Stores logs of exercise resets, tracking who reset which exercises
for whom and when. |
BASE TABLE |
| public.exercise_service_info |
10 |
Information that exercise service has reported. Contains for example
endpoints where the functionalities of this service can be
accessed. |
BASE TABLE |
| public.exercise_services |
9 |
Implements an exercise type. Tasks and user interfaces unique to the
exercise type are delegated to these services. |
BASE TABLE |
| public.exercise_slide_submissions |
11 |
Table that groups together all individual task submissions for a
single exercise slise submission. |
BASE TABLE |
| public.exercise_slides |
6 |
Ordered or randomly selected part of an exercise. A slide can
contain multiple individual tasks that are shown to the student at once
and submitted at the same time. |
BASE TABLE |
| public.exercise_task_gradings |
18 |
Stores the result of grading done by an exercise service. Either
created when a user submits an answer or when we’re regrading answers.
Feedback is stored either in textual form (feedback_text) or in a
general form (feedback_json). |
BASE TABLE |
| public.exercise_task_regrading_submissions |
8 |
Join table that tells which submissions belong in one regrading
operation. |
BASE TABLE |
| public.exercise_task_submissions |
10 |
A returned exercise task. The system is oblivious to the structure
of the submission. Does not contain anything related to points or
grading. |
BASE TABLE |
| public.exercise_tasks |
12 |
Contains the specific assignment and the activity which the students
complete. Assignment text has the same format as pages content.Table
also contains both private and public specs. Public spec is shown to the
student to display an exercise and private spec specifies how answers
should be checked for correctness and is not revealed to the
student.. |
BASE TABLE |
| public.exercises |
20 |
Exercise is an collection of exercise tasks. The exercise itself
does not contain any information on what kind of activities it contains
– that information lives inside the tasks. This enables us for example
to combine different exercise types or to provide different assignments
to different students. |
BASE TABLE |
| public.feedback |
11 |
Users can send feedback to help improve the course material.
Feedback consists of written text from the user. |
BASE TABLE |
| public.file_uploads |
8 |
Stores metadata regarding files uploaded to the server by users or
exercise services. |
BASE TABLE |
| public.flagged_answers |
9 |
Used to keep track of answers that has been flagged in peer
review |
BASE TABLE |
| public.generated_certificates |
8 |
A certificate generated for a student to provide proof that they
have completed a given course module. |
BASE TABLE |
| public.glossary |
7 |
A list of terms and their explanations. |
BASE TABLE |
| public.join_code_uses |
6 |
This table is used to check if user has access to a course that is
only joinable by a join code. The join code is located in courses
table |
BASE TABLE |
| public.mailchimp_course_tags |
8 |
Stores a custom Mailchimp tag related to a course_language_group.
When a new row is added, the system automatically creates a
corresponding tag in Mailchimp. This tag is assigned to all students who
have given marketing consent for the associated course. |
BASE TABLE |
| public.mailchimp_language_code_mappings |
7 |
Maps old course language codes to Mailchimp language codes for a
given mailing list access token. |
BASE TABLE |
| public.marketing_mailing_list_access_tokens |
9 |
This table is used to keep a record of marketing mailing lists
access tokens for each course language group |
BASE TABLE |
| public.material_references |
7 |
References to scientific publications of which teachers use in their
course materials to refer to. |
BASE TABLE |
| public.oauth_access_tokens |
12 |
Access tokens (opaque, hashed at rest). May be Bearer or
DPoP-bound. |
BASE TABLE |
| public.oauth_auth_codes |
15 |
Temporary authorization codes issued to clients after user consent
(pending grants). |
BASE TABLE |
| public.oauth_clients |
18 |
Registered OAuth 2.x clients (public and confidential). |
BASE TABLE |
| public.oauth_dpop_proofs |
7 |
Replay protection store for DPoP proofs. Tracks used jti values to
prevent replay. |
BASE TABLE |
| public.oauth_refresh_tokens |
13 |
Refresh tokens (opaque, hashed). May be sender-constrained by
DPoP. |
BASE TABLE |
| public.oauth_user_client_scopes |
5 |
Stores remembered consent: which scopes a user has granted to a
client. |
BASE TABLE |
| public.offered_answers_to_peer_review_temporary |
6 |
Stores the answer that was offered to a user to be peer reviewed.
Used to make sure the user is likely to get the same answer to review if
they reload their browser. All entries are cleaned from here after 1
hour. Also, the user will be given a different answer to review if the
answer stored here no longer needs peer review. |
BASE TABLE |
| public.open_university_product_access_tokens |
13 |
Access tokens used to build working Sisu enrolment links for open
university products. The last good token is kept when a refresh fails on
purpose: a link that works with a slightly stale token beats a broken
page. |
BASE TABLE |
| public.open_university_registration_links |
5 |
Table for active completion registration links. Completion links
change over time, so they need to be updated occasionally. |
BASE TABLE |
| public.organizations |
9 |
A unit that organizes and manages courses e.g. University of
Helsinki, Department of Computer Science. |
BASE TABLE |
| public.other_domain_to_course_redirections |
6 |
Allows to redirect other domains than the site’s main domain to
specific courses. For example, For example
https://example-course.mooc.fi could redirect one to
https://courses.mooc.fi/org/uh-cs/courses/example-course. |
BASE TABLE |
| public.page_audio_files |
6 |
An audio file can be played on a course material page. This table
stores data regarding files uploaded to any page by teachers. |
BASE TABLE |
| public.page_history |
10 |
Contains all past and current revisions of each page’s content. |
BASE TABLE |
| public.page_language_groups |
5 |
Used to figure out which pages are the same in different course
language versions. Each page belongs to one language group though the
pages.page_language_group_id column. If two pages have the same page
language group, they are the same page but in different languages. For
finding course language versions itself, please see the table
course_language_groups. This table is not used for pages not related to
courses, like exam pages. |
BASE TABLE |
| public.page_visit_datum |
21 |
An anonymous piece of data used to count the number of visitors that
has viewed a page. |
BASE TABLE |
| public.page_visit_datum_daily_visit_hashing_keys |
5 |
Stores daily rotated keys used for hashing the anonymous identifiers
in page_visit_datum. The key for the day is permanently deleted the next
day. |
BASE TABLE |
| public.page_visit_datum_summary_by_courses |
14 |
Holds an aggregate of page view stats for a whole course for a given
day. Can be also used to count all visitors to a course if you sum
visits from all combinations of columns (including null values). |
BASE TABLE |
| public.page_visit_datum_summary_by_courses_countries |
9 |
Holds an aggregate of page view stats for a course and country for a
given day. If someone visits any page on a course, they will be counted
in this stat. Can be also used to count all visitors to a course if you
sum visits from all countries. |
BASE TABLE |
| public.page_visit_datum_summary_by_courses_device_types |
12 |
Holds an aggregate of page view stats for a course and differnet
types of devices for a given day. For example, this table can be used to
figure out what browsers people are using on the courses usually. |
BASE TABLE |
| public.page_visit_datum_summary_by_pages |
9 |
Holds an aggregate of page view stats for a given page for a given
day. Can be also used to count all visitors to a page if you sum visits
from all combinations of columns (including null values). |
BASE TABLE |
| public.pages |
17 |
A web page that either contains course material or information about
a course. The content of the page is stored in the content field as as
an array of blocks that have to be rendered before showing to users.
Each page has a unique URL which can be customized if necessary. |
BASE TABLE |
| public.partners_blocks |
6 |
A partners block is a custom content block displayed across all
pages of a course, positioned directly above the site footer. This block
showcases partner logos and links, providing easy access to relevant
partner sites. The partners_blocks table stores the content data for
this block. Content is created and managed through the Gutenberg
Editor. |
BASE TABLE |
| public.password_reset_tokens |
8 |
Stores one-time password reset tokens with expiration and usage
tracking. |
BASE TABLE |
| public.peer_or_self_review_configs |
14 |
Collection of settings and peer review questions that users have to
answer to evaluate each others’ answers. |
BASE TABLE |
| public.peer_or_self_review_question_submissions |
8 |
Submission for an individual question of a peer review. |
BASE TABLE |
| public.peer_or_self_review_questions |
10 |
Question that is a part of a peer review. |
BASE TABLE |
| public.peer_or_self_review_submissions |
9 |
User made peer review submissions. |
BASE TABLE |
| public.peer_review_queue_entries |
11 |
Table for queueing up for peer reviews. Once user has given enough
peer reviews, they will get added to this queue where additional peer
reviews given will increase their own priority of receiving peer
reviews. |
BASE TABLE |
| public.pending_roles |
9 |
A role that will be added for a user once they login to the system.
Limited to course and course instance roles for security reasons |
BASE TABLE |
| public.playground_examples |
8 |
|
BASE TABLE |
| public.privacy_links |
7 |
This table stores custom privacy links for specific courses. By
default, a generic privacy link is displayed in the website footer, but
adding rows to this table allows overriding the default link with
course-specific privacy URLs. |
BASE TABLE |
| public.proposed_block_edits |
10 |
A suggestion to change the contents of a single block, part of some
set of proposed edits to a page. |
BASE TABLE |
| public.proposed_page_edits |
8 |
Concrete suggestions to improve the contents of a single course
material page sent in by students, which can be automatically applied.
Consists of one or more edits to individual course material blocks. |
BASE TABLE |
| public.regradings |
10 |
A collection of submissions that will be graded again in the
background. Created either by request from teachers or when we have
edited exercise task specifications. |
BASE TABLE |
| public.rejected_exercise_slide_submissions |
9 |
If an exercise slide submission is rejected, the submission is
stored here. Rejections happen usually when there is some bug in the
exercise service. This data if used for diagnosing problems. |
BASE TABLE |
| public.rejected_exercise_task_submissions |
6 |
If an exercise task submission is rejected, the submission is stored
here. Rejections happen usually when there is some bug in the exercise
service. This data if used for diagnosing problems. |
BASE TABLE |
| public.repository_exercises |
9 |
An exercise that corresponds to an exercise in a git
repository. |
BASE TABLE |
| public.roles |
11 |
Gives users permissions to perform actions in the system. Roles can
also be related to courses and organizations so that each organization
and course can have its specialized roles. If course_id is defined, the
role is related to a course, if organization_id is defined and course_id
is not defined, the role is related to an organization. Otherwise the
role is global. |
BASE TABLE |
| public.student_countries |
7 |
This table stores the country of each student in a course. |
BASE TABLE |
| public.student_number_verification_tokens |
14 |
One-click links mailed to the address Sisu holds for a person, to
bind a student number to whichever courses.mooc.fi account opens the
link while logged in. Deliberately not bound to an account at creation
time: the two addresses routinely differ, which is the entire reason
this flow exists. |
BASE TABLE |
| public.study_registry_registrars |
6 |
Authorized third parties that can access course module completions
for study registration purposes. |
BASE TABLE |
| public.suotar_api_calls |
18 |
One row per HTTP call to Suotar, per batch rather than per item.
Gives latency percentiles and error rate by endpoint without adding a
metrics system. Retention is 90 days and the stored bodies are scrubbed;
both, not either. |
BASE TABLE |
| public.suspected_cheaters |
10 |
Contains a student that are suspected of cheating because they meet
the cheating requirement (i.e. score > threshold && duration
> average_duration). |
BASE TABLE |
| public.teacher_grading_decisions |
10 |
Keeps track of teacher decisions regarding answers with notice if is
suspected of plagiarism. Detailed information on the answer can be found
from user_exercise_state |
BASE TABLE |
| public.url_redirections |
7 |
A url redirection is typically created when a page is moved. The
redirection will be used to redirect old links to the new location. If
there’s a conflict with a page url and a redirection, the page will win
the conflict. |
BASE TABLE |
| public.user_ai_usage_notice_acknowledgements |
6 |
Records that a user has read and agreed to the AI-usage /
academic-integrity notice for a course language group. One
acknowledgement per user per course language group, so accepting the
notice on one language version covers all language versions. |
BASE TABLE |
| public.user_chapter_locking_statuses |
8 |
Tracks chapter locking statuses for users. Status “unlocked” means
student can work on exercises. Status “completed_and_locked” means
chapter is done and exercises are locked again. Status
“not_unlocked_yet” means chapter is locked because previous chapters are
not completed. |
BASE TABLE |
| public.user_course_exercise_service_variables |
10 |
A variable is a record that an exercise service can save for a
specific user that will be available in all the exercises that use the
same exercise service in the future. An exercise service could use this
for example to remember some data that user has inputted later on – for
example it could remember the user’s name or it could remember a link to
a picture that the user has uploaded. |
BASE TABLE |
| public.user_course_settings |
8 |
User setting for a language version group of courses. |
BASE TABLE |
| public.user_details |
13 |
Contains the details of user accounts such as their email, names,
etc. It is not possible to soft delete these records – only hard deletes
are supported in this table. |
BASE TABLE |
| public.user_email_codes |
10 |
Single-use codes emailed to a user to prove they can read their own
mailbox before an action: the administrator login second factor, account
deletion, and email address ownership verification. At most one live
code per user per purpose; requesting a new one retires the old. |
BASE TABLE |
| public.user_exercise_slide_states |
8 |
Part of user a exercise state, keeps track of the state of a single
exercise slide. |
BASE TABLE |
| public.user_exercise_slide_states_copy |
8 |
|
BASE TABLE |
| public.user_exercise_states |
13 |
Keeps track of state related to a user and to an exercise. Each
course instance run has their own entries in the table. It is the source
of truth for activity status, points etc. |
BASE TABLE |
| public.user_exercise_states_copy |
13 |
|
BASE TABLE |
| public.user_exercise_task_states |
7 |
Part of user a exercise state, keeps track of the state of a single
exercise task. |
BASE TABLE |
| public.user_exercise_task_states_copy |
7 |
|
BASE TABLE |
| public.user_marketing_consents |
11 |
This table is used to keep a record if a user has given a marketing
consent to a course |
BASE TABLE |
| public.user_passwords |
5 |
This table is used to keep a record of the users password |
BASE TABLE |
| public.user_research_consents |
6 |
Stores information whether a student has consented to participate on
research done on courses |
BASE TABLE |
| public.users |
6 |
Either students, teachers or staff. |
BASE TABLE |
| public.verified_student_numbers |
17 |
Student numbers proven to belong to a courses.mooc.fi account.
Global per account: one live row per user, one per student number and
one per Sisu person id. Relinking soft-deletes the old row and inserts a
new one; student_number is never updated in place because the old value
is audit-relevant. |
BASE TABLE |