Hamutaro - Hamtaro 4

Database/Engineering

[DE] ๋ฐ์ดํ„ฐ์›จ์–ดํ•˜์šฐ์Šค ๋ชจ๋ธ๋ง ๊ธฐ๋ณธ - Star Schema

carsumin 2026. 5. 20. 14:13
OLAP DB์— ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ์„ ๋•Œ ๋ถ„์„ํ•˜๊ธฐ ์ข‹์€ ๊ตฌ์กฐ๋กœ ์„ค๊ณ„ํ•ด์•ผ ํ•œ๋‹ค.
๊ทธ ๋Œ€ํ‘œ์ ์ธ ๋ฐฉ๋ฒ•์ด Star Schema๋‹ค.

 
 

Fact ํ…Œ์ด๋ธ” + Dimension ํ…Œ์ด๋ธ”
  • Star Schema๋Š” ๋‘ ์ข…๋ฅ˜์˜ ํ…Œ์ด๋ธ”๋กœ ๊ตฌ์„ฑ๋œ๋‹ค.
๊ตฌ๋ถ„Fact ํ…Œ์ด๋ธ” Dimension ํ…Œ์ด๋ธ”
์˜๋ฏธ์‹ค์ œ๋กœ ์ผ์–ด๋‚œ ์ด๋ฒคํŠธ์ด๋ฒคํŠธ์˜ ๋ถ€๊ฐ€ ์ •๋ณด
์ค‘์‹ฌ์ˆซ์ž(์ธก์ •๊ฐ’)ํ…์ŠคํŠธ/์†์„ฑ
์˜ˆ์‹œ์ฃผ๋ฌธ, ํด๋ฆญ, ๊ฒฐ์ œ๊ณ ๊ฐ, ์ƒํ’ˆ, ๋‚ ์งœ, ์ง€์—ญ

 
-> ๊ฐ€์šด๋ฐ Fact ํ…Œ์ด๋ธ”์„ ์ค‘์‹ฌ์œผ๋กœ Dimension ํ…Œ์ด๋ธ”๋“ค์ด ๋ณ„์ฒ˜๋Ÿผ ๋ถ™์–ด์žˆ๋Š” ๊ตฌ์กฐ๋ผ Star Schema๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.
 
 

์„ค๊ณ„ ์˜ˆ์‹œ

 

[dim_customer]                        [dim_product]
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”                      โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ customer_id  โ”‚                      โ”‚ product_id   โ”‚
โ”‚ name         โ”‚                      โ”‚ name         โ”‚
โ”‚ region       โ”‚                      โ”‚ category     โ”‚
โ”‚ age_group    โ”‚                      โ”‚ brand        โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜                      โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
       โ”‚                                     โ”‚
       โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                      โ–ผ
             โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
             โ”‚         fact_orders         โ”‚
             โ”‚  order_id    customer_id    โ”‚
             โ”‚  date_id     product_id     โ”‚
             โ”‚  amount      quantity       โ”‚
             โ”‚  discount    revenue        โ”‚
             โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                            โ”‚
                            โ–ผ
                     [dim_date]
                     โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
                     โ”‚ date_id      โ”‚
                     โ”‚ year         โ”‚
                     โ”‚ month        โ”‚
                     โ”‚ weekday      โ”‚
                     โ”‚ is_holiday   โ”‚
                     โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

 
 

์ง๊ด€์ ์ธ ๋ถ„์„ ์ฟผ๋ฆฌ
  • Star Schema๋กœ ์„ค๊ณ„ํ•˜๋ฉด ๋ถ„์„ ์ฟผ๋ฆฌ๊ฐ€ ์ผ๊ด€๋œ ํŒจํ„ด์„ ๊ฐ€์ง„๋‹ค.
  • ํ•ญ์ƒ Fact ํ…Œ์ด๋ธ”์„ ์ค‘์‹ฌ์œผ๋กœ ํ•„์š”ํ•œ Dimension์„ JOINํ•˜๋Š” ๊ตฌ์กฐ์ด๋‹ค.
-- 2024๋…„ 1์›”, ์„œ์šธ ๊ณ ๊ฐ์˜ ์นดํ…Œ๊ณ ๋ฆฌ๋ณ„ ๋งค์ถœ
SELECT
	c.region,
	p.category,
    	SUM(f.revenue)
FROM fact_orders f
JOIN dim_customer c ON f.customer_id = c.customer_id
JOIN dim_product p ON f.product_id = p.product_id
JOIN dim_Date d ON f.date_id = d.date_id
WHERE d.year = 2024 AND d.month = 1
  AND c.region = '์„œ์šธ'
GROUP BY c.region, p.category;

 
 

Fact ํ…Œ์ด๋ธ” ์„ค๊ณ„ ์›์น™
  • ์ˆซ์ž(์ธก์ •๊ฐ’)๋งŒ ๋„ฃ๋Š”๋‹ค.
  • FK๋งŒ ๋„ฃ๋Š”๋‹ค.
  • ํ…์ŠคํŠธ ์†์„ฑ์€ ๋„ฃ์ง€ ์•Š๋Š”๋‹ค.
  • Grain์„ ๋ช…ํ™•ํžˆ ์ •ํ•œ๋‹ค.
    • Grain์ด๋ž€? "์ด ํ…Œ์ด๋ธ”์˜ ํ–‰ ํ•˜๋‚˜๊ฐ€ ๋ฌด์—‡์„ ์˜๋ฏธํ•˜๋Š”๊ฐ€". ์„ค๊ณ„ ์ „์— ๋ฐ˜๋“œ์‹œ ๋จผ์ € ์ •ํ•ด์•ผ ํ•œ๋‹ค.
    • Grain์ด ๋‚ฎ์„์ˆ˜๋ก ๋” ๋‹ค์–‘ํ•œ ๋ถ„์„์ด ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ๋ฐ์ดํ„ฐ ์–‘๋„ ๋Š˜์–ด๋‚œ๋‹ค.

 

Star Schema vs Snowflake Schema
  • Star Schema์—์„œ Dimension ํ…Œ์ด๋ธ”์„ ๋” ์ •๊ทœํ™”ํ•œ ๊ฒƒ -> Snowflake Schema
  • Snowflake Schema๋Š” JOIN์ด ๋งŽ์•„์ ธ์„œ ์ฟผ๋ฆฌ๊ฐ€ ๋ณต์žกํ•ด์ง€๋Š” ๋‹จ์ ์ด ์žˆ๋‹ค.
Star Schema                   Snowflake Schema

dim_product                   dim_product
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”                  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”     โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚product_idโ”‚                  โ”‚product_idโ”‚โ”€โ”€โ”€โ”€โ–ถโ”‚brand_id  โ”‚
โ”‚name      โ”‚                  โ”‚name      โ”‚     โ”‚brand_nameโ”‚
โ”‚category  โ”‚                  โ”‚brand_id  โ”‚     โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
โ”‚brand     โ”‚                  โ”‚category_idโ”€โ”€โ”€โ–ถ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜                  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜     โ”‚category  โ”‚
                                               โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