엔터티-관계(ER) 모델

Snowflake로 시작하는 데이터 모델링

Nuno Rocha

Director of Engineering

ER 모델 소개

  • 엔터티-관계(ER) 모델: 엔터티, 속성, 관계로 정규화된 데이터를 구조화합니다.

모델링할 대학 테마 엔터티

Snowflake로 시작하는 데이터 모델링

ER 모델 예시

대학 테마 엔터티 상호작용

Snowflake로 시작하는 데이터 모델링

왜 ER 모델인가

  • 명확성
    • 실제 상호작용을 반영해 비즈니스 연결을 단순화
  • 조직화
    • 관련 엔터티로 데이터를 분해해 관리 용이
  • 유연성
    • 시간에 따라 성장과 변경에 적응
Snowflake로 시작하는 데이터 모델링

ER 모델 구축

대학 테마 모델 + 수강신청

Snowflake로 시작하는 데이터 모델링

ER 모델 구축

  • 기존 엔터티 간 관계 추가:
ALTER TABLE classes
ADD FOREIGN KEY (school_id) REFERENCES schools(school_id);

강의와 학교 엔터티 연결

Snowflake로 시작하는 데이터 모델링

ER 모델 구축

대학 테마 모델, 신규 엔터티 enrollments

Snowflake로 시작하는 데이터 모델링

ER 모델 구축

CREATE OR REPLACE TABLE enrollments (
      -- 고유 식별자가 있는 새 엔터티 생성
      enrollment_id NUMBER(10,0) PRIMARY KEY

-- 엔터티 속성 추가 year NUMBER(4,0), semester VARCHAR(255)
-- 다른 엔터티와의 관계 추가 FOREIGN KEY (student_id) REFERENCES students(student_id), FOREIGN KEY (class_id) REFERENCES classes(class_id)
);
Snowflake로 시작하는 데이터 모델링

ER 모델 구축

최종 대학 ER 모델

Snowflake로 시작하는 데이터 모델링

ER 모델에서 데이터 조회

과학대에서 2023년에 수강 신청한 학생 이름과 강의 조회

Snowflake로 시작하는 데이터 모델링

ER 모델에서 데이터 조회

SELECT students.name  
FROM students;

ER 모델에서 학생 이름 조회

Snowflake로 시작하는 데이터 모델링

ER 모델에서 데이터 조회

SELECT students.name
FROM students
    JOIN enrollments 
    ON students.student_id = enrollments.student_id;

학생과 수강신청 조인 조회

Snowflake로 시작하는 데이터 모델링

ER 모델에서 데이터 조회

SELECT students.name
FROM students
    JOIN enrollments 
    ON students.student_id = enrollments.student_id
WHERE enrollments.year = '2023';

2023년 수강신청 조회

Snowflake로 시작하는 데이터 모델링

ER 모델에서 데이터 조회

SELECT students.name, 
    classes.class_name
FROM students
    JOIN enrollments 
    ON students.student_id = enrollments.student_id
    JOIN classes 
    ON enrollments.class_id = classes.class_id
WHERE enrollments.year = '2023';

강의명 조회

Snowflake로 시작하는 데이터 모델링

ER 모델에서 데이터 조회

SELECT students.name, 
    classes.class_name
FROM students
    JOIN enrollments 
    ON students.student_id = enrollments.student_id
    JOIN classes 
    ON enrollments.class_id = classes.class_id
    JOIN schools 
    ON classes.department_id = schools.school_id
WHERE enrollments.year = '2023'
    AND schools.school_name = 'Science';
Snowflake로 시작하는 데이터 모델링

ER 모델에서 데이터 조회

  • JOIN ON: 관련 열을 기준으로 테이블 행을 결합하는 SQL 절.

과학대학 조회

Snowflake로 시작하는 데이터 모델링

용어와 기능 요약

  • 엔터티-관계(ER) 모델: 엔터티와 관계로 정규화된 데이터를 구조화합니다.
  • SELECT FROM: 테이블에서 열을 조회하는 SQL 명령.
  • JOIN ON: 관련 열을 기준으로 테이블을 결합하는 SQL 절.
  • WHERE: 조건에 따라 레코드를 필터링.
  • AND: WHERE 절에서 조건을 결합하는 논리 연산자.
-- 특정 조건으로 병합된 엔터티에서 데이터 조회
SELECT column_name
FROM table_name
    JOIN other_table ON table_name.FK = other_table.PK
WHERE column_name  condition  value
    AND column_name  condition  value;
Snowflake로 시작하는 데이터 모델링

Ayo berlatih!

Snowflake로 시작하는 데이터 모델링

Preparing Video For Download...