πŸ“” DB ν…Œμ΄λΈ” 섀계, μ–΄λ–»κ²Œ ν•˜λŠ”κ²Œ μ˜³μ€ 방법인가

μ–΄λŠ? 데이터 ν…Œμ΄λΈ”μ˜ μ˜ˆμ‹œ

Pasted image 20241220113308.png Pasted image 20241220113315.png

ν…Œμ΄λΈ”μ˜ νš¨μœ¨μ„±κ³Ό ν™•μž₯μ„±

μœ„ ν…Œμ΄λΈ”μ˜ λΉ„νš¨μœ¨μ„±μ€ 무엇인가?

  • μœ„ μ˜ˆμ‹œμ˜ 경우 데이터λ₯Ό ν–‰(Row)이 μ•„λ‹Œ μ—΄(Column)둜 μ €μž₯ν•œ κ²ƒμœΌλ‘œ 보인닀.

1. ν™•μž₯ μ‹œ 문제점:

  • νŽ˜μ΄μ§€κ°€ 10개λ₯Ό μ΄ˆκ³Όν•˜λ©΄ μƒˆλ‘œμš΄ νŽ˜μ΄μ§€μ— λŒ€ν•΄ var11, var12 λ“±μ˜ μ»¬λŸΌμ„ μΆ”κ°€λ‘œ λ§Œλ“€μ–΄μ•Όν•œλ‹€. ( μ‹€μ œλ‘œ 일어날 λ»” ν–ˆλ‹€. )

  • μ΄λŠ” ν…Œμ΄λΈ” μŠ€ν‚€λ§ˆλ₯Ό μˆ˜μ •ν•˜λŠ” μž‘μ—…μ΄λ©°, λ‹€μŒκ³Ό 같은 μœ„ν—˜μ„ μˆ˜λ°˜ν•œλ‹€.

    1. μ„œλΉ„μŠ€ 쀑단: ν…Œμ΄λΈ” μŠ€ν‚€λ§ˆ λ³€κ²½ 쀑 λ°μ΄ν„°λ² μ΄μŠ€κ°€ μž κΈ°κ±°λ‚˜ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ 쀑단될 κ°€λŠ₯성이 μžˆλ‹€.
    2. μ½”λ“œ λ³€κ²½ ν•„μš”: μƒˆλ‘œμš΄ μ»¬λŸΌμ— 맞좰 μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 둜직(예: 데이터 μž…λ ₯, 쑰회 쿼리)을 μˆ˜μ •ν•΄μ•Ό ν•œλ‹€.
    3. 관리 λ³΅μž‘μ„± 증가: ν…Œμ΄λΈ” ꡬ쑰가 λ³΅μž‘ν•΄μ Έ μœ μ§€λ³΄μˆ˜ λΉ„μš©μ΄ μ¦κ°€ν•œλ‹€.
  • 데이터 ν™œμš©λ„ μ œν•œ

    -ν˜„μž¬ κ΅¬μ‘°λŠ” hit 수 μ™Έμ˜ μΆ”κ°€ 정보λ₯Ό κΈ°λ‘ν•˜κΈ° μ–΄λ ΅λ‹€. ( λ‚˜μ€‘μ— 좔가해달라고 ν• κ²ƒκ°™μŒ. )

    • 예: νŽ˜μ΄μ§€λ³„ 방문자의 λ””λ°”μ΄μŠ€ 정보, μ§€μ—­ 정보 λ“±.

