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¶
Example schema for a university database. Tables contain data on students, departments, courses, etc.