πŸ’»/CS

[DB] 관계 데이터 λͺ¨λΈ

ruhz 2020. 10. 28. 11:26

0. 관계 데이터 λͺ¨λΈμ˜ κ°œλ…

관계 데이터 λͺ¨λΈ
  - 논리적 데이터 λͺ¨λΈ 쀑 ν•˜λ‚˜
  - ν•˜λ‚˜μ˜ 개체 데이터>> ν•˜λ‚˜μ˜ λ¦΄λ ˆμ΄μ…˜μ— μ €μž₯

 

 

λ¦΄λ ˆμ΄μ…˜(relation)
  - ν•˜λ‚˜μ˜ κ°œμ²΄μ— κ΄€ν•œ 데이터λ₯Ό (ν–‰κ³Ό μ—΄λ‘œ κ΅¬μ„±λœ)2D ν…Œμ΄λΈ”μ˜ ꡬ쑰둜 μ €μž₯ν•œ 것
  - λ¦΄λ ˆμ΄μ…˜ λ‚΄μ—μ„œλ„ 데이터 간에 관계가 μƒμ„±λ˜κ³ , λ¦΄λ ˆμ΄μ…˜ 간에도 관계가 생성됨
  - μ—΄μ—λŠ” 속성 κ°’, 행은 νŠœν”Œμ΄λΌκ³ λ„ ν•˜λ©°, 데이터가 λ‚˜λž€νžˆ 듀어감
  - 도메인 : ν•˜λ‚˜μ˜ 속성이 κ°€μ§ˆ 수 μžˆλŠ” λͺ¨λ“  κ°’μ˜ 집합. μ†μ„±μ˜ νŠΉμ„±μ„ κ³ λ €ν•΄, 데이터 νƒ€μž…μ„ μ •μ˜ν•΄μ•Όν•¨
  - 차수(degree) : ν•˜λ‚˜μ˜ λ¦΄λ ˆμ΄μ…˜μ—μ„œ μ†μ„±μ˜ 전체 개수
  - 카닀널리티(cardinality) : ν•˜λ‚˜μ˜ λ¦΄λ ˆμ΄μ…˜μ—μ„œ νŠœν”Œμ˜ 전체 개수

 

λ¦΄λ ˆμ΄μ…˜μ˜ ꡬ성
  - λ¦΄λ ˆμ΄μ…˜ μŠ€ν‚€λ§ˆ
  - λ¦΄λ ˆμ΄μ…˜ μΈμŠ€ν„΄μŠ€

β€» λ°μ΄ν„°λ² μ΄μŠ€μ˜ ꡬ성
    λ°μ΄ν„°λ² μ΄μŠ€ μŠ€ν‚€λ§ˆ
    - λ°μ΄ν„°λ² μ΄μŠ€μ˜ 전체 ꡬ쑰
    - λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό κ΅¬μ„±ν•˜λŠ” λ¦΄λ ˆμ΄μ…˜ μŠ€ν‚€λ§ˆμ˜ λͺ¨μŒ
   λ°μ΄ν„°λ² μ΄μŠ€ μΈμŠ€ν„΄μŠ€
    - λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό κ΅¬μ„±ν•˜λŠ” λ¦΄λ ˆμ΄μ…˜ μΈμŠ€ν„΄μŠ€μ˜ λͺ¨μŒ

 

λ¦΄λ ˆμ΄μ…˜ μŠ€ν‚€λ§ˆ
    - λ¦΄λ ˆμ΄μ…˜μ˜ 논리적 ꡬ쑰(속성, 도메인, 차수)
    - λ¦΄λ ˆμ΄μ…˜μ˜ 이름과 λ¦΄λ ˆμ΄μ…˜μ— ν¬ν•¨λœ λͺ¨λ“  속성 μ΄λ¦„μœΌλ‘œ μ •μ˜ (ex. 고객 λ¦΄λ ˆμ΄μ…˜ : 고객(ID, 이름, λ‚˜μ΄, 적립금))
    - λ¦΄λ ˆμ΄μ…˜ 내포(relation intension)라고도 함
    - 정적(static)

 

