Snowflake 資料建模入門
Nuno Rocha
Director of Engineering





AUTOINCREMENT:欄位屬性,為每筆新列自動產生唯一且遞增的數值。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 指令。PRIMARY KEY:將欄位定義為唯一識別碼的 SQL 子句。AUTOINCREMENT:為每筆新列自動產生唯一遞增數值的屬性。FOREIGN KEY (...) REFERENCES (...):在兩個資料表之間建立關聯的 SQL 子句。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)
);
Snowflake 資料建模入門