Course/Registration Structure

This diagram shows the fundamental relationship of the most important tables underlying a course launch.

erDiagram
    COURSE }o--|| "COURSE_PROVIDER/SCORM Cloud Application" :"Multiple Courses Per Application"
    COURSE ||--o{ "REGISTRATION" :"Multiple Registrations"
    REGISTRATION ||--o{ "LAUNCH History": ""
    REALM USER ||--|| "LAUNCH History": ""
    REALM ||--o{ "COURSE_PROVIDER/SCORM Cloud Application" :"A Realm can have multiple SCORM Cloud Apps"
    REALM ||--o{ "REALM USER" :""
    REGISTRATION ||--|| "REALM USER" :""
    USER ||--o{ "REALM USER" : "A user can be in multiple Bright realms"
    "USER" ||--o{ "API KEY" : ""

API Keys can be bound to a "realm" or "course provider" when created.

erDiagram
    COURSE {
      string type "'ScormCloudApp'"
      uuid course_guid 
      string title
    }

    USER {
      string email_address
    }
erDiagram
    REALM {
      string name
      uuid realm_guid
      string realm_secret_key
    }

    COURSE_PROVIDER {
      string sc_app_id "SCORM Cloud APP ID"
      string sc_secret_key "SCORM Cloud Secret Key"
    }
erDiagram
    REGISTRATION {
      uuid course_guid
      string learner_id "In most cases, email address" 
          id realm_user_id FK "Bright internal ID" 
      id course_id FK "Bright internal ID"
      string complete "complete|incomplete|unknown"
      string success "passed|failed|unknown"
      float score 
    }