[PostgreSQL] ์™ธ๋ž˜ํ‚ค(Foreign Keys) ๊ฐœ๋…, ์‚ฌ์šฉ๋ฒ•, ์žฅ๋‹จ์ , ์ ์šฉ๊ฒ€ํ† 

[PostgreSQL] ์™ธ๋ž˜ํ‚ค(Foreign Keys) ๊ฐœ๋…, ์‚ฌ์šฉ๋ฒ•, ์žฅ๋‹จ์ , ์ ์šฉ๊ฒ€ํ† 

1. Foreign Key ์™ธ๋ž˜ํ‚ค๋ž€? Foreign key constraint ์™ธ๋ž˜ํ‚ค ์ œ์•ฝ์€ ํŠน์ • ์นผ๋Ÿผ ํ˜น์€ ์นผ๋Ÿผ๋“ค์˜ ๊ฐ’์ด ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”์˜ ํŠน์ • row์™€ ๋งค์นญ๋˜์–ด์•ผ ํ•˜๋Š” ์ œ์•ฝ์กฐ๊ฑด์ด๋‹ค. ์ด๋ฅผ ๋‘ ๊ด€๋ จ ํ…Œ์ด๋ธ” ์‚ฌ์ด์˜ ์ฐธ์กฐ ๋ฌด๊ฒฐ์„ฑ (referential integrity)๋ฅผ ์œ ์ง€ํ•œ๋‹ค๊ณ  ๋งํ•œ๋‹ค. ๊ทธ๋ ‡๊ฒŒ ๋ณต์žกํ•œ ๊ฐœ๋…์€ ์•„๋‹ˆ๋‹ˆ ๋ฐ”๋กœ ์‚ฌ์šฉ๋ฒ•์„ ํ™•์ธํ•ด ๋ณด๋„๋ก ํ•˜์ž 2. ์˜ˆ์ œ 2-1. ๊ธฐ๋ณธ ์™ธ๋ž˜ํ‚ค(Foreign Keys) ์ƒ์„ฑ products ํ…Œ์ด๋ธ”์€ ๋ฌผํ’ˆ์˜ ์ด๋ฆ„, ๊ฐ€๊ฒฉ ์ •๋ณด ํ…Œ์ด๋ธ”์ด๊ณ , orders ํ…Œ์ด๋ธ”์€ ์กด์žฌํ•˜๋Š” ๋ฌผํ’ˆ ๊ฐ๊ฐ์— ๋Œ€ํ•œ ์ˆœ์„œ ์ •๋ณด๊ฐ€ ๋“ค์–ด์žˆ๋Š” ํ…Œ์ด๋ธ”์ด๋‹ค. orders, products ํ…Œ์ด๋ธ”์˜ product_no์— ์™ธ๋ž˜ํ‚ค ์ œ์•ฝ์„ ์ ์šฉํ•˜๋Š” ์˜ˆ์ œ์ด๋‹ค. ...

[๋””์ž์ธํŒจํ„ด] ์ปดํฌ์ง€ํŠธ(Composite) ํŒจํ„ด์˜ ๊ฐœ๋…, ์˜ˆ์ œ, ์žฅ๋‹จ์ , ํ™œ์šฉ

[๋””์ž์ธํŒจํ„ด] ์ปดํฌ์ง€ํŠธ(Composite) ํŒจํ„ด์˜ ๊ฐœ๋…, ์˜ˆ์ œ, ์žฅ๋‹จ์ , ํ™œ์šฉ

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

[์ดํŽ™ํ‹ฐ๋ธŒ ์ž๋ฐ”] 4. ์ธ์Šคํ„ด์Šคํ™”๋ฅผ ๋ง‰์œผ๋ ค๊ฑฐ๋“  private ์ƒ์„ฑ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋ผ

