Introduction to Data Modeling in Snowflake
Nuno Rocha
Director of Engineering
AUTOINCREMENT
: Attribute property to automatically generate unique, sequentially increasing numeric values for each new row.CREATE OR REPLACE TABLE hub_students (
student_key NUMBER(10,0) AUTOINCREMENT PRIMARY KEY
);
CREATE OR REPLACE TABLE hub_students (
student_key NUMBER(10,0) AUTOINCREMENT PRIMARY KEY,
student_id NUMBER(10,0)
);
CREATE OR REPLACE TABLE hub_students (
student_key NUMBER(10,0) AUTOINCREMENT PRIMARY KEY,
student_id NUMBER(10,0),
load_date TIMESTAMP,
record_source VARCHAR(255)
);
CREATE OR REPLACE TABLE hub_classes (
class_key NUMBER(10,0)
AUTOINCREMENT
PRIMARY KEY,
class_id NUMBER(10,0),
load_date TIMESTAMP,
record_source VARCHAR(255)
);
CREATE OR REPLACE TABLE hub_schools (
school_key NUMBER(10,0)
AUTOINCREMENT
PRIMARY KEY,
school_id NUMBER(10,0),
load_date TIMESTAMP,
record_source VARCHAR(255)
);
CREATE OR REPLACE TABLE link_enrollments (
link_key NUMBER(10,0) AUTOINCREMENT PRIMARY KEY
);
CREATE OR REPLACE TABLE link_enrollments (
link_key NUMBER(10,0) AUTOINCREMENT PRIMARY KEY,
student_key NUMBER(10,0),
class_key NUMBER(10,0),
FOREIGN KEY (student_key) REFERENCES hub_students(student_key),
FOREIGN KEY (class_key) REFERENCES hub_classes(class_key)
);
CREATE OR REPLACE TABLE link_enrollments (
link_key NUMBER(10,0) AUTOINCREMENT PRIMARY KEY,
student_key NUMBER(10,0),
class_key NUMBER(10,0),
load_date TIMESTAMP,
record_source VARCHAR(255),
FOREIGN KEY (student_key) REFERENCES hub_students(student_key),
FOREIGN KEY (class_key) REFERENCES hub_classes(class_key)
);
CREATE OR REPLACE TABLE link_offerings (
link_key NUMBER(10,0) AUTOINCREMENT PRIMARY KEY,
class_key NUMBER(10,0),
school_key NUMBER(10,0),
load_date TIMESTAMP,
record_source VARCHAR(255),
FOREIGN KEY (class_key) REFERENCES hub_classes(class_key),
FOREIGN KEY (school_key) REFERENCES hub_schools(school_key)
);
CREATE OR REPLACE TABLE sat_student (
name VARCHAR(255),
email VARCHAR(255)
);
CREATE OR REPLACE TABLE sat_student (
name VARCHAR(255),
email VARCHAR(255),
load_date TIMESTAMP,
record_source VARCHAR(255)
);
CREATE OR REPLACE TABLE sat_student (
student_key NUMBER(10,0),
name VARCHAR(255),
email VARCHAR(255),
load_date TIMESTAMP,
record_source VARCHAR(255),
FOREIGN KEY (student_key) REFERENCES hub_students(student_key)
);
CREATE OR REPLACE TABLE sat_class (
class_key NUMBER(10,0),
class_name VARCHAR(255),
load_date TIMESTAMP,
record_source VARCHAR(255),
FOREIGN KEY (class_key)
REFERENCES hub_classes(class_key)
);
CREATE OR REPLACE TABLE sat_school (
school_key NUMBER(10,0),
school_name VARCHAR(255),
load_date TIMESTAMP,
record_source VARCHAR(255),
FOREIGN KEY (school_key)
REFERENCES hub_schools(school_key)
);
CREATE OR REPLACE TABLE
: SQL command to create or replace a table structure.PRIMARY KEY
: SQL clause to define a column as the unique identifier.AUTOINCREMENT
: Attribute property to automatically generate unique, sequentially increasing numeric values for each new row.FOREIGN KEY (...) REFERENCES (...)
: SQL clause to create a link between two tables.CREATE OR REPLACE TABLE table_name (
-- Create an auto generated unique value as primary key
unique_key column_datatype AUTOINCREMENT PRIMARY KEY,
other_business_key column_datatype,
foreign_column column_datatype,
other_foreign_column column_datatype,
-- Adding relationship with other entities
FOREIGN KEY(foreign_column) REFERENCES foreign_table(PK_from_foreign_table),
FOREIGN KEY(other_foreign) REFERENCES foreign_table(PK_from_other_foreign)
);
Introduction to Data Modeling in Snowflake