2. λΉ„νš¨μœ¨μ μΈ 데이터 쑰회:

  • μ—΄λ‘œ 데이터λ₯Ό μ €μž₯ν•˜λ©΄ νŠΉμ • νŽ˜μ΄μ§€μ˜ hit 수λ₯Ό μ‘°νšŒν•  λ•Œ, 각 μ»¬λŸΌμ„ λͺ…μ‹œμ μœΌλ‘œ μ°Έμ‘°ν•΄μ•Ό ν•©λ‹ˆλ‹€.
    • 예: νŠΉμ • λ‚ μ§œμ— λŒ€ν•΄ var1 ~ var10의 데이터λ₯Ό λͺ¨λ‘ ν•©μ‚°ν•˜λ €λ©΄ SELECT var1 + var2 + ... + var10 FROM table 같은 λΉ„νš¨μœ¨μ μΈ 쿼리λ₯Ό μž‘μ„±ν•΄μ•Ό ν•©λ‹ˆλ‹€.
  • νŽ˜μ΄μ§€λ³„ hit 데이터λ₯Ό ν†΅κ³„μ μœΌλ‘œ λΆ„μ„ν•˜λ €λŠ” 경우(예: 총합, 평균 λ“±) 쿼리가 λ³΅μž‘ν•΄μ§€λ©°, 컬럼이 λŠ˜μ–΄λ‚˜λ©΄ 쿼리 μˆ˜μ •μ΄ ν•„μš”ν•©λ‹ˆλ‹€.

- μœ„μ˜ 데이터 ν…Œμ΄λΈ”μ˜ μ„€κ³„μžκ°€, 데이터 ν…Œμ΄λΈ”μ„ 총 컬럼수λ₯Ό 쀄이고

νŽ˜μ΄μ§€λ‹Ή hit수 λ§Œμ„ ν•„μš”λ‘œ ν•˜κΈ° λ•Œλ¬Έμ—, κ°€λ³κ²Œ μž‘μ„±ν–ˆλ‹€λ©΄ μ–΄λ–»κ²Œ λ°˜λ°•ν•  것인가?

적어도 μ΄λ ‡κ²ŒλŠ” λ§Œλ“€μ—ˆμ–΄μ•Ό ν•˜μ§€ μ•Šμ•˜λ‚˜?

idx (PK) | xdate (PK)  | page_id  | hit_count
---------------------------------------------
   1     | 20241208    | var1    | 21
   2     | 20241208    | var2    | 15
   3     | 20241209    | var1    | 13
  • μƒˆλ‘œμš΄ νŽ˜μ΄μ§€λ₯Ό μΆ”κ°€ν•  λ•Œ μŠ€ν‚€λ§ˆ λ³€κ²½ λΆˆν•„μš”.
  • μŠ€ν† λ¦¬μ§€ νš¨μœ¨μ„± ν–₯상 (0 λ˜λŠ” NULL κ°’ 제거).
  • 데이터 뢄석 및 톡계 μž‘μ—… κ°„μ†Œν™”.
  • 검색, 집계 μ„±λŠ₯ μ΅œμ ν™” κ°€λŠ₯.

μ •κ·œν™” ν•΄λ³΄μž!

제 1μ •κ·œν™” - λͺ¨λ“  도메인이 μ›μž κ°’μœΌλ‘œλ§Œ ꡬ성

λ³€κ²½ μ „ (λΉ„μ •κ·œν™”λœ ν…Œμ΄λΈ”):

KEY idx KEY xdate var1 var2 var3
1 20241208 21 15 13

μ›μžκ°’μ„ κ°–λŠ”κ²ƒ 같은데??

  • λ§žλ‹€. var1, var2 .. λŠ” 각기 λ‹€λ₯Έ νŽ˜μ΄μ§€μ˜ hitλ₯Ό μ €μž₯ν•œλ‹€.

ν•˜μ§€λ§Œ, "νŽ˜μ΄μ§€μ˜ hit 수"λΌλŠ” μ†μ„±μ—μ„œ λ³Έλ‹€λ©΄, λ™μΌν•œ 의미λ₯Ό μ—¬λŸ¬ 셀에 λΆ„μ‚° μ €μž₯ν•œλ‹€κ³  λ³Ό 수 μžˆλ‹€. λ”°λΌμ„œ λ°μ΄ν„°μ˜ 동일 속성을 μœ„λ°˜ν–ˆλ‹€κ³  λ³Ό 수 μžˆλ‹€.

