🧱 SQL

데이터 λͺ¨λΈλ§μ˜ 4 μš”μ†Œ - μ—”ν„°ν‹°, 속성, 관계, μ‹λ³„μž

ν–‰νŒ½ 2023. 12. 28. 14:52

1️⃣ μ—”ν„°ν‹°(Entity)

개체(독립체)

μ •λ³΄μ˜ μ„Έκ³„μ—μ„œ 의미 μžˆλŠ” ν•˜λ‚˜μ˜ 정보 λ‹¨μœ„

β“’CSE YouTube

 

  • νŠΉμ§•
    • μ—…λ¬΄μ—μ„œ ν•„μš”λ‘œ ν•˜λŠ” 정보
    • 식별 κ°€λŠ₯ μ—¬λΆ€ : μΈμŠ€ν„΄μŠ€κ°€ μ‹λ³„μžμ— μ˜ν•΄ ν•œ κ°œμ”©λ§Œ 쑴재
    • μΈμŠ€ν„΄μŠ€(Instance)의 μ§‘ν•© : 2개 μ΄μƒμ˜ μΈμŠ€ν„΄μŠ€λ‘œ ꡬ성됨
    • 업무 ν”„λ‘œμ„ΈμŠ€μ— μ˜ν•΄ ν™œμš©λ¨
    • 속성(Attribute)을 포함함
    • 관계(Relationship)의 쑴재

 

  • λΆ„λ₯˜β‘  유/λ¬΄ν˜•μ— λ”°λ₯Έ λΆ„λ₯˜
μœ ν˜• μ—”ν„°ν‹° 물리적 ν˜•νƒœκ°€ μ‘΄μž¬ν•¨
μ•ˆμ •μ , 지속적이어야 함
ex. μƒν’ˆ, 강사
κ°œλ… μ—”ν„°ν‹° κ°œλ…μ  μ •λ³΄λ‘œ ꡬ뢄됨
ex. ν•™κ³Ό, μ½”μŠ€λ‹₯ μ’…λͺ©
사건 μ—”ν„°ν‹° νŠΉμ • μ΄λ²€νŠΈμ— 쒅속됨
ex. 이벀트 응λͺ¨, μ£Όλ¬Έ

 

 

  • λΆ„λ₯˜β‘‘ λ°œμƒ μ‹œμ μ— λ”°λ₯Έ λΆ„λ₯˜
κΈ°λ³Έ/ν‚€ μ—”ν„°ν‹°
(Basic Entity)
관계가 μ•„λ‹Œ 독립적인 생성이 κ°€λŠ₯ = 고유 μ£Όμ‹λ³„μžλ₯Ό 가짐
ex. 고객, μƒν’ˆ
쀑심 μ—”ν„°ν‹°
(Main Entity)
κΈ°λ³Έ μ—”ν„°ν‹°λ‘œλΆ€ν„° λ°œμƒν•˜λŠ” μ—…λ¬΄μ—μ„œ 쀑심적 μ—­ν• μ˜ μ—”ν„°ν‹°
λ‹€λ₯Έ μ—”ν„°ν‹°μ™€μ˜ 관계λ₯Ό 톡해 ν–‰μœ„ μ—”ν„°ν‹°λ₯Ό 생성
ex. μ£Όλ¬Έ, μ·¨μ†Œ
ν–‰μœ„ μ—”ν„°ν‹°
(Activie Entity)
μ—¬λŸ¬ μ—”ν„°ν‹°λ‘œλΆ€ν„° λ§Œλ“€μ–΄μ§ 
ex. μ£Όλ¬Έ λ‚΄μ—­, μ·¨μ†Œ λ‚΄

 

 

  • μ—”ν„°ν‹° λͺ…λͺ…
    • λ˜λ„λ‘ 업무에 μ‚¬μš©ν•˜λŠ” μ–Έμ–΄ μ‚¬μš©
    • λ˜λ„λ‘ μΆ•μ•½μ–΄ X
    • λ‹¨μˆ˜ λͺ…사 μ‚¬μš©
    • 띄어쓰기 X
    • μœ μΌν•œ(unique) 이름 = 쀑볡 X
    • 생성 μ˜λ―ΈλŒ€λ‘œ 이름을 λΆ€μ—¬

 

 

 

