Database

camilleΒ·2022λ…„ 5μ›” 8일
0
post-thumbnail

πŸ“• λ°μ΄ν„°λ² μ΄μŠ€λž€ 무엇인가?

λ°μ΄ν„°λž€ 수, 단어, 이미지, μ˜μƒ λ“±μ˜ ν˜•νƒœλ‘œλœ 의미 λ‹¨μœ„μ΄λ‹€.

예λ₯Ό λ“€μ–΄ λ‚΄κ°€ μŠ€νƒ€λ²…μŠ€μ˜ μ‚¬μš©μžλΌκ³  κ°€μ •ν•΄λ³΄μž.

바닐라크림컀피 μ„ νƒν•˜λ©΄ ➑ νŽ˜μ΄μ§€ 이동 ➑ μ»€ν”Όμ˜ μƒμ„ΈνŽ˜μ΄μ§€
➑ μ œν’ˆμ •λ³΄ ➑ μ•Œλ ˆλ₯΄κΈ° μœ λ°œμ •λ³΄ λ“±λ“±
= λͺ¨λ‘ λ‹€ 데이터라고 λ³Ό 수 μžˆλ‹€.


βœ” Client λŠ” 고객을 μ˜λ―Έν•œλ‹€.
client ν™”λ©΄ ➑ Click ➑ (μƒν’ˆ 상세정보 μš”μ²­) web application server : λ°±μ—”λ“œ μ„œλ²„μ— μš”μ²­ 전솑 ➑ ν•„μš”ν•œ μ •λ³΄μš”μ²­ : Datase " λ‚˜ 바닐라크림에 λŒ€ν•œ 정보가 ν•„μš”ν•΄ " ➑ λ‹€μ‹œ databaseμ—μ„œ sever둜 ν•„μš”ν•œ 정보 응닡 (μ˜μ–‘, μ•Œλ ˆλ₯΄κΈ°, μŒλ£Œμ •λ³΄)

λ°μ΄ν„°λ² μ΄μŠ€λŠ” 컴퓨터 μ‹œμŠ€ν…œμ— μ €μž₯된 μ •λ³΄λ‚˜ 데이터λ₯Ό λͺ¨λ‘ λͺ¨μ•„ 놓은 집합을 μ˜λ―Έν•˜λ©°, 데이터듀은 database management system으둜 μ œμ–΄ 및 관리λ₯Ό ν•œλ‹€.

즉, 데이터가 μ €μž₯된 ν•˜λ“œμ›¨μ–΄λ₯Ό λΆ€λ₯΄λŠ” 말이기도 ν•˜λ©΄μ„œ 데이터 베이슀λ₯Ό κ΄€λ¦¬ν•˜λŠ” μ‹œμŠ€ν…œ 자체λ₯Ό ν†΅μΉ­ν•œλ‹€κ³  λ³Ό 수 μžˆλ‹€.

데이터 λ² μ΄μŠ€λŠ” ν•˜λ“œμ›¨μ–΄ μ €μž₯곡간에 μ €μž₯이 λœλ‹€. κ·Έλž˜μ„œ, 이걸 νŽΈν•˜κ²Œ κΊΌλ‚΄μ™€μ•Όν•˜λŠ”λ°, 컴퓨터 언어인 1κ³Ό 0으둜 ν‘œμ‹œλœ λ°”μ΄λ„ˆλ¦¬λ‘œ μ €μž₯ λ˜μ–΄μžˆλŠ”λ°, DBMμ—μ„œλŠ” 이λ₯Ό 보기 νŽΈν•˜κ²Œ λ°”κΎΈμ–΄ μ œκ³΅ν•΄μ€€λ‹€.

μ’…λ₯˜λŠ” DBM, mysql , 였라클 λ“± μ—¬λŸ¬κ°€μ§€κ°€ μžˆλ‹€.

μš°λ¦¬κ°€ 이해할 수 μžˆλŠ” κ²ƒμœΌλ‘œ λ°”κΏ”μ£ΌλŠ” 것을 DBMS라고 생각 ν•˜λ©΄ λœλ‹€.

πŸ“• λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό μ‚¬μš©ν•˜λŠ” 이유?