[์ดํŽ™ํ‹ฐ๋ธŒ ์ž๋ฐ”] 4. ์ธ์Šคํ„ด์Šคํ™”๋ฅผ ๋ง‰์œผ๋ ค๊ฑฐ๋“  private ์ƒ์„ฑ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋ผ

1. ๊ฐœ๋… ๋‹จ์ˆœํžˆ ์ •์  ๋ฉ”์„œ๋“œ์™€ ์ •์  ํ•„๋“œ๋งŒ์„ ๋‹ด์€ ํด๋ž˜์Šค๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค. ๊ฐ์ฒด ์ง€ํ–ฅ์  ์‚ฌ๊ณ ํ•˜์ง€ ์•Š๋Š” ์ด๋“ค์ด ์ข…์ข… ๋‚จ์šฉํ•˜์ง€๋งŒ ์“ฐ์ž„์ƒˆ๋Š” ๋ถ„๋ช…ํžˆ ์กด์žฌํ•œ๋‹ค. ๋‹จ์ˆœํžˆ ์ •์  ๋ฉ”์„œ๋“œ์™€ ์ •์  ํ•„๋“œ๋งŒ์œผ๋กœ ํด๋ž˜์Šค๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒฝ์šฐ ๊ธฐ๋ณธ ํƒ€์ž… ๊ฐ’์ด๋‚˜ ๋ฐฐ์—ด ๊ด€๋ จ ๋ฉ”์„œ๋“œ์˜ ์ง‘ํ•ฉ ex) java.lang.Math, java.Util.Arrays ํŠน์ • ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ด ์ฃผ๋Š” ์ •์  ๋ฉ”์„œ๋“œ์˜ ์ง‘ํ•ฉ ex) java.util.Collections final ํด๋ž˜์Šค์™€ ๊ด€๋ จ๋œ ๋ฉ”์„œ๋“œ์˜ ์ง‘ํ•ฉ (final ํด๋ž˜์Šค๋ฅผ ์ƒ์†ํ•ด์„œ ํ•˜์œ„ ํด๋ž˜์Šค์— ๋ฉ”์„œ๋“œ๋ฅผ ๋„ฃ๋Š” ๊ฒƒ์€ ๋ถˆ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ) ํ•ด๋‹น ์ •์  ๋ฉค๋ฒ„๋งŒ ๋‹ด์€ ์œ ํ‹ธ๋ฆฌํ‹ฐ ํด๋ž˜์Šค๋Š” ์ธ์Šคํ„ด์Šค๋กœ ๋งŒ๋“ค์–ด ์“ฐ๊ธฐ ์œ„ํ•ด ์„ค๊ณ„ํ•œ ๊ฒƒ์ด ์•„๋‹ˆ์ง€๋งŒย ์ƒ์„ฑ์ž๋ฅผ ๋ช…์‹œํ•˜์ง€ ์•Š์œผ๋ฉด ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์ž๋™์œผ๋กœ ๊ธฐ๋ณธ ์ƒ์„ฑ์ž๋ฅผ ๋งŒ๋“ค์–ด์ฃผ๊ธฐ์— ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋ฐ›์ง€ ์•Š๋Š” public ์ƒ์„ฑ์ž๊ฐ€ ๋งŒ๋“ค์–ด์ง€๋ฉฐ, ์‚ฌ์šฉ์ž๋Š” ์ด ์ƒ์„ฑ์ž๊ฐ€ ์ž๋™์ƒ์„ฑ๋œ ๊ฒƒ์ธ์ง€ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์—†๋‹ค. ...

[๋””์ž์ธํŒจํ„ด] ์ถ”์ƒ ํŒฉํ„ฐ๋ฆฌ(Abstract Factory) ํŒจํ„ด์˜ ๊ฐœ๋…, ์˜ˆ์ œ, ์žฅ๋‹จ์ , ํ™œ์šฉ