KEY idx KEY xdate page_id hit_count
1 20241208 var1 21
2 20241208 var2 15
3 20241208 var3 13

λ”°λΌμ„œ λ‹€μŒκ³Ό 같이 각 컬럼이 μ§„μ§œ μ›μžκ°’μ„ 갖도둝 μˆ˜μ •ν•  수 μžˆλ‹€.


제 2μ •κ·œν™” - λͺ¨λ“  λΉ„κΈ°λ³Έ 속성이 κΈ°λ³Έν‚€μ˜ 전체에 μ’…μ†λ˜μ–΄μ•Ό ν•˜λ©°, κΈ°λ³Έν‚€μ˜ μΌλΆ€μ—λ§Œ μ’…μ†λ˜λŠ” λΆ€λΆ„ 쒅속성이 μ—†μ–΄μ•Ό 함.

κ°„μ ‘ 쒅속 κ°€λŠ₯

예λ₯Ό λ“€μ–΄ λˆ„κ΅°κ°€.. page_id에 λŒ€ν•œ 속성을 λ§Œλ“€μ–΄λ‹¬λΌκ³  ν•˜μ‹ λ‹€λ©΄..

λ‹€μŒκ³Ό 같은 ν˜•νƒœλ₯Ό λ„κ²Œ λœλ‹€.

KEY xdate KEY page_id hit_count page_name category
20241208 var1 21 Kakao_main main
20241208 var2 15 Kakao_case1 detail
20241208 var3 13 Kakao_case2 detail
  • μ—¬κΈ°μ„œ, categoryλŠ” page_name에 μ’…μ†λ˜μ–΄μžˆμœΌλ©°, page_name은 page_id에 μ’…μ†λ˜μ–΄μžˆλ‹€.

νŽ˜μ΄μ§€ 속성(λΉ„κΈ°λ³Έ 속성)듀이 κΈ°λ³Έν‚€μ˜ λΆ€λΆ„μ μœΌλ‘œ μ’…μ†λ˜μ–΄μžˆλ‹€.

κ²°κ³Ό

KEY xdate KEY page_id hit_count
20241208 var1 21
20241208 var2 15
20241208 var3 13

hit_countλŠ” xdate, page_idλ₯Ό κΈ°λ³Έν‚€λ‘œ κ°–λŠ”λ‹€

KEY page_id UNIQUE page_name category
var1 Kakao_main main
var2 Kakao_case1 detaile
var3 Kakao_case2 detaile

categoryλŠ” page_nameλ₯Ό μ’…μ†ν•˜λ©°, page_name은 page_id -> page_id처럼 κ°„μ ‘ 쒅속을 ν•˜κΈ° λ•Œλ¬Έμ— 만쑱


제 3μ •κ·œν™” - 이행성 ν•¨μˆ˜ 쒅속관계 μ‚­μ œ (λͺ¨λ“  λΉ„κΈ°λ³Έ 속성이 기본킀에 직접 쒅속)

속성 A β†’ 속성 B β†’ 속성 C둜 이루어진 쒅속 κ΄€κ³„μ—μ„œ, Aκ°€ Cλ₯Ό 직접 κ²°μ •ν•˜μ§€ μ•Šκ³ , Bλ₯Ό 톡해 Cλ₯Ό κ²°μ •ν•˜λŠ” 경우λ₯Ό λ§ν•œλ‹€.

KEY page_id UNIQUE page_name category
var1 Kakao_main main
var2 Kakao_case1 detaile
var3 Kakao_case2 detaile

ν•΄λ‹Ή ν…Œμ΄λΈ”μ—μ„œ κ°„μ ‘ 쒅속을 μ œμ™Έν•œλ‹€.

κ²°κ³Ό

KEY page_id UNIQUE page_name
var1 Kakao_main
var2 Kakao_case1
var3 Kakao_case2
KEY page_name category
Kakao_main main
Kakao_case1 detaile
Kakao_case2 detaile