Core Entity Tables – Data Definition Language (DDL)
UniversityDataHub example for Lion State University
CREATE TABLE dim_course (
course_id UNIQUEIDENTIFIER PRIMARY KEY,
course_code VARCHAR(50) NOT NULL,
course_title VARCHAR(255) NOT NULL,
course_level_type_id INT NOT NULL,
department_id UNIQUEIDENTIFIER NOT NULL,
update_date DATETIME NOT NULL DEFAULT GETDATE(),
FOREIGN KEY (course_level_type_id) REFERENCES dim_course_level_type(course_level_type_id),
FOREIGN KEY (department_id) REFERENCES dim_department(department_id)
);
CREATE TABLE dim_course_section (
course_section_id UNIQUEIDENTIFIER PRIMARY KEY,
course_id UNIQUEIDENTIFIER NOT NULL,
term_id UNIQUEIDENTIFIER NOT NULL,
section_number VARCHAR(10),
update_date DATETIME NOT NULL DEFAULT GETDATE(),
FOREIGN KEY (course_id) REFERENCES dim_course(course_id),
FOREIGN KEY (term_id) REFERENCES dim_term(term_id)
);
CREATE TABLE dim_department (
department_id UNIQUEIDENTIFIER PRIMARY KEY,
department_name VARCHAR(255) NOT NULL,
update_date DATETIME NOT NULL DEFAULT GETDATE()
);
CREATE TABLE dim_faculty (
faculty_id UNIQUEIDENTIFIER PRIMARY KEY,
first_name VARCHAR(100) NOT NULL,
middle_name VARCHAR(100),
last_name VARCHAR(100) NOT NULL,
email VARCHAR(255),
phone VARCHAR(50),
update_date DATETIME NOT NULL DEFAULT GETDATE()
);
CREATE TABLE dim_major (
major_id UNIQUEIDENTIFIER PRIMARY KEY,
major_name VARCHAR(255) NOT NULL,
program_id UNIQUEIDENTIFIER NOT NULL,
update_date DATETIME NOT NULL DEFAULT GETDATE(),
FOREIGN KEY (program_id) REFERENCES dim_program(program_id)
);
CREATE TABLE dim_person (
person_id UNIQUEIDENTIFIER PRIMARY KEY,
person_number VARCHAR(50) NOT NULL,
first_name VARCHAR(100) NOT NULL,
middle_name VARCHAR(100),
last_name VARCHAR(100) NOT NULL,
date_of_birth DATE NOT NULL,
gender_type_id INT NOT NULL,
ethnicity_type_id INT,
race_type_id INT,
active_flag CHAR(1) NOT NULL DEFAULT 'Y',
update_date DATETIME NOT NULL DEFAULT GETDATE(),
FOREIGN KEY (gender_type_id) REFERENCES dim_gender_type(gender_type_id),
FOREIGN KEY (ethnicity_type_id) REFERENCES dim_ethnicity_type(ethnicity_type_id),
FOREIGN KEY (race_type_id) REFERENCES dim_race_type(race_type_id)
);
CREATE TABLE dim_program (
program_id UNIQUEIDENTIFIER PRIMARY KEY,
program_name VARCHAR(255) NOT NULL,
department_id UNIQUEIDENTIFIER NOT NULL,
update_date DATETIME NOT NULL DEFAULT GETDATE(),
FOREIGN KEY (department_id) REFERENCES dim_department(department_id)
);
CREATE TABLE dim_term (
term_id UNIQUEIDENTIFIER PRIMARY KEY,
term_name VARCHAR(100) NOT NULL,
start_date DATE NOT NULL,
end_date DATE NOT NULL,
update_date DATETIME NOT NULL DEFAULT GETDATE()
);
CREATE TABLE dim_user_account (
user_account_id UNIQUEIDENTIFIER PRIMARY KEY,
person_id UNIQUEIDENTIFIER NOT NULL,
role_type_id INT NOT NULL,
username VARCHAR(100) NOT NULL,
password_hash VARCHAR(255) NOT NULL,
active_flag CHAR(1) NOT NULL DEFAULT 'Y',
update_date DATETIME NOT NULL DEFAULT GETDATE(),
FOREIGN KEY (person_id) REFERENCES dim_person(person_id),
FOREIGN KEY (role_type_id) REFERENCES dim_role_type(role_type_id)
);