λ¦΄λ ˆμ΄μ…˜ μΈμŠ€ν„΄μŠ€
    - μ–΄λŠ ν•œ μ‹œμ μ— λ¦΄λ ˆμ΄μ…˜μ— μ‘΄μž¬ν•˜λŠ” νŠœν”Œλ“€μ˜ 집합
    - λ¦΄λ ˆμ΄μ…˜ μ™Έμ—°(relation extension)이라고도 함
    - 동적(dynamic)

 

λ¦΄λ ˆμ΄μ…˜μ˜ νŠΉμ„±
  - νŠœν”Œμ˜ μœ μΌμ„± : ν•˜λ‚˜μ˜ λ¦΄λ ˆμ΄μ…˜μ—λŠ” λ™μΌν•œ νŠœν”Œμ΄ μ‘΄μž¬ν•  수 μ—†λ‹€
  - νŠœν”Œμ˜ λ¬΄μˆœμ„œ : ν•˜λ‚˜μ˜ λ¦¬λ ˆμ΄μ…˜μ—μ„œ νŠœν”Œ μ‚¬μ΄μ˜ μˆœμ„œλŠ” λ¬΄μ˜λ―Έν•˜λ‹€
  - μ†μ„±μ˜ λ¬΄μˆœμ„œ : ν•˜λ‚˜μ˜ λ¦΄λ ˆμ΄μ…˜μ—μ„œ 속성 μ‚¬μ΄μ˜ μˆœμ„œλŠ” λ¬΄μ˜λ―Έν•˜λ‹€
  - μ†μ„±μ˜ μ›μžμ„± : 속성 κ°’μœΌλ‘œ μ›μžκ°’λ§Œ μ‚¬μš©ν•  수 μžˆλ‹€

 

ν‚€(key)
  - λ¦΄λ ˆμ΄μ…˜μ—μ„œ νŠœν”Œλ“€μ„ μœ μΌν•˜κ²Œ κ΅¬λ³„ν•˜λŠ” 속성(λ“€μ˜ 집합)
  - νŠΉμ • νŠœν”Œμ„ 식별할 λ•Œ μ‚¬μš©ν•˜λŠ” 속성(λ“€μ˜ 집합)
  - νŠœν”Œμ˜ μœ μΌμ„±μœΌλ‘œ 인해, ν‚€ 속성 ν•˜λ‚˜λŠ” λ°˜λ“œμ‹œ 값이 λ‹¬λΌμ„œ νŠœν”Œλ“€μ„ μ„œλ‘œ ꡬ뢄할 수 있게 해야함1
  - λ¦΄λ ˆμ΄μ…˜ κ°„μ˜ 관계λ₯Ό λ§ΊλŠ” 데에도 μ‚¬μš©

 

ν‚€μ˜ νŠΉμ„±
  - μœ μΌμ„± : ν•˜λ‚˜μ˜ λ¦΄λ ˆμ΄μ…˜μ—μ„œ λͺ¨λ“  νŠœν”Œμ€ μ„œλ‘œ λ‹€λ₯Έ ν‚€ 값을 가져야함
  - μ΅œμ†Œμ„± : κΌ­ ν•„μš”ν•œ μ΅œμ†Œν•œμ˜ μ†μ„±λ“€λ‘œλ§Œ ν‚€λ₯Ό ꡬ성함

 

ν‚€μ˜ μ’…λ₯˜
  - μŠˆνΌν‚€ : μœ μΌμ„±μ„ λ§Œμ‘±ν•˜λŠ” 속성(λ“€μ˜ 집합)γ…‘κ΅¬λ³„λ§Œ 되면 됨
  - 후보킀 : μœ μΌμ„±κ³Ό μ΅œμ†Œμ„±μ„ λ§Œμ‘±ν•˜λŠ” 속성(λ“€μ˜ 집합)γ…‘ν‚€λ₯Ό μ΅œμ†Œν•œμœΌλ‘œ 쀄여야함
  - κΈ°λ³Έν‚€ : 후보킀 μ€‘μ—μ„œ, 기본적으둜 μ‚¬μš©ν•˜κΈ°μœ„ν•΄ μ„ νƒν•œ ν‚€(ex. ID)γ…‘nullκ°’X, ν‚€κ°’ 변동X, λ¦΄λ ˆμ΄μ…˜ μŠ€ν‚€λ§ˆμ—μ„  밑쀄
  - λŒ€μ²΄ν‚€ : κΈ°λ³Έν‚€λ‘œ μ„ νƒλ˜μ§€ λͺ»ν•œ 후보킀
  - μ™Έλž˜ν‚€ : λ‹€λ₯Έ λ¦΄λ ˆμ΄μ…˜μ˜ κΈ°λ³Έν‚€λ₯Ό μ°Έμ‘°ν•˜λŠ” 속성(λ“€μ˜ 집합)  //μ°Έμ‘°ν•  λ•Œ, 속성이름은 달라도 도메인은 같아야함

 

 

 