2️⃣ 속성(Attribute)

μ—…λ¬΄μ—μ„œ ν•„μš”λ‘œ ν•˜λŠ” μΈμŠ€ν„΄μŠ€λ‘œ κ΄€λ¦¬ν•˜κ³ μž ν•˜λŠ”, μ˜λ―Έμƒ 더 이상 λΆ„λ¦¬λ˜μ§€ μ•ŠλŠ”, μ΅œμ†Œμ˜ 데이터 λ‹¨μœ„

μΈμŠ€ν„΄μŠ€κ°€ κ°€μ§„ 성격(μ„±μ§ˆ)

 

  • μ—”ν„°ν‹°, μΈμŠ€ν„΄μŠ€, 속성, μ†μ„±κ°’μ˜ 관계
    • 1 μ—”ν„°ν‹° = 2개 μ΄μƒμ˜ μΈμŠ€ν„΄μŠ€μ˜ μ§‘ν•©, 2개 μ΄μƒμ˜ μ†μ„±μœΌλ‘œ ꡬ성
    • 1 속성 = 1개의 속성값을 가짐

 

  • νŠΉμ§•
    • μ—…λ¬΄μ—μ„œ ν•„μš”λ‘œ 함
    • μ˜λ―Έμƒ 더 이상 λΆ„λ¦¬λ˜μ§€ μ•ŠλŠ”, κ·Έ 자체둜 독립성 μœ μ§€
    • μ—”ν„°ν‹°λ₯Ό μ„€λͺ…ν•˜κ³ , μΈμŠ€ν„΄μŠ€μ˜ κ΅¬μ„±μš”μ†Œκ°€ 됨
    • μ •κ·œν™” 이둠에 기반, μ •ν•΄μ§„ μ£Όμ‹λ³„μžμ— ν•¨μˆ˜μ  쒅속성*을 가짐
      • Functional Dependency : X → Y (κ²°μ •μž(X)에 μ˜ν•΄ μ’…μ†μž(Y)의 값이 λ‹¬λΌμ§ˆ λ•Œ, YλŠ” X에 ν•¨μˆ˜μ  쒅속성이 있음)
    • ν•˜λ‚˜μ˜ 속성은 ν•œ 개 κ°’λ§Œ 가짐

 

  • λΆ„λ₯˜β‘  νŠΉμ§•μ— λ”°λ₯Έ λΆ„λ₯˜
κΈ°λ³Έ 속성
(Basic Attribute)
μ—…λ¬΄λ‘œλΆ€ν„° μΆ”μΆœλœ λͺ¨λ“  속성
섀계 속성
(Designed Attribute)
데이터 λͺ¨λΈλ§, μ—…λ¬΄μ˜ κ·œμΉ™ν™” 등을 μœ„ν•΄ μƒˆλ‘œ λ§Œλ“€κ±°λ‚˜ λ³€ν˜•ν•˜μ—¬ μ •μ˜ν•˜λŠ” 속성
νŒŒμƒ 속성
(Derived Attribute)
λ‹€λ₯Έ 속성에 영ν–₯을 λ°›μ•„ λ°œμƒν•˜λŠ” 속성 ex. κ³„μ‚°λœ κ°’
*λ°μ΄ν„°μ˜ μ •ν•©μ„±(μ •ν™•μ„±) μœ μ§€ μœ„ν•΄ νŒŒμƒμ  속성을 적게 μ •μ˜ν•˜λŠ” 것이 μ’‹μŒ

 

 

  • λΆ„λ₯˜β‘‘ ꡬ성 방식에 λ”°λ₯Έ λΆ„λ₯˜
