๐ŸŽซ์†Œํ”„ํŠธ์›จ์–ด ๊ณตํ•™ part09. Domain Model

vincaยท2023๋…„ 1์›” 2์ผ
0

๐Ÿ”„ Software engineering

๋ชฉ๋ก ๋ณด๊ธฐ
8/17
  • Database์™€ ์œ ์‚ฌํ•˜๊ฒŒ ๋‚˜์˜จ๋‹ค. ERD(DB)์™€ ๊ฐ™์ด ์˜์†์„ฑ์„ ๊ฐ–๋Š” ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜จ๋‹ค.
    Class Diagram์—์„œ์˜ ๋ฉ”์†Œ๋“œ๊ฐ€ ๋ฌธ์ž์ธ ๊ฒƒ.

โ–  ๋„๋ฉ”์ธ ๋ชจ๋ธ์„ ์ฝ๋Š” ์ˆœ์„œ ๋ฐ ์ž‘์„ฑ ์ˆœ์„œ

concept -> ์—ฐ๊ด€ -> ์†์„ฑ

โ–  ํ˜„์‹ค ์„ธ๊ณ„์˜ ๋ชจ๋ธ์ด๋ฏ€๋กœ ์ปดํ“จํ„ฐ์ ์ธ ์š”์†Œ ์ฆ‰, method๋‚˜ Database๊ฐ€ ์กด์žฌํ•ด์„œ๋Š” ์•ˆ ๋œ๋‹ค.

โ–  ๊ฐœ๋…์  ํด๋ž˜์Šค ์ž‘์„ฑ ๋ฐฉ๋ฒ• 3๊ฐ€์ง€

1. ๊ธฐ์กด ๋ชจ๋ธ์„ ๊ฒ€์ƒ‰ํ•˜์—ฌ ์ด๋ฅผ ์žฌ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ์ˆ˜์ •ํ•œ๋‹ค.
์–ด๋–ค ๋ชจ๋ธ์ด ์ข‹์€์ง€ ํŒ๋‹จํ•  ์ˆ˜ ์žˆ๋Š” ๋Šฅ๋ ฅ (์ฆ‰, ๋„๋ฉ”์ธ ๋ชจ๋ธ์„ ๊ทธ๋ฆด ์ˆ˜ ์žˆ์–ด์•ผํ•œ๋‹ค.)
โ€œ๊ฒ€์ƒ‰ํ•œ๋‹คโ€œ ์™€ ๊ฐ™์€ Method๊ฐ€ ๋‚˜์˜ค๋ฉด ๋ฌด์กฐ๊ฑด ๊ฑฐ๋ฅธ๋‹ค.
2. ๋ถ„๋ฅ˜ ๋ฆฌ์ŠคํŠธ๋ฅผ ์‚ฌ์šฉ
์šฐ์„  ์ˆœ์œ„๋Œ€๋กœ ๋‚˜์—ด๋œ๋‹ค.
3. ๋ช…์‚ฌ๊ตฌ๋ฅผ ํ†ตํ•œ ์‹๋ณ„
์œ ์ฆˆ ์ผ€์ด์Šค์—์„œ ๋ช…์‚ฌ ๋˜๋Š” ๋ช…์‚ฌ๊ตฌ๋ฅผ ์‹๋ณ„ํ•œ๋‹ค.

โ–  ์†์„ฑ๊ณผ ํด๋ž˜์Šค๋ฅผ ์–ด๋–ป๊ฒŒ ๊ตฌ๋ถ„ํ• ๊นŒ?

Sale -> Class
์ˆซ์ž๋กœ ํ‘œํ˜„๋˜๊ฑฐ๋‚˜ ๊ฐ„๋‹จํ•˜๊ฒŒ ํ‘œํ˜„๋˜๋ฉด ์†์„ฑ.
์–ด๋– ํ•œ ๊ณต๊ฐ„์„ ์ฐจ์ง€ํ•˜๋ฉด ํด๋ž˜์Šค. -> ํ—ท๊ฐˆ๋ฆฌ๋ฉด ํด๋ž˜์Šค๋‹ค.

ํด๋ž˜์Šค ๋‚ด์— ํด๋ž˜์Šค๊ฐ€ ์œ„์น˜ํ•˜๋Š” ๊ฒƒ์€ ๋ถˆ๊ฐ€๋Šฅ! ํด๋ž˜์Šค๋Š” ๋งŽ์ด ๋งŒ๋“ค์ˆ˜๋ก ์ข‹๋‹ค.

โ–  ๋ช…์„ธ ํด๋ž˜์Šค

DB์—์„œ์˜ ์‚ญ์ œ ์ด์ƒ์ด ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด์„œ โ€๋ช…์„ธโ€๋ฅผ ๋”ฐ๋กœ ์ƒˆ๋กœ์šด ํด๋ž˜์Šค๋กœ ๋ถ„๋ฆฌํ•œ๋‹ค.

โ–  ์—ฐ๊ด€