[๋””์ž์ธํŒจํ„ด] ์ถ”์ƒ ํŒฉํ„ฐ๋ฆฌ(Abstract Factory) ํŒจํ„ด์˜ ๊ฐœ๋…, ์˜ˆ์ œ, ์žฅ๋‹จ์ , ํ™œ์šฉ

1. ์ถ”์ƒ ํŒฉํ† ๋ฆฌ(Abstract Factory) ํŒจํ„ด ์ด๋ž€? ์ถ”์ƒ - ๊ตฌ์ฒด์ ์œผ๋กœ ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„๋˜๋Š”์ง€ ์ƒ๊ฐํ•˜์ง€ ์•Š๊ณ  ์ธํ„ฐํŽ˜์ด์Šค(API)์—๋งŒ ์ฃผ๋ชฉํ•˜๋Š” ์ƒํƒœ ๊ณต์žฅ - ๋ถ€ํ’ˆ์„ ์กฐ๋ฆฝํ•˜์—ฌ ์ œํ’ˆ ์™„์„ฑ ์ถ”์ƒ + ๊ณต์žฅ ํŒจํ„ด : ์ถ”์ƒ์ ์ธ ๊ณต์žฅ์—์„œ ์ถ”์ƒ์ ์ธ ๋ถ€ํ’ˆ์„ ์กฐํ•ฉํ•˜์—ฌ ์ถ”์ƒ์ ์ธ ์ œํ’ˆ์„ ๋งŒ๋“ ๋‹ค. ๋ถ€ํ’ˆ์˜ ๊ตฌ์ฒด์ ์ธ ๊ตฌํ˜„์— ์ง‘์ค‘ํ•˜์ง€ ์•Š๊ณ  ์ธํ„ฐํŽ˜์ด์Šค์— ์ฃผ๋ชฉ, ์ธํ„ฐํŽ˜์ด์Šค๋งŒ ์‚ฌ์šฉํ•˜์—ฌ ๋ถ€ํ’ˆ์„ ์กฐ๋ฆฝํ•˜๊ณ  ์ œํ’ˆ์œผ๋กœ ์™„์„ฑํ•œ๋‹ค. ๋‹ค์Œ ํ‘œ๋ฅผ ๋ณด๋ฉด ์ถ”์ƒ ํŒฉํ† ๋ฆฌ๊ฐ€ ์–ด๋–ค ๊ตฌ์กฐ๋กœ ์ด๋ฃจ์–ด์กŒ๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. Abstract Factory : ์ตœ์ƒ์œ„ ๊ณต์žฅ, ๋ฉ”์„œ๋“œ๋“ค์„ ์ถ”์ƒํ™”ํ•œ๋‹ค. AbstractProduct์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ฒฐ์ •ํ•œ๋‹ค. Concrete Factory : ์„œ๋ธŒ ๊ณต์žฅ ํด๋ž˜์Šค, ์œ ํ˜•์— ๋งž๋Š” ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋„๋ก ๋ฉ”์„œ๋“œ๋“ค์„ ์žฌ์ •์˜ํ•œ๋‹ค. AbstractFactory์˜ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•œ๋‹ค. Abstract Product : ํƒ€์ž…์˜ ์ œํ’ˆ์„ ์ถ”์ƒํ™”ํ•œ ์ธํ„ฐํŽ˜์ด์Šค์ด๋‹ค. AbstractFactory์— ์˜ํ•ด ๋งŒ๋“ค์–ด์ง€๋Š” ์ถ”์ƒ์ ์ธ ๋ถ€ํ’ˆ์ด๋‚˜ ์ œํ’ˆ์˜ ์ธํ„ฐํŽ˜์ด์Šค(API)๋ฅผ ๊ฒฐ์ •ํ•œ๋‹ค. ConcreteProduct : ๊ฐ ์œ ํ˜•์˜ ๊ตฌํ˜„์ฒด, ํŒฉํ† ๋ฆฌ ๊ฐ์ฒด๋กœ๋ถ€ํ„ฐ ์ƒ์„ฑํ•œ๋‹ค. AbstractProduct์˜ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•œ๋‹ค. 2. ์˜ˆ์ œ ์‚ฌ์šฉํ•  ์˜ˆ์ œ๋Š” ๊ณ„์ธต ๊ตฌ์กฐ๋กœ ๋œ ๋งํฌ ํŽ˜์ด์ง€๋ฅผ HTMLํŒŒ์ผ๋กœ ๋ฐ”๊พธ๋Š” ์ฝ”๋“œ์ด๋‹ค. ("JAVA ์–ธ์–ด๋กœ ๋ฐฐ์šฐ๋Š” ๋””์ž์ธ ํŒจํ„ด ์ž…๋ฌธ 3ํŽธ"์˜ ์˜ˆ์ œ ํ™œ์šฉ) HTML ๊ณ„์ธต ๊ตฌ์กฐ๋ฅผ ์ถ”์ƒ ํŒฉํ† ๋ฆฌ ํŒจํ„ด์„ ํ†ตํ•ด ๊ตฌํ˜„ํ•œ ๊ฒƒ์œผ๋กœ 2๊ฐœ์˜ ํŒจํ‚ค์ง€๋กœ ๋ถ„๋ฆฌ๋œ ํด๋ž˜์Šค๊ตฐ์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค. ...