1. 관계 데이터 λͺ¨λΈμ˜ μ œμ•½

무결성 μ œμ•½μ‘°κ±΄(integrity constraint)
  - 무결성 : 데이터 결함이 μ—†λŠ” μƒνƒœ, 즉 μ •ν™•ν•˜κ³  μœ νš¨ν•˜κ²Œ μœ μ§€ν•˜λŠ” 것
  - λ°μ΄ν„°μ˜ 무결성을 보μž₯ν•˜κ³  μΌκ΄€λœ μƒνƒœλ‘œ μœ μ§€ν•˜κΈ° μœ„ν•œ κ·œμΉ™
  - 도메인 무결성 μ œμ•½μ‘°κ±΄ : νŠœν”Œλ“€μ΄ 각 μ†μ„±μ˜ 도메인에 μ§€μ •λœ κ°’λ§Œμ„ 가져야함
  - 개체 무결성 μ œμ•½μ‘°κ±΄ : κΈ°λ³Έν‚€ μ œμ•½. κΈ°λ³Έν‚€λŠ” 널값을 같지 μ•Šκ³ , λ¦΄λ ˆμ΄μ…˜ 내에 였직 ν•˜λ‚˜λ§Œ 쑴재
  - μ°Έμ‘° 무결성 μ œμ•½μ‘°κ±΄ : μ™Έλž˜ν‚€ μ œμ•½. μ™œλž˜ν‚€λŠ” λΆ€λͺ¨ λ¦΄λ ˆμ΄μ…˜μ˜ 기본킀와 도메인이 μΌμΉ˜ν•΄μ•Όν•¨

 

개체 무결성 μ œμ•½μ‘°κ±΄(entity integrity constraint)
  - μ‚½μž… : κΈ°λ³Έν‚€ 값이 κ°™μœΌλ©΄ μ‚½μž…μ΄ κΈˆμ§€λ¨
  - μˆ˜μ • : κΈ°λ³Έν‚€λŠ” μœ μΌν•˜μ§€ μ•Šμ€ κ°’μ΄λ‚˜ λ„κ°’μœΌλ‘œ μˆ˜μ • λΆˆκ°€λŠ₯
  - μ‚­μ œ : νŠΉλ³„ν•œ 확인이 ν•„μš”ν•˜μ§€ μ•ŠμœΌλ©° μ¦‰μ‹œ μˆ˜ν–‰ν•¨

 

μ°Έμ‘° 무결성 μ œμ•½μ‘°κ±΄(referential integrity constraint)
  - μ‚½μž… : λΆ€λͺ¨λŠ” μƒκ΄€μ—†μ§€λ§Œ, μžμ‹μ€ λΆ€λͺ¨ 킀값에 μ™Έλž˜ν‚€ 값이 μ—†μœΌλ©΄ μ‚½μž… κΈˆμ§€
  - μˆ˜μ • : λΆ€λͺ¨ λ¦΄λ ˆμ΄μ…˜ μˆ˜μ • μ‹œ, μ‚­μ œ μ œμ•½μ‘°κ±΄μ— 따라 μ²˜λ¦¬γ…‘μ‚½μž… μ œμ•½μ‘°κ±΄μ— 따라 처리
  - μ‚­μ œ : μžμ‹μ€ μƒκ΄€μ—†μ§€λ§Œ, λΆ€λͺ¨λŠ” (μ¦‰μ‹œ μž‘μ—… 쀑지, μžμ‹ νŠœν”Œλ“€ μ‚­μ œ, λ‹€λ₯Έκ°’μœΌλ‘œ λ³€κ²½, NULL κ°’μœΌλ‘œ μ„€μ •)