PK(Primary Key) 속성 μ£Όμš” ν‚€
μ—”ν„°ν‹°λ₯Ό 식별할 수 μžˆλŠ” 속성
FK(Foreign Key) 속성 μ™Έλž˜ ν‚€
λ‹€λ₯Έ μ—”ν„°ν‹°μ™€μ˜ 관계에 ν¬ν•¨λœ 속성
일반 속성 PK, FK에 ν¬ν•¨λ˜μ§€ μ•Šμ€ λ‹€λ₯Έ 속성

 

 

  • 속성 λͺ…λͺ…
    • λ˜λ„λ‘ 업무에 μ‚¬μš©ν•˜λŠ” μ–Έμ–΄ μ‚¬μš©
    • λ˜λ„λ‘ μΆ•μ•½μ–΄ X
    • μ„œμˆ ν˜•λ³΄λ‹€λŠ” λͺ…μ‚¬ν˜• μ‚¬μš©
    • μˆ˜μ‹μ–΄ μ΅œμ†Œν™”
      • λͺ…μ‹œμ  ν˜•νƒœμ˜ 의미 전달을 μœ„ν•¨
    • 전체 데이터 λͺ¨λΈμ—μ„œ 유일(unique)ν•˜κ²Œ μž‘μ„±ν•΄μ•Ό 함
      • 데이터 μ •ν•©μ„± μœ μ§€μ™€ λ°˜μ •κ·œν™” μž‘μ—…μ„ μˆ˜ν–‰ν•  λ•Œ μ†μ„±μ˜ μΆ©λŒμ„ ν•΄κ²°ν•˜λŠ” 데 도움 됨

 

  • 도메인
    • 각 속성이 κ°€μ§ˆ 수 μžˆλŠ” κ°’μ˜ λ²”μœ„
    • μ—”ν„°ν‹° λ‚΄μ—μ„œ 속성에 λŒ€ν•œ 데이터 νƒ€μž…κ³Ό 크기, μ œμ•½ 사항 등을 지정함

 

 

 

3️⃣ 관계(Relationship)

μ—”ν„°ν‹°μ˜ μΈμŠ€ν„΄μŠ€ μ‚¬μ΄μ˜ 논리적인 μ—°κ΄€μ„±

μ„œλ‘œμ—κ²Œ 쑴재의 ν˜•νƒœ ν˜Ήμ€ ν–‰μœ„λ‘œμ„œμ˜ 연관성이 λΆ€μ—¬λœ μƒνƒœ

 

  • 관계 νŽ˜μ–΄λ§
    • μ—”ν„°ν‹° μ•ˆμ— μΈμŠ€ν„΄μŠ€κ°€ κ°œλ³„μ μœΌλ‘œ μ—°κ²°λ˜μ–΄ μžˆλŠ” ꡬ쑰
    • 각 μ—”ν„°ν‹°μ˜ μΈμŠ€ν„΄μŠ€λ“€μ€ μžμ‹ μ΄ κ΄€λ ¨λœ μΈμŠ€ν„΄μŠ€λ“€κ³Ό κ΄€κ³„μ˜ μ–΄μ»€λŸ°μŠ€λ‘œ μ°Έμ—¬ν•˜λŠ” ν˜•νƒœ

 

  • κ΄€κ³„μ˜ λΆ„λ₯˜
    • μ‘΄μž¬μ— μ˜ν•œ 관계 : μ†Œμ†/포함 ex. DBνŒ€μ— 홍길동 사원
    • ν–‰μœ„μ— μ˜ν•œ 관계 : 행동/ν–‰μœ„μ˜ κ²°κ³Ό ex. 고객이 μ£Όλ¬Έν•œλ‹€

 

  • κ΄€κ³„μ˜ ν‘œκΈ°
    • 관계λͺ…(Membership)
      • μ—”ν„°ν‹°κ°€ 관계에 μ°Έμ—¬ν•˜λŠ” ν˜•νƒœ
      • κ΄€κ³„μ‹œμž‘μ  → 관계끝점
      • IE ν‘œκΈ°λ²•, Barker ν‘œκΈ°λ²•μœΌλ‘œ ν‘œκΈ° κ°€λŠ₯
    • 관계 ν‘œκΈ°λ²•
      • 개수 ν‘œν˜„, 식별/비식별 관계 ν‘œν˜„
        β“’μŠ€νŒŒλ₯΄νƒ€μ½”λ”©ν΄λŸ½ SQLD 자격증 μ½”μŠ€ κ°•μ˜ 자료
  • κ΄€κ³„μ°¨μˆ˜
    • 두 κ°œμ˜ μ—”ν„°ν‹°κ°„ κ΄€κ³„μ—μ„œ μ°Έμ—¬μžμ˜ μˆ˜λ₯Ό ν‘œν˜„ν•˜λŠ” κ²ƒ 
      • 1:1  ex. 사원 - ν•™λ ₯사항
      • 1:M  ex. κ²Œμ‹œλ¬Ό - λŒ“κΈ€
      • M:N : μ„œλ‘œκ°€ μ„œλ‘œμ—κ²Œ 1:N 관계λ₯Ό 가짐 ex. μ£Όλ¬Έ - μ œν’ˆ

 

  • 관계선택사양
    • ν•„μˆ˜(Mandatory Membership)  ex. "κ²Œμ‹œλ¬Ό" - λŒ“κΈ€
    • 선택참여(Optional Membership)  ex. κ²Œμ‹œλ¬Ό - "λŒ“κΈ€"
      β“’μŠ€νŒŒλ₯΄νƒ€μ½”λ”©ν΄λŸ½ SQLD 자격증 μ½”μŠ€ κ°•μ˜ 자료

 

 

