Skip to content

Latest commit

ย 

History

History
115 lines (88 loc) ยท 3.71 KB

6. Relational Database.md

File metadata and controls

115 lines (88 loc) ยท 3.71 KB

๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ค๊ณ„

Relational Database

์ค‘์š” ๊ฐœ๋…

  • Table = relation
  • Column = field : ์—ด
  • Record = tuple : ํ–‰

- Entity : ๊ฐ์ฒด๋ผ๋Š” ๋œป - ์ •๋ณด๋ฅผ ์ €์žฅ/๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ์ง‘ํ•œ - ex. ํ•™์ƒ์ด๋ผ๋Š” ์—”ํ‹ฐํ‹ฐ๋Š” ํ•™๋ฒˆ, ์ด๋ฆ„, ํ•™์ , ์ „๊ณต ๋“ฑ์˜ ์†์„ฑ์ด ์žˆ๋‹ค.


ํ…Œ์ด๋ธ” ๊ฐ„์˜ ๊ด€๊ณ„

1. 1:1 ๊ด€๊ณ„

  • ์ „ํ™”๋ฒˆํ˜ธ, ์ฃผ๋ฏผ๋ฒˆํ˜ธ์™€ ๊ฐ™์€ ๋‹จ์ผ ์—ฐ๊ฒฐ
  • ์ „ํ™”๋ฒˆํ˜ธ, ์ฃผ๋ฏผ๋ฒˆํ˜ธ๋Š” ์‚ฌ์šฉ์ž์—๊ฒŒ ์†ํ•œ๋‹ค.
  • 1:1 ๊ด€๊ณ„๋ผ๋ฉด ์ง์ ‘ ์ €์žฅํ•˜๋Š” ๊ฒŒ ๋‚˜์„ ์ˆ˜ ์žˆ๋‹ค.
  • 1 ์œ ์ € - 1 ์ „ํ™”๋ฒˆํ˜ธ
  • 1 ์ „ํ™”๋ฒˆํ˜ธ - 1 ์œ ์ €

2. 1:N ์ผ๋Œ€๋‹ค ๊ด€๊ณ„

  • ๋ถ€์„œ / ์ง์›
  • ๋ถ€์„œ๋Š” ์—ฌ๋Ÿฌ ์ง์›์„ ๊ฐ€์ง„๋‹ค.
  • ์ง์›์€ ํ•˜๋‚˜์˜ ๋ถ€์„œ๋งŒ์„ ๊ฐ€์ง„๋‹ค.
  • 1 ๋ถ€์„œ - ๋‹ค ์ง์›
  • 1 ์ง์› - 1 ๋ถ€์„œ
  • ๋ถ€์„œ <-------- ์ง์› (ํ•„์š”์กฐ๊ฑด)

3. N:M ๋‹ค๋Œ€๋‹ค ๊ด€๊ณ„

  • ๋Œ€ํ•™์ƒ / ๊ณผ๋ชฉ
  • 1 ํ•™์ƒ - ๋‹ค ๊ณผ๋ชฉ
  • 1 ๊ณผ๋ชฉ - ๋‹ค ํ•™์ƒ
  • ์ค‘๊ฐ„ ํ…Œ์ด๋ธ”์ธ "์ˆ˜๊ฐ•" ํ…Œ์ด๋ธ”์„ ์ถ”๊ฐ€๋กœ ์ƒ์„ฑํ•˜์—ฌ
  • ํ•™์ƒ๊ณผ ๊ณผ๋ชฉ ๊ฐ„์˜ ๋งคํ•‘์„ ๊ด€๋ฆฌํ•จ

4. ์ž๊ธฐ์ฐธ์กฐ ๊ด€๊ณ„

  • ์œ ์ € / ์ถ”์ฒœ์ธ
  • 1 ์œ ์ € - 1 ์ถ”์ฒœ์ธ
  • 1 ์ถ”์ฒœ์ธ - ๋‹ค ์œ ์ € (๊ฐ€๋Šฅ)
  • ๊ฐ™์€ ํ…Œ์ด๋ธ”์— ์žˆ๋Š” ๊ด€๊ณ„์ผ ๋•Œ,
  • ์ž๊ธฐ ์ž์‹ ์„ ์ฐธ์กฐํ•œ๋‹ค.

ERD ๋งตํ•‘

  1. ์‹๋ณ„๊ด€๊ณ„
    • Identifying
    • A์˜ ๊ธฐ๋ณธํ‚ค = B์˜ ๊ธฐ๋ณธํ‚ค+์™ธ๋ž˜ํ‚ค
    • B์˜ ์กด์žฌ์—ฌ๋ถ€๊ฐ€ A์—๊ฒŒ ์˜์กด์ ์ผ ๊ฒฝ์šฐ

Table: ์ฃผ๋ฌธ (Orders)

์ฃผ๋ฌธ๋ฒˆํ˜ธ (OrderID, PK) ์ฃผ๋ฌธ๋‚ ์งœ (OrderDate) ๊ณ ๊ฐID (CustomerID, FK)

Table: ๊ณ ๊ฐ (Customers)

๊ณ ๊ฐID (CustomerID, PK) ์ด๋ฆ„ (Name) ์ „ํ™”๋ฒˆํ˜ธ (Phone)

