ERD, ์–ด๋–ป๊ฒŒ ์„ค๊ณ„ํ•˜๋Š” ๊ฑธ๊นŒ?
Web/Database

ERD, ์–ด๋–ป๊ฒŒ ์„ค๊ณ„ํ•˜๋Š” ๊ฑธ๊นŒ?

๐Ÿง What is ERD?

์šฐ์„ , ERD๊ฐ€ ๋ฌด์—‡์ธ์ง€ ๋ถ€ํ„ฐ ์งš๊ณ  ๋„˜์–ด๊ฐ€์ž.

  • ERD๋ž€ Entity Relationship Diagram์˜ ์•ฝ์–ด๋กœ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ตฌ์กฐ๋ฅผ ํ•œ๋ˆˆ์— ์•Œ์•„๋ณด๊ธฐ ์œ„ํ•ด์„œ ์“ฐ์ธ๋‹ค.
  • DB๋ฅผ ๊ฐœ๋ฐœํ•˜๊ธฐ ์ „์— ๋ณด๋‹ค ๋งŽ์€ ์•„์ด๋””์–ด๋ฅผ ๋„์ถœํ•˜๊ณ , ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ค๊ณ„์˜ ์ดํ•ด๋ฅผ ๋†’์ด๊ธฐ ์œ„ํ•ด ๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋ง์„ ์‹ค์‹œํ•œ๋‹ค.
  • ์ฟผ๋ฆฌ๋ฌธ์„ ์ž‘์„ฑํ•  ๋•Œ ํ…Œ์ด๋ธ”๋“ค์ด ๊ตฌ์กฐํ™”๋œ ๋‹ค์ด์–ด๊ทธ๋žจ์„ ๋ณด๋ฉด์„œ ๋„์›€์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค.
  • ๋ฐ์ดํ„ฐ์˜ ๋‹ค์–‘ํ•œ ํŠน์ง•์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์–ด ์š”๊ตฌ์‚ฌํ•ญ์„ ๊ทธ์— ๋งž๊ฒŒ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

ERD์˜ ํ•ต์‹ฌ์€ ์„ธ ๊ฐ€์ง€ ์ด๋‹ค. "Entity" ์™€ "Relationship", ๊ทธ๋ฆฌ๊ณ  "Attribute"์ด๋‹ค. ๊ฐ ์šฉ์–ด๊ฐ€ ๋ฌด์—‡์„ ์˜๋ฏธํ•˜๋Š”์ง€ ์‚ดํŽด๋ณด์ž.

 

#Entity(๊ฐœ์ฒด)

  • Entity๋Š” ๊ด€๋ฆฌํ•˜๊ณ ์ž ํ•˜๋Š” ์ •๋ณด์˜ ์‹ค์ฒด์ด๋ฉฐ, ์‚ฌ๋žŒ, ๊ฐ์ฒด ํ˜น์€ ๊ฐœ๋…์ด๋ผ๊ณ  ์ดํ•ดํ•˜๋ฉด ๋œ๋‹ค.
  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์„ค๊ณ„ํ• ๋•Œ, ์‰ฝ๊ฒŒ๋Š” ํ…Œ์ด๋ธ”์ด Entity๋กœ ์ •์˜๋  ์ˆ˜ ์žˆ๋‹ค.
  • ๋ชจ๋“  Entity๋Š” ํ•˜๋‚˜ ์ด์ƒ์˜ ์‹๋ณ„์ž (UID)๋ฅผ ์ง€๋…€์•ผ ํ•˜๋ฉฐ, UID๊ฐ€ ์—†๋‹ค๋ฉด Entity๋ผ๊ณ  ํ•  ์ˆ˜ ์—†๋‹ค.
  • Weak Entity
    • ๊ฐœ์ฒด๊ฐ€ ๊ฐ€์ง„ ์†์„ฑ๋“ค๋กœ๋Š” ๊ฐœ์ฒด๋ฅผ ๊ณ ์œ ํ•˜๊ฒŒ ์ •์˜ํ•  ์ˆ˜ ์—†๋Š” ๊ฐœ์ฒด๋ฅผ ์˜๋ฏธํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๊ฐ ๊ต์œก๊ณผ์ •์— ๋ถ„๋ฐ˜์ด ์žˆ๋‹ค๊ณ  ํ–ˆ์„๋•Œ, ๋ถ„๋ฐ˜์ด๋ผ๋Š” ๊ฐœ์ฒด๋Š” ์ž์‹ ์„ ์ •์˜ํ•˜๋Š” key๊ฐ€ ์—†๊ณ , ๊ฐ ๊ต์œก๊ณผ์ •์— ์˜์กดํ•˜๊ฒŒ ๋œ๋‹ค. 
    • 1203 ์ด๋ผ๋Š” ๊ฐ•์˜๊ฐ€ ์กด์žฌํ•˜๊ณ , 001, 002, 003..๋ถ„๋ฐ˜์ด ์žˆ๋‹ค๊ณ  ํ–ˆ์„๋•Œ, ์ด ๋ถ„๋ฐ˜ ์ด๋ฆ„์€ ๋”ฐ๋กœ ํŠน์ง•์ด ์—†๊ณ  ๋‹ค๋ฅธ ๊ฐ•์˜์™€๋„ ๊ฒน์น  ์ˆ˜ ์žˆ๋‹ค. ์ด๋ฅผ ๋‹จ๋…์œผ๋กœ ์กด์žฌํ•  ์ˆ˜ ์—†๊ณ , ๋‹ค๋ฅธ ๊ฐœ์ฒด์— ์˜์กดํ•ด์•ผ ํ•˜๋Š” Weak Entity๋ผ๊ณ  ํ•œ๋‹ค.

