エンティティ・リレーションシップモデル

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);

大学テーマモデル。classes と schools エンティティを関連付け

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 モデルからのデータ取得

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;

ER モデルをクエリし、学生と履修情報を結合

Snowflakeで学ぶデータモデリング入門

ER モデルからのデータ取得

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

ER モデルをクエリし、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';

ER モデルをクエリし、科目名を取得

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 句

ER モデルをクエリし、理学部を取得

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で学ぶデータモデリング入門

Passons à la pratique !

Snowflakeで学ぶデータモデリング入門

Preparing Video For Download...