2NF ve 3NF

Snowflake ile Veri Modellemesine Giriş

Nuno Rocha

Director of Engineering

2NF'ye giriş

  • İkinci normal form (2NF): Kısmî bağımlılıkları ortadan kaldırır; her anahtar olmayan öznitelik birincil anahtara işlevsel olarak bağlı olmalıdır.

UNF'den 3NF'ye adımlar

Snowflake ile Veri Modellemesine Giriş

2NF'ye giriş (1)

  • İkinci normal form (2NF): Kısmî bağımlılıkları ortadan kaldırır; her anahtar olmayan öznitelik birincil anahtara işlevsel olarak bağlı olmalıdır
  • İşlevsel Bağımlılık: Birincil anahtar bir özniteliği açıkça tanımlar

İşlevsel bağımlılığı gösteren personel kimlik kartları

Snowflake ile Veri Modellemesine Giriş

2NF'ye giriş (2)

  • İkinci normal form (2NF): Kısmî bağımlılıkları ortadan kaldırır; her anahtar olmayan öznitelik birincil anahtara işlevsel olarak bağlı olmalıdır.
  • İşlevsel Bağımlılık: Birincil anahtar bir özniteliği açıkça tanımlar.
  • Kısmî Bağımlılık: Bir özniteliği tanımlamak için birincil anahtarın yalnızca bir kısmı yeterlidir.

Kısmî bağımlılığı gösteren personel kimlik kartları

Snowflake ile Veri Modellemesine Giriş

İkinci normal form

Allproducts varlığı, 2NF ile ürün uyumlu

Snowflake ile Veri Modellemesine Giriş

İkinci normal form

Allproducts varlığı, 2NF ile ayrıntı sorunu

Snowflake ile Veri Modellemesine Giriş

İkinci normal form

Allproducts varlığı, üreticiyle 2NF sorunu

Snowflake ile Veri Modellemesine Giriş

2NF'ye geçiş

  • Adım 1: Kısmî bağımlılığı olan öznitelikler için yeni varlıklar oluşturun.
CREATE OR REPLACE TABLE manufacturers (
    manufacturer_id NUMBER(10,0) PRIMARY KEY,
    manufacturer VARCHAR(255),
    location VARCHAR(255)
);
CREATE OR REPLACE TABLE details (
    detail_id NUMBER(10,0) PRIMARY KEY,
    detail VARCHAR(255)
);
Snowflake ile Veri Modellemesine Giriş

2NF'ye geçiş

  • Adım 2: Başta normalleştirilmemiş varlıktaki verilerle varlıkları doldurun.
INSERT INTO manufacturers (manufacturer_id, manufacturer, location)
SELECT DISTINCT manufacturer_id, 
    manufacturer_name,
    location
FROM allproducts;
INSERT INTO details (detail_id, detail)
SELECT DISTINCT detail_id, 
    detail_description
FROM allproducts;
Snowflake ile Veri Modellemesine Giriş

2NF'ye geçiş

Tüm ürün verileri, UNF'den 2NF'ye

Snowflake ile Veri Modellemesine Giriş

3NF'ye giriş

  • Üçüncü normal form (3NF): Geçişli bağımlılıkları ortadan kaldırır; anahtar olmayan öznitelikler doğrudan birincil anahtara bağlı olmalıdır.

UNF'den 3NF'ye adımlar

Snowflake ile Veri Modellemesine Giriş

3NF'ye giriş

  • Üçüncü normal form (3NF): Geçişli bağımlılıkları ortadan kaldırır; anahtar olmayan öznitelikler doğrudan birincil anahtara bağlı olmalıdır.
  • Geçişli Bağımlılık: Bir öznitelik, birincil anahtar olmayan başka bir özniteliğe bağlıdır.

Geçişli bağımlılığı gösteren personel kimlik kartları

Snowflake ile Veri Modellemesine Giriş

