Skip to content

Example Schema

The example schema below contains data for a university enrollment system. Information about students, departments, courses, etc. are organized in multiple tables.

Warning: Empty primary keys, such as in the CurrentTerm table, are not yet supported by DataJoint. This feature will become available in a future release. See Issue #113 for more information.

@schema
class Student (dj.Manual):
definition = """
student_id      : int unsigned # university ID
---
first_name      : varchar(40)
last_name       : varchar(40)
sex             : enum('F', 'M', 'U')
date_of_birth   : date
home_address    : varchar(200) # street address
home_city       : varchar(30)
home_state      : char(2) # two-letter abbreviation
home_zipcode    : char(10)
home_phone      : varchar(14)
"""

@schema
class Department (dj.Manual):
definition = """
dept         : char(6) # abbreviated department name, e.g. BIOL
---
dept_name    : varchar(200) # full department name
dept_address : varchar(200) # mailing address
dept_phone   : varchar(14)
"""

@schema
class StudentMajor (dj.Manual):
definition = """
-> Student
---
-> Department
declare_date :  date # when student declared her major
"""

@schema
class Course (dj.Manual):
definition = """
-> Department
course      : int unsigned # course number, e.g. 1010
---
course_name : varchar(200) # e.g. "Cell Biology"
credits     : decimal(3,1) # number of credits earned by completing the course
"""

@schema
class Term (dj.Manual):
definition = """
term_year : year
term      : enum('Spring', 'Summer', 'Fall')
"""

@schema
class Section (dj.Manual):
definition = """
-> Course
-> Term
section : char(1)
---
room  :  varchar(12) # building and room code
"""

@schema
class CurrentTerm (dj.Manual):
definition = """
---
-> Term
"""

@schema
class Enroll (dj.Manual):
definition = """
-> Section
-> Student
"""

@schema
class LetterGrade (dj.Manual):
definition = """
grade : char(2)
---
points : decimal(3,2)
"""

@schema
class Grade (dj.Manual):
definition = """
-> Enroll
---
-> LetterGrade
"""

Example schema diagram

University example schema

Example schema for a university database. Tables contain data on students, departments, courses, etc.