데이터λ₯Ό μ˜€λžœκΈ°κ°„ μ €μž₯ 및 λ³΄μ‘΄ν•˜κΈ° μœ„ν•΄μ„œ 데이터 베이슀λ₯Ό μ‚¬μš©ν•œλ‹€.

μž‘μ€ μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œλ„ λ¬Όλ‘  데이터λ₯Ό 잠깐 λ™μ•ˆ μž„μ‹œλ‘œ μ €μž₯ν•  μˆ˜λŠ” μžˆμ§€λ§Œ μš°λ¦¬κ°€ μ €μž₯ν•˜μ§€ μ•Šμ€ λ°μ΄ν„°λŠ” 컴퓨터λ₯Ό 끄고 ν‚€λ©΄ 사라진닀.
λ©”λͺ¨λ¦¬μ— μ‘΄μž¬ν•˜λŠ” λ°μ΄ν„°λŠ” 였래 보쑴 λ˜μ§€ μ•ŠκΈ° λ•Œλ¬Έμ—, μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ μ’…λ£Œλ˜λ©΄ λ©”λͺ¨λ¦¬μ— 있던 데이터듀은 λ‹€μ‹œ 읽어듀일 수 μ—†λ‹€.

λ”°λΌμ„œ, ν•„μš”ν•œ 자료λ₯Ό 계속 λ³΄μ‘΄ν•˜κΈ° μœ„ν•΄ λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό μ‚¬μš©ν•œλ‹€.
μ˜€λž˜λ‘κ³  μ“°λ €λ©΄ ν•˜λ“œλ””μŠ€ν¬μ— μ €μž₯ν•œλ‹€. λŒ€μ‹  ν•˜λ“œκ°€λ§κ°€μ§€μ§€ μ•ŠλŠ”μ΄μƒ 영ꡬ적 = 반영ꡬ적 BUT λŠλ¦¬λ‹€κ³  λ³Ό 수 μžˆλ‹€. 또, ν•˜λ“œλŠ” λΆ€μˆ΄μ§€λ©΄ 볡원이 μ•„μ˜ˆ μ•ˆλœλ‹€λŠ” λ¬΄μ„œμš΄ νŠΉμ§•μ„ 가지고 μžˆλ‹€.😲


λ©”λͺ¨λ¦¬μ— λŒ€ν•΄μ„œ κ°„λ‹¨νžˆ μ‚΄νŽ΄λ³΄λ©΄, λ©”λͺ¨λ¦¬λŠ” μ—„μ²­λΉ λ₯΄μ§€λ§Œ μš©λŸ‰μ΄ μž‘λ‹€.
DB에 μ €μž₯ν•˜λ©΄ 물리적인 μ €μž₯ν•  수 있기 λ•Œλ¬Έμ—, κ»λ‹€μΌœλ„ 사라지지 μ•ŠλŠ”λ‹€.

πŸ“™ κ΄€κ³„ν˜• 데이터 베이슀(RDBMS)

RDBMS(Relational DataBase Management System)으둜 κ΄€κ³„ν˜• 데이터 λͺ¨λΈμ— 기초λ₯Ό λ‘” 데이터 베이슀 μ‹œμŠ€ν…œμ„ λ§ν•œλ‹€.

1. λͺ¨λ“  데이터λ₯Ό 2차원 ν…Œμ΄λΈ”(Table)λ“€λ‘œ ν‘œν˜„ν•  수 μžˆλ‹€.

  • Column (μ—΄) : μ»¬λŸΌμ€ ν…Œμ΄λΈ”μ˜ 각 ν•­λͺ©(id, μ˜ν™”μ œλͺ©, 감독, κ°œλ΄‰μΌ)을 μ˜λ―Έν•œλ‹€.
  • Row (ν–‰) : λ‘œμš°λŠ” 각 ν•­λͺ©λ“€μ˜ μ‹€μ œ 값이닀. (μ˜ν™”μ œλͺ©1,감독1,κ°œλ΄‰μΌ1)

ex) ꡬ글 μŠ€ν”„λ ˆλ“œ μ‹œνŠΈ
νŠΉμ •μ‹œνŠΈμ— μ˜ν™”λ©΄ μ˜ν™”μ— κ΄€λ ¨λ˜μ–΄μ„œλ§Œ λ„£κ³ , μ±…μ΄λΌλŠ” λ°μ΄ν„°λŠ” μ˜ν™”μ™€ 같이 넣지 μ•ŠλŠ”λ‹€.