[ํ•ด์„]
๋จผ์ € ๋งตํ•‘์˜ ๋Œ€์ƒ์€ ๊ณ ๊ฐID ์ด๋‹ค.
A์—์„œ์˜ ๊ณ ๊ฐID๋Š” ์™ธ๋ž˜ํ‚ค์ด๋‹ค. (๋‹น์—ฐํ•˜๊ฒ ์ง€)
๊ทธ๋Ÿผ ๊ทธ ์™ธ๋ž˜ํ‚ค๊ฐ€ B์—์„œ๋Š” ์–ด๋–ค ์—ญํ• ์ธ์ง€ ๋ณด์ž.
B์—์„œ ๊ณ ๊ฐID๋Š” ๊ณต๊ต๋กญ๊ฒŒ๋„ ๊ธฐ๋ณธํ‚ค๋‹ค.
B์—์„œ ๊ทธ์ € ์™ธ๋ž˜ํ‚ค๊ฐ€ ์•„๋‹ˆ๋ผ ๊ธฐ๋ณธํ‚ค์ด๊ธฐ ๋•Œ๋ฌธ์—
์‹๋ณ„๊ด€๊ณ„, ์ฆ‰ ์‹ค์„ ์œผ๋กœ ๊ทธ๋ ค์ง„๋‹ค.
์™ธ๋ž˜ํ‚ค <-> ์™ธ๋ž˜ํ‚ค,๊ธฐ๋ณธํ‚ค ๊ตฌ์กฐ


  1. ๋น„์‹๋ณ„ ๊ด€๊ณ„
    • Non-Identifying
    • A์˜ ๊ธฐ๋ณธํ‚ค = B์˜ ์™ธ๋ž˜ํ‚ค
    • B๋Š” A์˜ ์กด์žฌ์—ฌ๋ถ€์™€ ๊ด€๊ณ„์—†์ด ์กด์žฌ
    • ์ผ๋ฐ˜์ ์œผ๋กœ ๋น„์‹๋ณ„ ๊ด€๊ณ„๋กœ ์กด์žฌํ•œ๋‹ค.

Table: ํ•™์ƒ (Students)

ํ•™๋ฒˆ (StudentID, PK) ์ด๋ฆ„ (Name) ํ•™๊ณผ (Department)

Table: ์„ฑ์  (Grades)

์„ฑ์ ID (GradeID, PK) ๊ณผ๋ชฉ (Subject) ํ•™๋ฒˆ (StudentID, FK) ์„ฑ์  (Score)

[ํ•ด์„]
๋จผ์ € ๋งตํ•‘์˜ ๋Œ€์ƒ์€ ํ•™๋ฒˆ์ด๋‹ค.
A์—์„œ์˜ ํ•™๋ฒˆ์€ ๊ธฐ๋ณธํ‚ค์ด๋‹ค.
B์—์„œ ํ•™๋ฒˆ์€ ์™ธ๋ž˜ํ‚ค์ด๋‹ค.
B์—์„œ ๊ทธ์ € ๋‹จ์ˆœ ์™ธ๋ž˜ํ‚ค์— ๋ถˆ๊ณผํ•˜๋‹ค.
์‹๋ณ„๊ด€๊ณ„, ์ฆ‰ ์ ์„ ์œผ๋กœ ๊ทธ๋ ค์ง„๋‹ค.
์™ธ๋ž˜ํ‚ค <-> ๊ธฐ๋ณธํ‚ค ๊ตฌ์กฐ


๋‹ค์šด๋กœ๋“œ (1)

Type1(์‹ค์„ ๊ณผ ์‹ค์„ ): ์ •ํ™•ํžˆ 1
(ํ•˜๋‚˜์˜ A๋Š” ํ•˜๋‚˜์˜ B๋กœ ์ด์–ด์ ธ ์žˆ๋‹ค.)

Type2(๊นŒ๋งˆ๊ท€๋ฐœ): ์—ฌ๋Ÿฌ๊ฐœ
(ํ•˜๋‚˜์˜ A๋Š” ์—ฌ๋Ÿฌ๊ฐœ์˜ B๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค.)

Type3(์‹ค์„ ๊ณผ ๊นŒ๋งˆ๊ท€๋ฐœ): 1๊ฐœ ์ด์ƒ
(ํ•˜๋‚˜์˜ A๋Š” ํ•˜๋‚˜ ์ด์ƒ์˜ B๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค.)

Type4(๊ณ ๋ฆฌ์™€ ์‹ค์„ ): 0 ํ˜น์€ 1
(ํ•˜๋‚˜์˜ A๋Š” ํ•˜๋‚˜ ์ดํ•˜์˜ B๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค.)

Type5(๊ณ ๋ฆฌ์™€ ๊นŒ๋งˆ๊ท€๋ฐœ): 0๊ฐœ ์ด์ƒ
(ํ•˜๋‚˜์˜ A๋Š” 0๋˜๋Š” ํ•˜๋‚˜ ์ด์ƒ์˜ B๋กœ ๊ตฌ์„ฑ๋˜ ์žˆ๋‹ค.)

๊ธฐํ˜ธ์˜ ์กฐํ•ฉ์€ ๋ณดํ†ต ๊ทธ๋ฆผ ์˜ˆ์ œ์˜
Type1, Type3, Type4, Type5๋ฅผ ์ž์ฃผ์‚ฌ์šฉํ•œ๋‹ค.


์ถœ์ฒ˜: https://eyecandyzero.tistory.com/246 https://hanamon.kr/%EA%B4%80%EA%B3%84%ED%98%95-%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4-%EC%84%A4%EA%B3%84-%EA%B4%80%EA%B3%84-%EC%A2%85%EB%A5%98/