Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Next »

Overview

SSP "external" tables/views do not enforce referential integrity, but loose, logical dependencies do exist between them. In some cases, even when such a logical dependency exists, it may not necessarily be the case that the depended-on record actually exist in order for the system to function. So producing a completely accurate dependency graph would be a complex effort and likely frequently subject to change as the application evolves. But some deployers have requested guidance on a recommended order in which to update these tables to ensure the complete dataset is an internally consistent as possible at any given time. This document provides such a recommendation. Keep in mind of course that this is just that - a recommendation. Not all the tables listed are required and other orderings might be perfectly valid.

For inserts the ordering is from top-to-bottom, i.e. insert into tables in the order listed. Updates would typically be in the same order as inserts, but ordering is generally less of an issue. Ordering is reversed for deletes (which should be rare). I.e. delete from bottom to top.

This document also provides a "primary use" column which tries to indicate the SSP subsystem that makes heaviest use of the data in any given table. This is intended to help provide prioritization guidance at an implementation level, most dependency consideration aside. E.g., while external_faculty_course may be listed ahead of external_course, but these tables have no even logical dependency. So if your deployment is more interested in the MAP subsystem than in the Early Alert subsystem, you needn't populate external_faculty_course before populating external_course.

2.0.0-b3

TableLogical DependenciesPrimary Use
external_term

 

System
external_program MAP
external_department MAP
external_division MAP
external_personexternal_term, external_department, external_personSystem
external_registration_status_by_termexternal_term, external_personMain
external_faculty_courseexternal_term, external_personEarly Alert
external_faculty_course_rosterexternal_term, external_person, external_faculty_course_rosterEarly Alert
external_student_academic_programexternal_program, external_personMain
external_student_testexternal_personMain
external_student_transcriptexternal_personMain, MAP
external_student_transcript_course

external_person

(Note that while this table refers to the same notion of a "course" as external_faculty_course and should use the same course and section identifiers, there isn't really even a logical dependency between the two tables because external_faculty_course should only contain "early alertable" courses whereas a student transcript should list all transcripted courses for any given student.)

MAP
external_student_transcript_termexternal_term, external_personMain
external_student_financial_aidexternal_personMain, MAP
external_course

external_department, external_division

(You might think this table should precede external_student_transcript_course in a sort of master-detail relationship. But external_student_transcript_course uses a less strict definition of course and the application does not use external_course to provide additional context when rendering external_student_transcript_course records. There is a relationship between these two tables, but if anything it flows the other direction, i.e. at the app layer external_course records are checked against external_student_transcript_course to determine if a planned course has already been taken.)

MAP
external_course_termexternal_term, external_personMAP
external_course_requisiteexternal_courseMAP
external_course_program external_course, external_program MAP
external_course_tagexternal_course
MAP
external_person_planning_statusexternal_personMAP
external_person_noteexternal_personMAP
  • No labels