2. ν…Œμ΄λΈ”μ˜ 각 ν–‰(Row)은 자기만의 κ³ μœ ν‚€ (Primary Key)λ₯Ό 가지고 μžˆλ‹€.

  • 각 RowλŠ” λ‹€λ₯Έ λ‘œμš°μ™€ κ²ΉμΉ˜μ§€ μ•ŠλŠ”, ν•˜λ‚˜μ˜ λ°μ΄ν„°λ§Œ μ •ν™•ν•˜κ²Œ 지칭할 수 μžˆλŠ” κ³ μœ ν•œ 번호λ₯Ό 가지고 μžˆλ‹€.

  • Primary Keyλ₯Ό 톡해 νŠΉμ • 둜우λ₯Ό μ°Ύκ±°λ‚˜, 이용(reference)ν•  수 μžˆλ‹€.

  • RDMμ—μ„œλŠ” μ•žμ— Keyκ°’ 1234λ₯Ό μ•Œμ•„μ„œ μ •ν•  μˆ˜λ„ μžˆλ‹€.

  • 즉, PK :κ³ μœ ν•œ ν‚€ ➑ κ²ΉμΉ˜μ§€ μ•ŠμœΌλ©°, 식별을 μœ„ν•΄ μ •ν™•νžˆ 지칭 ν•  수 μžˆλŠ” 고유 λ²ˆν˜Έμ΄λ‹€.

3. 각각의 ν…Œμ΄λΈ”λ“€μ€ μ„œλ‘œ μƒν˜Έ 관련성을 가지고 μ„œλ‘œ 연결될 수 μžˆλ‹€.

(데이터 베이슀λ₯Ό κ΅¬μ„±ν•˜λŠ” ν…Œμ΄λΈ”μ€ 수백, 수천 κ°œκ°€ 될 μˆ˜λ„μžˆλ‹€.)

  • "κ΄€κ³„ν˜• 데이터 베이슀" λΌλŠ” μ˜λ―ΈλŠ” DBλ₯Ό κ΅¬μ„±ν•˜κ³  μžˆλŠ” ν…Œμ΄λΈ”λ“€μ΄ μ„œλ‘œ μƒν˜Έκ΄€λ ¨μ„±μ„ 가지고 μ—°κ²°λ˜μ–΄ μžˆλ‹€λŠ” μ˜λ―Έμ΄λ‹€.

  • 각각의 ν…Œμ΄λΈ”λ“€μ΄ μ™„μ „νžˆ 독립적이지 μ•Šκ³ , ν…Œμ΄λΈ” A와 ν…Œμ΄λΈ” Bκ°€ μ„œλ‘œ μ—°κ΄€λœ μ‚¬μ΄λΌλŠ” μ˜λ―Έμ΄λ‹€.

4. κ΄€κ³„μ˜ μœ ν˜•

  • one to one (μΌλŒ€μΌ) : μ›νˆ¬μ›μ€ ν…Œμ΄λΈ”μ„ λ‹€ ν•©μΉ μˆ˜ μžˆλ‹€.
    ν•˜λ‚˜μ˜ Aν…Œμ΄λΈ” λ°μ΄ν„°λŠ” μ˜€λ‘œμ§€ ν•˜λ‚˜μ˜ Bν…Œμ΄λΈ” 데이터와 μ—°κ²°λœλ‹€.

    ex)μ£Όλ―Όλ“±λ‘λ²ˆν˜Έ
    μ„œλ‘œμ— λ‚΄κ°€ μ°Έμ‘°ν•˜κ³  μžˆλŠ” idλ₯Ό 가지고 μžˆμ„ λ•Œ
    사싀 1:1 κ·Έλƒ₯ ν•œ λ‘œμš°μ— 넣을 수 μžˆλŠ” μ •λ³΄λ“€μ΄μ§€λ§Œ, λ‚˜λˆ„λ©΄ 쒋을 λ•Œκ°€ μžˆλ‹€. 각자 데이터가 λ§Žμ„ λ•ŒλŠ”!idnetification numbers ν…Œμ΄λΈ”μ˜ user_id μ»¬λŸΌμ€ user ν…Œμ΄λΈ”μ˜ id(pk) λ₯Ό μ°Έμ‘°ν•œλ‹€

  • one to many: λ‚˜λŠ” 혼자 면접관은 茀라고 μ‰½κ²Œ 생각할 수 μžˆλ‹€.

