@startuml hide circle skinparam linetype ortho title Course surveys database schema entity "Entity" as entity { All models extend this base Entity -- *created_at : datetime *updated_at : datetime } package "Academic logistics" { entity "Semester" as sem { *year : string required=True *year_section : string required=True } entity "CourseRelation" as CourseRelation { *title : string *description : string *course : Many-to-Many with course } entity "Course" as course { *course_id : string <PK> Custom generated ID *Department : Department <FK> -- *Course Name : <String> *Course Number : <String> Example: (16A, 169A, 170, 294-150) } entity "Instructor" as instructor { *instructor_id : string Custom generated ID *is_private : boolean default=instructor_type in <default_private> *department(s) : Many-to-Many with Instructor -- *first_name : string *middle_name : string *last_name : string *title : string -- *picture : ImageField -- *phone_number : string / phone number field *email : string *webpage : string -- *office : string *description : string *notes : string For backend notes for Instructor } entity "Department" as department { *name : string required=True *abbr : string required=True } entity "CourseSemester" as courseSemester { *course : Course <<FK>> required=True *semester : Semester <<FK>> required=True } entity "CourseSemesterSection" as courseSemesterSection { *courseSemester : courseSemester <<FK>> *instructors : Many-to-Many with Instructor via InstructorRole required=True *section_type : string required=True default=section_type == "LEC" *section_number : string required=True } entity "Instructor and Role" as InstructorRole { *instructor : Instructor <<FK>> *courseSemesterSection : courseSemesterSection <<FK>> *role : Role <<FK>> *hidden : bool *comment : string } entity "Role" as role { Example: Role of "TA" using Index as Foreign Key -- *role_name : string *description : string } sem -d-{ courseSemester CourseRelation -d-{ course course -r-{ courseSemester department -r-{ instructor courseSemester -r-{ courseSemesterSection department -r-{ course InstructorRole -u-{ courseSemesterSection instructor -r-{ InstructorRole role -l-{ InstructorRole } package "Survey logistics" { entity "Survey" as survey { *courseSemesterSection : courseSemesterSection <<FK>> required=True -- *num_students : int required=True *response_count : int required=True *is_private : boolean default=instructor_type in <default_private> } entity "Question" as question { *question_id : string Custom generated ID } entity "Rating" as rating { *survey : Survey <<FK>> required=True *question : Question <<FK>> required=True -- *question_text : string required=True *inverted : boolean default=False *range_max : int default=7 *rating : float required=True } survey -down-{ rating rating }-right- question } courseSemesterSection -right-> survey #blue @enduml
Decode URL
Submit
amiga
aws-orange
black-knight
bluegray
blueprint
cerulean-outline
cerulean
crt-amber
crt-green
cyborg-outline
cyborg
hacker
lightgray
mars
materia-outline
materia
metal
mimeograph
minty
plain
reddress-darkblue
reddress-darkgreen
reddress-darkorange
reddress-darkred
reddress-lightblue
reddress-lightgreen
reddress-lightorange
reddress-lightred
sandstone
silver
sketchy-outline
sketchy
spacelab
spacelab-white
superhero-outline
superhero
toy
united
vibrant
🎉 Discover the future PlantUML Web Editor! 🚀
PNG
SVG
ASCII Art