[PostgreSQL] λŒ€λŸ‰ 데이터 μΈμ„œνŠΈ μ‹œ μ„±λŠ₯ κ°œμ„  및 주의 사항

[PostgreSQL] λŒ€λŸ‰ 데이터 μΈμ„œνŠΈ μ‹œ μ„±λŠ₯ κ°œμ„  및 주의 사항

λŒ€λŸ‰ 데이터 μΈμ„œνŠΈ μ‹œ μ„±λŠ₯ κ°œμ„  졜초 μ„œλΉ„μŠ€ λ°°ν¬λ‚˜ 데이터 λ§ˆμ΄κ·Έλ ˆμ΄μ…˜μ„ ν•  λ•Œ λŒ€λŸ‰μ˜ 데이터λ₯Ό ν•œ λ²ˆμ— μΈμ„œνŠΈ ν•˜λŠ” κ²½μš°κ°€ μžˆλ‹€. PostgreSQL κ³΅μ‹λ¬Έμ„œμ—μ„œλŠ” λŒ€λŸ‰ μΈμ„œνŠΈ μ‹œμ— 효율적으둜 μ§„ν–‰ν•  수 μžˆλŠ” 방법을 μ œμ‹œν•΄ μ€€λ‹€. (λŒ€λŸ‰ 데이터λ₯Ό μΈμ„œνŠΈ ν•  λ•Œ 효율적인 섀정이지 λ°μ΄ν„°λ² μ΄μŠ€ μ‘°νšŒλ‚˜ μ—…λ°μ΄νŠΈ λ“±μ‹€μ œ 운영 μ‹œμ— μ‚¬μš©ν•  방법은 μ•„λ‹ˆλ‹€.) 1. Autocommit μ˜΅μ…˜ ν•΄μ œ λŒ€λŸ‰μ˜ μΈμ„œνŠΈ μ‹€ν–‰ μ‹œ, Autocommit μ˜΅μ…˜μ„ ν•΄μ œν•˜κ³  ν•œ νŠΈλžœμž­μ…˜μ—μ„œ μž‘μ—… 후에 컀밋을 μ§„ν–‰ν•΄μ•Ό ν•œλ‹€(일반적으둜 SQLλ₯Ό μ‹€ν–‰ μ‹œμ— μžλ™μœΌλ‘œ μ‹œμž‘ μ‹œ BEGIN, 끝날 λ•Œ COMMIT으둜 νŠΈλžœμž­μ…˜ μ²˜λ¦¬κ°€ λ˜μ§€λ§Œ, ν™•μ‹€νžˆ 되고 μžˆλŠ”μ§€ ν™•μΈν•„μš”ν•˜λ‹€.). λŒ€λŸ‰ 데이터 μΈμ„œνŠΈμ˜ 각각을 λ³„λ„λ‘œ commit ν•œλ‹€λ©΄, PostgreSQL은 μΈμ„œνŠΈ λ˜λŠ” 각 열에 λŒ€ν•΄ λ„ˆλ¬΄ λ§Žμ€ μž‘μ—…μ„ μˆ˜ν–‰ν•˜κ²Œ λœλ‹€. λ˜ν•œ λͺ¨λ“  μΈμ„œνŠΈλ₯Ό ν•œ νŠΈλžœμž­μ…˜μ— μ²˜λ¦¬ν•  κ²½μš°μ—λŠ” ν•œ INSERTκ°€ μ‹€νŒ¨ν•  경우 κ·Έ μ‹œμ κΉŒμ§€ μΈμ„œνŠΈ 된 λͺ¨λ“  μž‘μ—…μ΄ μ·¨μ†Œλ˜κΈ°μ— μ‹€νŒ¨ μž‘μ—…μ— λŒ€ν•œ λΆ€λΆ„ 보완 및 무결성을 κ³ λ €ν•˜μ§€ μ•Šμ•„λ„ λœλ‹€. ...

[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개의 νŒ¨ν‚€μ§€λ‘œ λΆ„λ¦¬λœ 클래슀ꡰ으둜 κ΅¬μ„±λ˜μ–΄ μžˆλ‹€. ...