예λ₯Όλ“€μ–΄ μ‚¬λžŒν•œλͺ…이 강아지 많이 ν‚€μš°λŠ” 것은 κ°€λŠ₯ν•˜μ§€λ§Œ κ·Έ λ°˜λŒ€λŠ” λΆˆκ°€λŠ₯ ν•œκ²ƒ 처럼 λ‚΄ 강아지가 λ‚΄ λ™λ£Œμ˜ 강아지가 될 수 μ—†λŠ”..이런 ν˜•νƒœλŠ” one to many둜 ν‘œν˜„ν•  수 μžˆλ‹€. 또, πŸ’‘ ν¬λ¦°ν‚€λŠ” κΌ­ 倚μͺ½μ— μžˆμ–΄μ•Όν•œλ‹€.

  • many to many : ν•˜λ‚˜μ˜ Aν…Œμ΄λΈ” λ°μ΄ν„°λŠ” Bν…Œμ΄λΈ”μ˜ μ—¬λŸ¬ 데이터와 연결될 수 μžˆλ‹€.

ex) 티셔츠라고 κ°€μ •ν–ˆμ„ λ•Œ abc μ’…λ₯˜μ˜ ν‹°μ…”μΈ , abc μ’…λ₯˜μ˜ μ»¬λŸ¬κ°€ κ°€λŠ₯ν•˜λ‹€κ³  ν•˜λ©΄, μ–‘μͺ½μœΌλ‘œ one to many인 것이라고 λ³Ό 수 μžˆλ‹€.

쀑볡을 μ΅œμ†Œν™”ν•΄μ•Όν•˜λŠ” 것이 데이터 베이슀의 핡심이라고 λ³Ό 수 μžˆλŠ”λ°
κ·Έ 방법을 πŸ’‘ nomalization μ •κ·œν™”λΌκ³  λ§ν•œλ‹€.

ν•œμ½”λ“œμ— ν•œ 셀에 데이터가 μ—¬λŸ¬ 개 λ“€μ–΄κ°€λŠ” 것은 μ΅œλŒ€ν•œ μ§€μ–‘ν•΄μ•Όν•œλ‹€.


μ„œλ‘œ 각자 λ‹€λ₯Έ ν…Œμ΄λΈ”μ˜ μ—¬λŸ¬ 데이터와 μ—°κ²° 될 λ•Œμ—λŠ” 두 ν…Œμ΄λΈ”μ— μ†ν•œ ν…Œμ΄ν„°μ˜ 쑰합을 μž…λ ₯ν•˜κΈ° μœ„ν•œ 쀑간 ν…Œμ΄λΈ”μ΄ ν˜•μ„±λœλ‹€.

πŸ‘©β€πŸ« foreign key? μ™œλž˜ν‚€λ₯Ό μ˜λ―Έν•˜λŠ”λ°, μœ μ €μ˜ identification λ„˜λ²„κ°€ λˆ„κ΅¬μ˜ identification인지에 λŒ€ν•œ μ°Έμ‘° λŒ€μƒμ„ μ˜λ―Έν•œλ‹€. 즉, μ£ΌμΈμž„μ„ μ•Œλ €μ£ΌλŠ” 것이 foreign key
μœ μ €λ°μ΄ν„°μ— μ€‘λ³΅λ˜λŠ” μš”μ†Œκ°€ λ„ˆλ¬΄ λ§Žμ•„μ„œ 그것을 μ°Έμ‘°ν•  수 μžˆλŠ” foreign keyλ₯Ό κ°€μ§ˆ 수 μžˆλŠ”λ°, λ‹€μ˜ ν…Œμ΄λΈ”μ—μ„œ fkλŠ” λ‹€λ₯Έμͺ½μ—μ„œλŠ” pk이닀.

0개의 λŒ“κΈ€