#Attribute (์†์„ฑ)

  • Attribute๋Š” Entity๋ฅผ ๊ตฌ์„ฑํ•˜๊ณ  ์žˆ๋Š” ๊ตฌ์„ฑ ์š”์†Œ์ด๋‹ค.
  • ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ๋ฐ˜๋“œ์‹œ ๊ฐ™์ด ๋ช…์‹œํ•ด์ค˜์•ผ ํ•œ๋‹ค.
  • Key Attribute
    • ๋‹ค๋ฅธ ๊ฐ์ฒด๋“ค๊ณผ ์ค‘๋ณต๋˜์ง€ ์•Š๋Š” ๊ณ ์œ ํ•œ ๊ฐ’์„ ๊ฐ€์ง„ Attribute๋กœ, ๊ฐ์ฒด๋ฅผ ์‹๋ณ„ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋œ๋‹ค.
  • Composite Attribute
    • ๋…๋ฆฝ์ ์ธ Attribute๋“ค์ด ๋ชจ์—ฌ์„œ ์ƒ์„ฑ๋œ Attribute๋ฅผ ์˜๋ฏธํ•œ๋‹ค.
    • ์˜ˆ๋ฅผ ๋“ค์–ด OO์‹œ,OO๋™,OO์•„ํŒŒํŠธ ๋“ฑ์˜ ๋…๋ฆฝ์ ์ธ Attribute ๋„ค๊ฐœ๊ฐ€ ๋ชจ์—ฌ์„œ ์ƒ์„ฑ๋œ ์ฃผ์†Œ Attribute๋Š” ๋ณตํ•ฉ attribute๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • Multi-Valued Attribute
    • ํ•˜๋‚˜์˜ Attribute๊ฐ€ ์—ฌ๋Ÿฌ๊ฐœ์˜ ๊ฐ’์„ ๊ฐ€์ง€๋Š” Attribute๋ฅผ ์˜๋ฏธํ•œ๋‹ค.
    • ์˜ˆ๋ฅผ ๋“ค์–ด ํ•˜๋‚˜์˜ ์˜์ƒ๋ฌผ์— ๋กœ๋งจ์Šค, SF, ํ˜ธ๋Ÿฌ ๋“ฑ์˜ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์žฅ๋ฅด๊ฐ€ ๊ณตํ†ต์ ์œผ๋กœ ์กด์žฌํ•  ์ˆ˜ ์žˆ๋‹ค.
  • Derived Attribute
    • ์ด๋Š” ๋‹ค๋ฅธ Attribute๊ฐ€ ๊ฐ–๊ณ  ์žˆ๋Š” ๊ฐ’์œผ๋กœ๋ถ€ํ„ฐ ์œ ๋„๋œ ์†์„ฑ์„ ์˜๋ฏธํ•œ๋‹ค.
    • ์˜ˆ๋ฅผ ๋“ค์–ด ๋ชจ๋“  ์ƒํ’ˆ์˜ ์ด ๊ฐ€๊ฒฉ์„ ๋‚˜ํƒ€๋‚ด๋Š” total์ด๋ผ๋Š” ์†์„ฑ์€ ์ƒํ’ˆ์˜ ๊ฐ€๊ฒฉ attribute, ์ƒํ’ˆ์˜ ๊ฐœ์ˆ˜ attribute๋ฅผ ๊ณฑํ•ด์„œ ๊ณ„์‚ฐ๋œ ๊ฐ’์ด๋‹ค. ์ด๋Š” Derived Attribute์ด ๋œ๋‹ค.

 