[Linux] JDK ์—ฌ๋Ÿฌ ๋ฒ„์ „ ์ ์šฉํ•˜๊ธฐ, ์—ฌ๋Ÿฌ๊ฐœ์˜ ํŒจํ‚ค์ง€ ๊ด€๋ฆฌํ•˜๊ธฐ (update-alternatives)

[Linux] JDK ์—ฌ๋Ÿฌ ๋ฒ„์ „ ์ ์šฉํ•˜๊ธฐ, ์—ฌ๋Ÿฌ๊ฐœ์˜ ํŒจํ‚ค์ง€ ๊ด€๋ฆฌํ•˜๊ธฐ (update-alternatives)

1. ๋ฌธ์ œ ์ƒํ™ฉ JDK21์„ ์„œ๋ฒ„์— ์ ์šฉํ•˜๋ฉด์„œ, ๊ธฐ์กด ๋ฒ„์ „๊ณผ ๋™์‹œ์— ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ์ƒํ™ฉ ๋ฐœ์ƒ 2. ํ•ด๊ฒฐ ๋ฌผ๋ก  ๋นŒ๋“œํ•  ๋•Œ๋งˆ๋‹ค ์ž๋ฐ” ํ™ˆ ๊ฒฝ๋กœ๋ฅผ ๋ฐ”๊ฟ”์„œ ์ ์šฉํ•˜๊ฑฐ๋‚˜, ๊ฐ ํ†ฐ์บฃ์˜ catalina.sh์—ย echo JAVA_HOME=๊ฐœ๋ณ„ JAVA๊ฒฝ๋กœ ํ˜น์€ startup.sh ์Šคํฌ๋ฆฝํŠธ ์ƒ๋‹จ์— ๊ฐœ๋ณ„ JAVA_HOME์„ ๋ช…์‹œํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ์žˆ์ง€๋งŒ, ์‹ฌ๋ณผ๋ฆญ ๋งํฌ๋ฅผ ํ†ตํ•ด ์—ฌ๋Ÿฌ ํŒจํ‚ค์ง€๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ์‹์ธ update-alternatives๋ฅผ ํ†ตํ•ด ์ ์šฉํ•˜์˜€๋‹ค. ๊ฐœ๋…์€ ์‹ฌ๋ณผ๋ฆญ๋งํฌ (์ƒ์„ธ ๋‚ด์šฉ์€ ์•„๋ž˜ ๋งํฌ ์ฐธ๊ณ ) [Linux] - [Linux] ์‹ฌ๋ณผ๋ฆญ ๋งํฌ (Symbolic link) ์„ค์ •ํ•˜๊ธฐ ...