Relationship Tables – Data Definition Language (DDL)

UniversityDataHub example for Lion State University

CREATE TABLE dim_address (
    address_id UNIQUEIDENTIFIER PRIMARY KEY,
    person_id UNIQUEIDENTIFIER NOT NULL,
    address_type_id INT NOT NULL,
    address_line1 VARCHAR(255),
    address_line2 VARCHAR(255),
    city VARCHAR(100),
    state_province_id INT,
    country_id INT,
    postal_code VARCHAR(20),
    FOREIGN KEY (person_id) REFERENCES dim_person(person_id),
    FOREIGN KEY (address_type_id) REFERENCES dim_address_type(address_type_id),
    FOREIGN KEY (state_province_id) REFERENCES dim_state_province(state_province_id),
    FOREIGN KEY (country_id) REFERENCES dim_country(country_id)
);
CREATE TABLE dim_country (
    country_id INT PRIMARY KEY,
    country_name VARCHAR(100) NOT NULL,
    country_code VARCHAR(10)
);
CREATE TABLE dim_course_prerequisite (
    course_id UNIQUEIDENTIFIER NOT NULL,
    prerequisite_course_id UNIQUEIDENTIFIER NOT NULL,
    PRIMARY KEY (course_id, prerequisite_course_id),
    FOREIGN KEY (course_id) REFERENCES dim_course(course_id),
    FOREIGN KEY (prerequisite_course_id) REFERENCES dim_course(course_id)
);
CREATE TABLE dim_email (
    email_id UNIQUEIDENTIFIER PRIMARY KEY,
    person_id UNIQUEIDENTIFIER NOT NULL,
    email_address VARCHAR(255) NOT NULL,
    contact_type_id INT NOT NULL,
    FOREIGN KEY (person_id) REFERENCES dim_person(person_id),
    FOREIGN KEY (contact_type_id) REFERENCES dim_contact_type(contact_type_id)
);
CREATE TABLE dim_enrollment (
    enrollment_id UNIQUEIDENTIFIER PRIMARY KEY,
    person_id UNIQUEIDENTIFIER NOT NULL,
    course_section_id UNIQUEIDENTIFIER NOT NULL,
    enrollment_status_type_id INT NOT NULL,
    enrollment_date DATE NOT NULL,
    FOREIGN KEY (person_id) REFERENCES dim_person(person_id),
    FOREIGN KEY (course_section_id) REFERENCES dim_course_section(course_section_id),
    FOREIGN KEY (enrollment_status_type_id) REFERENCES dim_enrollment_status_type(enrollment_status_type_id)
);
CREATE TABLE dim_faculty_assignment (
    faculty_assignment_id UNIQUEIDENTIFIER PRIMARY KEY,
    faculty_id UNIQUEIDENTIFIER NOT NULL,
    course_section_id UNIQUEIDENTIFIER NOT NULL,
    FOREIGN KEY (faculty_id) REFERENCES dim_faculty(faculty_id),
    FOREIGN KEY (course_section_id) REFERENCES dim_course_section(course_section_id)
);
CREATE TABLE dim_phone (
    phone_id UNIQUEIDENTIFIER PRIMARY KEY,
    person_id UNIQUEIDENTIFIER NOT NULL,
    phone_number VARCHAR(50) NOT NULL,
    contact_type_id INT NOT NULL,
    FOREIGN KEY (person_id) REFERENCES dim_person(person_id),
    FOREIGN KEY (contact_type_id) REFERENCES dim_contact_type(contact_type_id)
);
CREATE TABLE dim_state_province (
    state_province_id INT PRIMARY KEY,
    state_province_name VARCHAR(100) NOT NULL,
    state_province_code VARCHAR(10)
);