#Relationship

  • Entity๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ์˜๋ฏธํ•œ๋‹ค.
  • ๋‘ Entity๊ฐ„์— ์„ ์„ ๊ธ‹๊ณ , ๊ด€๊ณ„ ๋ช…์นญ์„ ๊ธฐ๋กํ•˜๊ฒŒ ๋œ๋‹ค.
  • ์„ ํƒ ์‚ฌํ•ญ์„ ํ‘œ์‹œํ•œ๋‹ค.
    • ์ ์„ ์€ ์„ ํƒ์ ์ธ ์‚ฌํ•ญ์„ ์˜๋ฏธํ•œ๋‹ค.
      • ์˜ˆ๋ฅผ ๋“ค์–ด, ์‚ฌ์›๊ณผ ๋ถ€์„œ Entity๊ฐ€ ์žˆ์„๋•Œ ๋ถ€์„œ ์ž…์žฅ์—์„œ๋Š” ์‚ฌ์›์„ ๋ฐฐ์น˜ ๋ฐ›์„์ˆ˜๋„, ๋ฐ›์ง€ ์•Š์„ ์ˆ˜๋„ ์žˆ๋‹ค.
    • ์‹ค์„ ์€ ํ•„์ˆ˜์ ์ธ ์‚ฌํ•ญ์„ ์˜๋ฏธํ•œ๋‹ค.
      • ์‚ฌ์› ์ž…์žฅ์—์„œ๋Š” ๋ถ€์„œ๊ฐ€ ํ•„์ˆ˜์ ์œผ๋กœ ๋ฐฐ์ •๋ฐ›์•„์•ผ ํ•œ๋‹ค.
  • ๊ด€๊ณ„ ํ˜•ํƒœ๋ฅผ ํ‘œ์‹œํ•œ๋‹ค.
    • ์‚ผ์ง€์ฐฝ ๋ชจ์–‘์€ ํ•˜๋‚˜ ์ด์ƒ์„ ์˜๋ฏธํ•œ๋‹ค.
    • ๋‹จ์„ ์€ ํ•˜๋‚˜๋ฅผ ์˜๋ฏธํ•œ๋‹ค.
      • ๋ถ€์„œ๋Š” ์—ฌ๋Ÿฌ๋ช…์˜ ์‚ฌ์›์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์œผ๋‚˜, ์‚ฌ์›์€ ํ•˜๋‚˜์˜ ๋ถ€์„œ์—๋งŒ ๋ฐฐ์น˜๋œ๋‹ค.

 

#๊ด€๊ณ„ ํ˜•ํƒœ(Cardinality)

๋‹น์—ฐํ•˜๊ฒŒ๋„, ๊ฐ Entity๋“ค์ด ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ด€๊ณ„์—๋Š” ์—ฌ๋Ÿฌ๊ฐ€์ง€ ํ˜•ํƒœ๊ฐ€ ์กด์žฌํ•œ๋‹ค.

 

1) 1:1 ๊ด€๊ณ„ 

  : ์–‘์ชฝ ๋ชจ๋‘ ๋‹จ ํ•˜๋‚˜์”ฉ ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ์ด๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด, ์–ด๋–ค ์ƒ์ ์—๋Š” ํ•˜๋‚˜์˜ ์ฃผ์†Œ๋งŒ์ด ์กด์žฌํ•œ๋‹ค.

2) 1:N ๊ด€๊ณ„

 : ์ผ๋Œ€๋‹ค/๋‹ค๋Œ€์ผ ๊ด€๊ณ„๋Š” ํ•˜๋‚˜์˜ ์›์†Œ๊ฐ€ ๋‘๊ฐœ ์ด์ƒ์˜ ์›์†Œ์™€ ๊ด€๊ณ„๋ฅผ ๋งบ๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค. ํ•œ ๋ถ€์„œ์—๋Š” ์—ฌ๋Ÿฌ๋ช…์˜ ์‚ฌ์›์ด ์†Œ์†๋˜์–ด ์žˆ๋‹ค.

-> ์ด๋ฅผ ๊ด€๊ณ„ ๋ชจ๋ธ๋กœ ๋ฐ”๊ฟ€ ๋•Œ ๋”ฐ๋กœ relationship์˜ table์„ ๋งŒ๋“ค์ง€ ์•Š๊ณ , "Many"์ชฝ์— ์žˆ๋Š” entity์— "one"์ชฝ์˜ primary key๋ฅผ Attribute๋กœ ์ถ”๊ฐ€ํ•˜๊ฒŒ ๋œ๋‹ค. ์‰ฝ๊ฒŒ๋Š” ์‚ฌ์›์˜ ์ •๋ณด์— ๋ถ€์„œ ๋ฒˆํ˜ธ๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค.

 

 