Üçüncü normal form

Konum, 3NF ile uyumlu değil

Snowflake ile Veri Modellemesine Giriş

3NF'ye geçiş

  • Adım 1: Geçişli bağımlılığı olan öznitelikler için yeni varlık oluşturun.
CREATE TABLE locations (
    location_id NUMBER(10,0) PRIMARY KEY,
    location VARCHAR(255)
);
Snowflake ile Veri Modellemesine Giriş

3NF'ye geçiş

  • Adım 2: Başta normalleştirilmemiş varlıktaki verilerle varlıkları doldurun.
INSERT INTO locations (location_id, location)
SELECT ROW_NUMBER() OVER (ORDER BY location), 
    location
FROM manufacturers
GROUP BY location;
ALTER TABLE manufacturers
DROP COLUMN location;
Snowflake ile Veri Modellemesine Giriş

3NF'ye geçiş

  • Adım 3: Kalan öznitelikleri normalleştirilmemiş varlıktan çıkarmak için yeni bir varlık oluşturun.
CREATE OR REPLACE TABLE products (
    product_id NUMBER(10,0) PRIMARY KEY,
    name VARCHAR(255)
);
  • Adım 4: Normalleştirilmemiş varlıkta kalan benzersiz değerlerle bu varlığı doldurun.
INSERT INTO products (product_id, name)
SELECT DISTINCT product_id,
    product_name
FROM allproducts;
Snowflake ile Veri Modellemesine Giriş

Modeli tamamlama

UNF'den 3NF'ye adımlar

Snowflake ile Veri Modellemesine Giriş

Modeli tamamlama

Tüm ürün verileri, UNF'den 1NF'ye

Snowflake ile Veri Modellemesine Giriş

Modeli tamamlama

Tüm ürün verileri, UNF'den 2NF'ye

Snowflake ile Veri Modellemesine Giriş

Modeli tamamlama

Tüm ürün verileri, UNF'den 3NF'ye

Snowflake ile Veri Modellemesine Giriş

Modeli tamamlama

Tüm ürün verileri, ilişkilerle UNF'den 3NF'ye

Snowflake ile Veri Modellemesine Giriş

Terimler ve işlevler özeti

  • İkinci normal form (2NF): Kısmî bağımlılıkları ortadan kaldırır; her anahtar olmayan öznitelik birincil anahtara işlevsel olarak bağlı olmalıdır.
  • Üçüncü normal form (3NF): Geçişli bağımlılıkları ortadan kaldırır; anahtar olmayan öznitelikler doğrudan birincil anahtara bağlı olmalıdır.
  • İşlevsel Bağımlılık: Birincil anahtar bir özniteliği açıkça tanımlar.
  • Kısmî Bağımlılık: Bir özniteliği tanımlamak için birincil anahtarın yalnızca bir kısmı yeterlidir.
  • Geçişli Bağımlılık: Bir öznitelik, birincil anahtar olmayan başka bir özniteliğe bağlıdır.
  • ROW_NUMBER() OVER (ORDER BY): Sıralı numara üreten SQL işlevi.
  • DISTINCT: Bir öznitelikten benzersiz değerleri döndüren SQL ifadesi.
  • DROP: ALTER TABLE ile kullanılan, varlıktan öğe kaldıran SQL komutu.
Snowflake ile Veri Modellemesine Giriş

İşlevler özeti

INSERT INTO table_name (column_name, other_columns)
SELECT DISTINCT column_name,
    other_columns
FROM another_table;
INSERT INTO table_name (column_name)
SELECT ROW_NUMBER() OVER (ORDER BY column_name)
FROM another_table
GROUP BY TRIM(column_name);
ALTER TABLE table_name
DROP COLUMN column_name;
Snowflake ile Veri Modellemesine Giriş

Hadi pratik yapalım!

Snowflake ile Veri Modellemesine Giriş

Preparing Video For Download...