4️⃣ μ‹λ³„μž(Identifier)

ν•˜λ‚˜μ˜ 엔터티에 κ΅¬μ„±λ˜μ–΄ μžˆλŠ” μ—¬λŸ¬ 개의 속성 쀑, μ—”ν„°ν‹°λ₯Ό λŒ€ν‘œν•  수 μžˆλŠ” μœ μΌν•œ(unique) 속성(Attribute)

집합체λ₯Ό ꡬ뢄할 수 μžˆλŠ” κ΅¬λΆ„μž

 

  • νŠΉμ§•
    • μœ μΌμ„±
    • μ΅œμ†Œμ„±
    • λΆˆλ³€μ„±
    • μ‘΄μž¬μ„± : NULL을 ν—ˆμš©ν•˜μ§€ μ•ŠμŒ

 

  • λΆ„λ₯˜β‘  λŒ€ν‘œμ„± μ—¬λΆ€ (=λ‹€λ₯Έ 엔터티와 μ°Έμ‘° 관계 연결이 κ°€λŠ₯ν•œκ°€?)
    • μ£Όμ‹λ³„μž: κ°€λŠ₯, Primary Key μ—­ν• 
    • λ³΄μ‘°μ‹λ³„μž: λΆˆκ°€λŠ₯, Unique Index μ—­ν• 

 

  • λΆ„λ₯˜β‘‘ 슀슀둜 생성 μ—¬λΆ€
    • λ‚΄λΆ€μ‹λ³„μž : μ—”ν„°ν‹° λ‚΄λΆ€μ—μ„œ 생성됨
    • μ™ΈλΆ€μ‹λ³„μž : λ‹€λ₯Έ μ—”ν„°ν‹°μ™€μ˜ 관계λ₯Ό 톡해 λ°›μ•„μ˜€λŠ” μ‹λ³„μž

 

  • λΆ„λ₯˜β‘’ μ†μ„±μ˜ 수
    • λ‹¨μΌμ‹λ³„μž : ν•˜λ‚˜μ˜ μ†μ„±μœΌλ‘œ ꡬ성됨
    • λ³΅ν•©μ‹λ³„μž : λ‘˜ μ΄μƒμ˜ μ†μ„±μœΌλ‘œ ꡬ성됨

 

  • λΆ„λ₯˜β‘£ λŒ€μ²΄ μ—¬λΆ€
    • λ³Έμ§ˆμ‹λ³„μž : 업무에 μ˜ν•΄ λ§Œλ“€μ–΄μ§
    • μΈμ‘°μ‹λ³„μž : μΈμœ„μ μœΌλ‘œ λ§Œλ“€μ–΄μ§

 

  • μ‹λ³„μž 관계 vs λΉ„μ‹λ³„μž 관계

 

[SQLD] μ‹λ³„μž 관계, λΉ„μ‹λ³„μž 관계

μ—…λ‘œλ“œμ€‘..

velog.io