3) N:M ๊ด€๊ณ„

: ๋‹ค๋Œ€๋‹ค ๊ด€๊ณ„๋ผ๊ณ  ํ•˜๋ฉฐ, ์–‘์ชฝ ๋ชจ๋‘ ํ•˜๋‚˜ ์ด์ƒ๊ณผ ์—ฐ๊ด€๋  ์ˆ˜ ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ํ•˜๋‚˜์˜ ์ˆ˜์—…์—๋Š” ์—ฌ๋Ÿฌ๋ช…์˜ ํ•™์ƒ์ด ์žˆ์„ ์ˆ˜ ์žˆ๊ณ , ํ•œ ๋ช…์˜ ํ•™์ƒ์ด ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ˆ˜์—…์„ ๋“ค์„ ์ˆ˜ ์žˆ๋‹ค.

-> ์ด๋Ÿฌํ•œ ๊ฒฝ์šฐ์—๋Š”, M:N ๊ด€๊ณ„๋ฅผ M:1 ๊ด€๊ณ„๋กœ ๋ถ„ํ• ํ•œ๋‹ค. ๊ด€๊ณ„๋ฅผ ๋งบ๋Š” ๋‘ entity์˜ primary key๋ฅผ ๊ฐ€์ ธ์™€ ํ•˜๋‚˜์˜ relation์„ ์ƒ์„ฑํ•œ๋‹ค. ์ฆ‰, ์ˆ˜๊ฐ•์‹ ์ฒญ์ด๋ผ๋Š” ํ…Œ์ด๋ธ”์„ ํ•˜๋‚˜ ๋” ๋งŒ๋“ค์–ด ํ•™์ƒ์€ ์ž์‹ ์ด ์ˆ˜๊ฐ•์‹ ์ฒญํ•˜๋Š” ์ˆ˜์—…์—๋งŒ ๊ด€๊ณ„๋ฅผ ๋งบ๊ณ  ์žˆ์œผ๋ฉด ๋œ๋‹ค.

 

 

#ERD ์„ค๊ณ„ ๊ณผ์ •

ํ•„์ž๊ฐ€ ๋„ทํ”Œ๋ฆญ์Šค๋ฅผ ๊ด€์ฐฐํ•˜๋ฉฐ ์„ค๊ณ„ํ•œ ERD ๋ชจ๋ธ์ด๋‹ค.

  • Entity์™€  Attribute ์ถ”์ถœ
    • ๋„ทํ”Œ๋ฆญ์Šค๋ฅผ ์˜ˆ์‹œ๋กœ ๋“ค์–ด๋ณด๋„๋ก ํ•˜๊ฒ ๋‹ค.
    • Entity์˜ ์˜ˆ์‹œ๋กœ๋Š” ์˜์ƒ๋ฌผ, ์œ ์ €, ํšŒ์ฐจ์ •๋ณด, ๋ฐฐ์šฐ, ๊ตญ๊ฐ€, ํŠน์ง•, ์žฅ๋ฅด, ์–ธ์–ด.. ์ด ์žˆ๊ฒ ๋‹ค.
    • ๊ฐ Entity๋ฅผ ์ถ”์ถœํ•œ ๋‹ค์Œ์—๋Š” Entity์— ๋งž๋Š” Attribute๋ฅผ ์ถ”์ถœํ–ˆ๋‹ค. ํ•„์ž๊ฐ™์€ ๊ฒฝ์šฐ์—๋Š” ์—‘์…€ ํŒŒ์ผ์„ ์ด์šฉํ•ด ํ•„์š”ํ•ด๋ณด์ด๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ญ‰ ์ ์–ด๋‚ด๋ ค๊ฐ”๋‹ค.