๋„๋ฉ”์ธ ๋ชจ๋ธ์—์„œ ํด๋ž˜์Šค๋Š” ๋งŽ์ด ์—ฐ๊ด€์€ ์ ๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. (ํ—ท๊ฐˆ๋ฆฌ๋ฉด ๊ทธ๋ฆฌ์ง€๋งˆ๋ผ ์ฐจ๋ผ๋ฆฌ)
๋”ฐ๋ผ์„œ ์œ ๋„๋  ์ˆ˜ ์žˆ๋Š” ์—ฐ๊ด€์€ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.

  • Sale๊ณผ SaleLineItem๊ณผ์˜ ๊ด€๊ณ„? ์—ฐ๊ด€์ด ํ•„์š”ํ•จ
  • ์ถœ๋‚ฉ์›๊ณผ ProductDescription๊ณผ์˜ ๊ด€๊ณ„? ์—ฐ๊ด€ ์ž์ฒด๊ฐ€ ํ•„์š” ์—†์Œ.
  • sale๊ณผ manager์™€์˜ ๊ด€๊ณ„? sale โ€“ register โ€“ cashier โ€“ manger ๋กœ ์œ ๋„๊ฐ€๋Šฅํ•˜๋ฏ€๋กœ ํ•„์š” ์—†์Œ.

[์—ฐ๊ด€ ๊ด€๊ณ„]

์—”์ง„ โ€“ ์ž๋™์ฐจ (has a) ํฌํ•จ๊ด€๊ณ„
์ž๋™์ฐจ โ€“ ์•„๋ฐ˜๋–ผ (is a) ์ƒ์†๊ด€๊ณ„

โ–  ์†์„ฑ๊ณผ ์—ฐ๊ด€์˜ ์ฐจ์ด

์†์„ฑ์€ attribute์ด๊ณ , ์—ฐ๊ด€์€ Pointer์ด๋‹ค. ๊ฒฐ๊ตญ ํฌ์ธํ„ฐ ์ž์ฒด๋„ ์†์„ฑ์œผ๋กœ ์œ ์ง€๋œ๋‹ค.
์ฃผ์†Œ ๊ฐ์ฒด -> ์†์„ฑ(attribute)
์ง€๋„ ๊ต์ˆ˜ ๊ฐ์ฒด -> foreign key์ด๋ฏ€๋กœ ์—ฐ๊ด€์ž„

โ–  ๋‹ค์ค‘ ์—ฐ๊ด€

๋‹ค์ค‘ ์—ฐ๊ด€์˜ ์ƒํ™ฉ์—์„œ๋Š” ๋งŽ์€ ์ชฝ( *๏ผ‰์— ์†์„ฑ์„ ๋„ฃ์–ด์ค€๋‹ค.

โ–  UML์˜ ์†์„ฑ ํ‘œ๊ธฐ๋ฒ•

SaleLineItem์— ์žˆ์–ด์•ผํ•˜๋‚˜, ๋งŽ์ด ์‚ฌ์šฉ๋˜๊ณ  ์ž์ฃผ ํ•„์š”๋กœ ํ•˜๋ฏ€๋กœ drive attribute( / )๋กœ ํ‘œ๊ธฐํ•œ๋‹ค.

  • ๋„๋ฉ”์ธ ๋ชจ๋ธ์˜ ์†์„ฑ์€ ๊ธฐ๋ณธ ๋ฐ์ดํ„ฐ ํƒ€์ž…์ธ ๊ฒƒ์ด ์ข‹๋‹ค (์‚ฌ์šฉ์ž ๋ฐ์ดํ„ฐ ํƒ€์ž…์ธ ๊ฒฝ์šฐ ๋ฐ–์œผ๋กœ ๋นผ๋‚ด์ž)
  • atrribute(๊ฐ„๋‹จ ๋˜๋Š” ์ˆซ์ž)๋กœ ํ‘œ๊ธฐํ•˜๊ธฐ ๋ณต์žกํ•œ ๊ฒƒ์€ ๋ฐ–์œผ๋กœ ๋นผ๋‚ธ๋‹ค.
  • ์–‘๊ณผ ๋‹จ์œ„๋Š” ๋‹จ์ˆœ ์ˆซ์ž๋กœ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์—†๋‹ค. (amount : Number์„ ์“ฐ์ง€๋ง๊ณ  amount : Quantity)

โ–  BOM: Business Object Mode

๋น„์ฆˆ๋‹ˆ์Šค ์ธ๋ ฅ๊ณผ ๋น„์ฆˆ๋‹ˆ์Šค ๊ฐœ์ฒด๊ฐ€ ์–ด๋–ป๊ฒŒ ์—ฐ๊ด€๋˜์–ด์•ผ ํ•˜๋Š”๊ฐ€์™€ ๋น„์ฆˆ๋‹ˆ์Šค๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•˜์—ฌ ๊ทธ๋“ค์ด ์–ด๋–ป๊ฒŒ ํ˜‘๋ ฅํ•ด์•ผ ํ•˜๋Š”๊ฐ€์— ๋Œ€ํ•œ ์ถ”์ƒํ™”์ด๋‹ค.

profile
๋ถ‰์€ ๋ฐฐ ์˜ค์ƒ‰ ๋”ฑ๋‹ค๊ตฌ๋ฆฌ ๊ฐœ๋ฐœ์ž ๐ŸฆƒCloud & DevOps

0๊ฐœ์˜ ๋Œ“๊ธ€