Model encji i związków

Wprowadzenie do modelowania danych w Snowflake

Nuno Rocha

Director of Engineering

Wprowadzenie do modelowania ER

  • Model encji i związków (ER): Strukturyzuje znormalizowane dane przy użyciu encji, atrybutów i związków

Encje modelu uczelni

Wprowadzenie do modelowania danych w Snowflake

Przykład modelu encji i związków

Interakcje między encjami modelu uczelni

Wprowadzenie do modelowania danych w Snowflake

Dlaczego warto wybrać model ER

  • Przejrzystość
    • Upraszcza powiązania biznesowe, odzwierciedlając rzeczywiste interakcje
  • Organizacja
    • Dzieli dane na powiązane encje, ułatwiając zarządzanie informacjami
  • Elastyczność
    • Możliwość rozbudowy i zmiany w czasie
Wprowadzenie do modelowania danych w Snowflake

Budowanie modelu ER

Model uczelni z zapisami

Wprowadzenie do modelowania danych w Snowflake

Budowanie modelu ER

  • Dodaj związek między istniejącymi encjami:
ALTER TABLE classes
ADD FOREIGN KEY (school_id) REFERENCES schools(school_id);

Model uczelni – łączenie encji klas i szkół

Wprowadzenie do modelowania danych w Snowflake

Budowanie modelu ER

Model uczelni z nową encją zapisów

Wprowadzenie do modelowania danych w Snowflake

Budowanie modelu ER

CREATE OR REPLACE TABLE enrollments (
      -- Create a new entity with a unique identifier
      enrollment_id NUMBER(10,0) PRIMARY KEY

-- Add the entity's attributes year NUMBER(4,0), semester VARCHAR(255)
-- Add relationships to other entities FOREIGN KEY (student_id) REFERENCES students(student_id), FOREIGN KEY (class_id) REFERENCES classes(class_id)
);
Wprowadzenie do modelowania danych w Snowflake

Budowanie modelu ER

Końcowy model ER uczelni

Wprowadzenie do modelowania danych w Snowflake

Pobieranie danych z modelu ER

Zapytanie do modelu ER o imiona studentów i zajęcia w roku 2023 na wydziale Science

Wprowadzenie do modelowania danych w Snowflake

Pobieranie danych z modelu ER

SELECT students.name  
FROM students;

Zapytanie do modelu ER o imiona studentów

Wprowadzenie do modelowania danych w Snowflake

Pobieranie danych z modelu ER

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

Zapytanie do modelu ER o studentów i zapisy

Wprowadzenie do modelowania danych w Snowflake

Pobieranie danych z modelu ER

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

Zapytanie do modelu ER o zapisy z 2023 roku

Wprowadzenie do modelowania danych w Snowflake

Pobieranie danych z modelu 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';

Zapytanie do modelu ER o nazwy zajęć

Wprowadzenie do modelowania danych w Snowflake

Pobieranie danych z modelu 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';
Wprowadzenie do modelowania danych w Snowflake

Pobieranie danych z modelu ER

  • JOIN ON: Klauzula SQL łącząca wiersze z tabel na podstawie powiązanej kolumny (ON).

Zapytanie do modelu ER o wydział Science

Wprowadzenie do modelowania danych w Snowflake

Przegląd terminologii i funkcji

  • Model encji i związków (ER): Strukturyzuje znormalizowane dane przy użyciu encji i związków.
  • SELECT FROM: Polecenie SQL pobierające kolumny z tabeli.
  • JOIN ON: Klauzula SQL łącząca wiersze z tabel na podstawie powiązanej kolumny.
  • WHERE: Klauzula SQL filtrująca rekordy według warunku.
  • AND: Operator logiczny używany z klauzulą WHERE do łączenia wielu warunków.
-- Querying data from merged entities filtered by specific conditions
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;
Wprowadzenie do modelowania danych w Snowflake

Czas na ćwiczenia!

Wprowadzenie do modelowania danych w Snowflake

Preparing Video For Download...