Entity์™€ ์†์„ฑ ์ถ”์ถœ์˜ ์˜ˆ์‹œ

  • ๊ฐœ์ฒด๋“ค๊ฐ„์˜ ๊ด€๊ณ„ ์ถ”์ถœ
    • 1: N ๊ด€๊ณ„๋ฅผ ๊ฐ–๊ณ  ์žˆ๋Š” ๊ด€๊ณ„ (๋„ˆ๋ฌด ๋งŽ์•„์„œ ์˜ˆ์‹œ๋งŒ ๊ฐ„๋‹จํ•˜๊ฒŒ ๋“ค๊ฒ ๋‹ค.)
      • video-epsiode, video-actor, video-genre, video-characteristic, video-ratinglist,video-wishlist, video-watchedlist, video-DownloadedList..
      • ์ด ๊ฒฝ์šฐ์—๋Š” Many ์ชฝ์˜ ํ…Œ์ด๋ธ”์— one์˜ Primary key๋ฅผ FK๋กœ ์ถ”๊ฐ€ํ•ด์ฃผ์—ˆ๋‹ค.
    • N: M ๊ด€๊ณ„๋ฅผ ๊ฐ–๊ณ  ์žˆ๋Š” ๊ด€๊ณ„ : ์ด ๊ฒฝ์šฐ์—๋Š” relation์„ ๋”ฐ๋กœ ๋งŒ๋“ค์–ด ์ฃผ์—ˆ๋‹ค. ์ด ๊ด€๊ณ„๋Š” ์ถ”ํ›„ ๊ด€๊ณ„ ๋ชจ๋ธ๋ง์—์„œ ๋”ฐ๋กœ ํ…Œ์ด๋ธ”์ด ๋œ๋‹ค.
      • ์˜์ƒ๋ฌผ-์ถœ์—ฐ์ž : ํ•œ ์˜์ƒ์— ์—ฌ๋Ÿฌ๋ช…์˜ ์ถœ์—ฐ์ž๊ฐ€ ์ถœ์—ฐํ•  ์ˆ˜ ์žˆ๊ณ , ํ•œ ์ถœ์—ฐ์ž๊ฐ€ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์˜์ƒ๋ฌผ์— ์ถœ์—ฐ ํ•  ์ˆ˜ ์žˆ๋‹ค. → Casting 
      • ์˜์ƒ๋ฌผ- ์žฅ๋ฅด → Video_Genre 
      • ์˜์ƒ๋ฌผ - ์˜์ƒ๋ฌผ์˜ ํŠน์„ฑ → Video_Characteristic 
      • ์˜์ƒ๋ฌผ - ์œ ์ € : Watched , Wish, Downloaded (์ด๋ฏธ ์‹œ์ฒญํ•œ ์˜์ƒ, ์ฐœํ•œ ์˜์ƒ, ๋‹ค์šด๋กœ๋“œ๋ฐ›์€ ์˜์ƒ)
  • ๊ฐ ๊ฐœ์ฒด์˜ ์†์„ฑ๋“ค์˜ ๋ฐ์ดํ„ฐ ํƒ€์ž…(int, varchar...)์ด ์–ด๋–ป๊ฒŒ ๋ ์ง€ ํŒ๋‹จํ•˜๊ณ , ERD๋ฅผ ์ž‘์„ฑํ•œ๋‹ค.
  • Key ์ œ์•ฝ ์กฐ๊ฑด๊ณผ, ๋ฌด๊ฒฐ์„ฑ ์ œ์•ฝ ์กฐ๊ฑด ๋“ฑ์„ ์ถ”๊ฐ€ํ•ด์ค€๋‹ค.โ€‹

 

๐Ÿ’ก๋ณดํ†ต ๊ฐœ๋…์  ๋ชจ๋ธ๋ง- ๋…ผ๋ฆฌ์  ๋ชจ๋ธ๋ง์€ ๋‹ค๋ฅธ ๊ฐœ๋…์ด๋‹ค. ๊ทธ๋ ‡์ง€๋งŒ ๋ณดํ†ต์˜ ERD๋ฅผ ์„ค๊ณ„ํ•  ๋•Œ๋Š” ํ…Œ์ด๋ธ”์„ ์„ธ์„ธํ•˜๊ฒŒ ์„ค๊ณ„ํ•˜๋ฉด์„œ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ER ๋‹ค์ด์–ด๊ทธ๋žจ๋ถ€ํ„ฐ ๊ทธ๋ ค๊ฐ€๋ฉด์„œ ํ•˜๊ธฐ๋ณด๋‹ค๋Š” ํ•œ๊บผ๋ฒˆ์— ํ…Œ์ด๋ธ”๋กœ ์„ค๊ณ„ํ•˜๊ณ , ๊ด€๊ณ„๋ฅผ ํŒŒ์•…ํ•ด๊ฐ€๋ฉด์„œ ํ…Œ์ด๋ธ”์„ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ํ‚ค/๋ฌด๊ฒฐ์„ฑ ์ œ์•ฝ ์กฐ๊ฑด์„ ์ถ”๊ฐ€ํ•˜๋Š” ๋“ฑ ๊ฐœ๋…์  ๋ชจ๋ธ๋ง๊ณผ ๋…ผ๋ฆฌ์  ๋ชจ๋ธ๋ง์„ ํ•œ๋ฒˆ์— ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ธ๋‹ค.