πŸ’»

[λ°μ΄ν„°λ² μ΄μŠ€(DB)] λ©΄μ ‘ μ˜ˆμƒ 질문과 λ‹΅λ³€ λ³Έλ¬Έ

TIL/λ©΄μ ‘λŒ€λΉ„

[λ°μ΄ν„°λ² μ΄μŠ€(DB)] λ©΄μ ‘ μ˜ˆμƒ 질문과 λ‹΅λ³€

λ˜νš¨λ‹ˆ 2020. 2. 27. 12:33

Q # 1) DBMSλ₯Ό μ •μ˜ν•˜μ‹­μ‹œμ˜€.

λ‹΅λ³€ : DBMSλŠ” λ°μ΄ν„°λ² μ΄μŠ€ 관리 μ‹œμŠ€ν…œμ„ λ‚˜νƒ€λƒ…λ‹ˆλ‹€. μ‚¬μš©μžκ°€ 데이터에 κ΄€ν•œ 정보λ₯Ό κ°€λŠ₯ν•œ ν•œ 효율적이고 효과적으둜 ꡬ성, 볡원 및 검색 ν•  수 μžˆλ„λ‘ν•˜λŠ” μ‘μš© ν”„λ‘œκ·Έλž¨ λͺ¨μŒμž…λ‹ˆλ‹€.

널리 μ‚¬μš©λ˜λŠ” DBMS 쀑 μΌλΆ€λŠ” MySql, Oracle λ“±μž…λ‹ˆλ‹€.

Q # 1-1) RDBMSλ₯Ό μ •μ˜ν•˜μ‹­μ‹œμ˜€.

λ‹΅λ³€ : κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€ 관리 μ‹œμŠ€ν…œ (RDBMS)은 λ°μ΄ν„°λ² μ΄μŠ€μ— λ³„λ„μ˜ ν…Œμ΄λΈ”μ— μ €μž₯된 κ΄€κ³„ν˜• 데이터 λͺ¨λΈμ„ κΈ°λ°˜μœΌλ‘œν•˜λ©° 곡톡 μ—΄μ˜ μ‚¬μš©κ³Ό 관련이 μžˆμŠ΅λ‹ˆλ‹€. SQL (Structured Query Language)을 μ‚¬μš©ν•˜μ—¬ κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€μ—μ„œ 데이터에 μ‰½κ²Œ μ•‘μ„ΈμŠ€ ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

Q # 1-2) DBMS의 μž₯점에 λŒ€ν•΄ μ„€λͺ…ν•˜μ„Έμš”.

λ‹΅λ³€ : DBMS의 μž₯점은 λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

  • λ°μ΄ν„°λŠ” ꡬ쑰적으둜 μ €μž₯λ˜λ―€λ‘œ 쀑볡성이 μ œμ–΄λ©λ‹ˆλ‹€.
  • μž…λ ₯ ν•œ λ°μ΄ν„°μ˜ μœ νš¨μ„±μ„ κ²€μ‚¬ν•˜κ³  λ°μ΄ν„°λ² μ΄μŠ€μ— λŒ€ν•œ 무단 μ•‘μ„ΈμŠ€μ— λŒ€ν•œ μ œν•œμ„ μ œκ³΅ν•©λ‹ˆλ‹€.
  • ν•„μš”ν•œ 경우 데이터 λ°±μ—… 및 볡ꡬλ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€.
  • μ—¬λŸ¬ μ‚¬μš©μž μΈν„°νŽ˜μ΄μŠ€λ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€.

Q # 2) λ°μ΄ν„°λ² μ΄μŠ€μ—μ„œ λ‹€μ–‘ν•œ μœ ν˜•μ˜ κ΄€κ³„λŠ” λ¬΄μ—‡μž…λ‹ˆκΉŒ?

λ‹΅λ³€ : λ°μ΄ν„°λ² μ΄μŠ€μ—λŠ” 3 가지 μœ ν˜•μ˜ 관계가 μžˆμŠ΅λ‹ˆλ‹€.

  • μΌλŒ€μΌ : ν•œ ν…Œμ΄λΈ”μ€ λΉ„μŠ·ν•œ μ’…λ₯˜μ˜ 열을 가진 λ‹€λ₯Έ ν…Œμ΄λΈ”κ³Ό 관계가 μžˆμŠ΅λ‹ˆλ‹€. κ° κΈ°λ³Έ ν‚€λŠ” κ΄€λ ¨ ν…Œμ΄λΈ”μ—μ„œ ν•˜λ‚˜μ˜ λ ˆμ½”λ“œ λ˜λŠ” ν•˜λ‚˜μ˜ λ ˆμ½”λ“œμ™€ 관련이 μ—†μŠ΅λ‹ˆλ‹€.
  • μΌλŒ€λ‹€ : ν•œ ν…Œμ΄λΈ”μ€ κΈ°λ³Έ 및 μ™Έλž˜ ν‚€ κ΄€κ³„κ°€μžˆλŠ” λ‹€λ₯Έ ν…Œμ΄λΈ”κ³Ό 관계가 μžˆμŠ΅λ‹ˆλ‹€. κΈ°λ³Έ ν‚€ ν…Œμ΄λΈ”μ—λŠ” κ΄€λ ¨ ν…Œμ΄λΈ”μ—μ—†λŠ” ν•˜λ‚˜ λ˜λŠ” μ—¬λŸ¬κ°œμ˜ λ ˆμ½”λ“œμ™€ κ΄€λ ¨λœ ν•˜λ‚˜μ˜ λ ˆμ½”λ“œ 만 ν¬ν•¨λ©λ‹ˆλ‹€.
  • λ‹€λŒ€λ‹€ : λ‘ ν…Œμ΄λΈ”μ˜ 각 λ ˆμ½”λ“œλŠ” λ‹€λ₯Έ ν…Œμ΄λΈ”μ˜ μ—¬λŸ¬ λ ˆμ½”λ“œμ™€ κ΄€λ ¨ 될 수 μžˆμŠ΅λ‹ˆλ‹€.

Q # 3) SQL 을 μ„€λͺ…ν•˜μ„Έμš”.

λ‹΅λ³€ : SQL 문은 기본적으둜 DDL, DML 및 DCL의 μ„Έ 가지 λ²”μ£Όλ‘œ λ‚˜λ‰©λ‹ˆλ‹€.

λ‹€μŒκ³Ό 같이 μ •μ˜ ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

DDL (데이터 μ •μ˜ μ–Έμ–΄) λͺ…령은 데이터λ₯Ό λ³΄μœ ν•˜λŠ” ꡬ쑰λ₯Ό μ •μ˜ν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€. μ΄ λͺ…령은 μžλ™ μ»€λ°‹λ©λ‹ˆλ‹€. 즉, λ°μ΄ν„°λ² μ΄μŠ€μ˜ DDL λͺ…령에 μ˜ν•΄ μˆ˜ν–‰ 된 λ³€κ²½ 사항이 영ꡬ적으둜 μ €μž₯λ©λ‹ˆλ‹€.

DML (데이터 μ‘°μž‘ μ–Έμ–΄) λͺ…령은 λ°μ΄ν„°λ² μ΄μŠ€μ˜ 데이터λ₯Ό μ‘°μž‘ν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€. μ΄ λͺ…령은 μžλ™ μ»€λ°‹λ˜μ§€ μ•ŠμœΌλ©° λ‘€λ°± ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

DCL (데이터 μ œμ–΄ μ–Έμ–΄) λͺ…령은 λ°μ΄ν„°λ² μ΄μŠ€μ—μ„œ 데이터λ₯Ό μ‚¬μš©ν•˜κΈ°μœ„ν•œ μ•‘μ„ΈμŠ€ κΆŒν•œ μ·¨μ†Œμ™€ 같이 λ°μ΄ν„°λ² μ΄μŠ€μ—μ„œ λ°μ΄ν„°μ˜ κ°€μ‹œμ„±μ„ μ œμ–΄ν•˜λŠ” ​​데 μ‚¬μš©λ©λ‹ˆλ‹€.

 

Q # 4) μ •κ·œν™”μ™€ λΉ„μ •κ·œν™”λ₯Ό μ„€λͺ…ν•˜μ‹­μ‹œμ˜€.

λ‹΅λ³€ : 

μ •κ·œν™” λŠ” 데이터 무결성을 μœ μ§€ν•˜κΈ° μœ„ν•΄ 잘 μ •μ˜ 된 λ°©μ‹μœΌλ‘œ ν…Œμ΄λΈ”μ„ λΆ„ν• ν•˜μ—¬ λ°μ΄ν„°λ² μ΄μŠ€μ—μ„œ 쀑볡 데이터λ₯Ό μ œκ±°ν•˜λŠ” ν”„λ‘œμ„ΈμŠ€μž…λ‹ˆλ‹€. 즉, κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€μ—μ„œ 쀑볡을 μ΅œμ†Œν™”ν•˜κΈ° μœ„ν•΄ 데이터λ₯Ό κ΅¬μ‘°ν™”ν•˜λŠ” μž‘μ—…μž…λ‹ˆλ‹€. 이 ν”„λ‘œμ„ΈμŠ€λŠ” λ§Žμ€ μ €μž₯ 곡간을 μ ˆμ•½ν•©λ‹ˆλ‹€.

λΉ„μ •κ·œν™” λŠ” λ³΅μž‘ν•œ 쿼리 속도λ₯Ό 높이고 μ„±λŠ₯을 ν–₯μƒμ‹œν‚€κΈ° μœ„ν•΄ ν…Œμ΄λΈ”μ— 쀑볡 데이터λ₯Ό μΆ”κ°€ν•˜λŠ” ν”„λ‘œμ„ΈμŠ€μž…λ‹ˆλ‹€.

Q # 4-1) μ •κ·œν™”μ˜ μž₯점은? 

λ‹΅λ³€: λ°μ΄ν„°λ² μ΄μŠ€ λ³€κ²½ μ‹œ 이상 ν˜„μƒμ„ μ œκ±°ν•˜κ³ , λ°μ΄ν„°λ² μ΄μŠ€ ꡬ쑰 ν™•μž₯ μ‹œ μž¬λ””μžμΈμ„ μ΅œμ†Œν™”ν•©λ‹ˆλ‹€.

Q # 4-2) μ •κ·œν™”μ˜ 단점은? 

λ‹΅λ³€: λ¦΄λ ˆμ΄μ…˜ λΆ„ν•΄λ‘œ 인해 λ¦΄λ ˆμ΄μ…˜ κ°„μ˜ μ—°μ‚°(join)이 λ§Žμ•„μ§‘λ‹ˆλ‹€. 이둜 인해 응닡 μ‹œκ°„μ΄ 느렀질 수 μžˆμŠ΅λ‹ˆλ‹€.

 

Q # 5) λ°μ΄ν„°λ² μ΄μŠ€ λ·°λž€?

λ‹΅λ³€ : ν—ˆμš©λœ 데이터λ₯Ό μ œν•œμ μœΌλ‘œ 보여주기 μœ„ν•΄ ν•˜λ‚˜ μ΄μƒμ˜ ν…Œμ΄λΈ”μ—μ„œ μœ λ„λœ 가상 ν…Œμ΄λΈ”μž…λ‹ˆλ‹€.

 

Q # 5-1) λ°μ΄ν„°λ² μ΄μŠ€ 뷰의 μž₯점과 단점은 λ¬΄μ—‡μž…λ‹ˆκΉŒ?

λ‹΅λ³€ :

뷰의 μž₯점 )

  • 뷰의 데이터가 μ €μž₯λ˜λŠ” 물리적 μœ„μΉ˜κ°€ μ—†μœΌλ―€λ‘œ λ¦¬μ†ŒμŠ€λ₯Ό λ‚­λΉ„ν•˜μ§€ μ•Šκ³  좜λ ₯을 μƒμ„±ν•©λ‹ˆλ‹€.
  • μ‚½μž…, μ—…λ°μ΄νŠΈ 및 μ‚­μ œμ™€ 같은 λͺ…령을 ν—ˆμš©ν•˜μ§€ μ•ŠμœΌλ―€λ‘œ 데이터 μ•‘μ„ΈμŠ€κ°€ μ œν•œλ©λ‹ˆλ‹€.

뷰의 단점 )

  • ν•΄λ‹Ή 뷰와 κ΄€λ ¨λœ ν…Œμ΄λΈ”μ„ μ‚­μ œν•˜λ©΄ λ·°κ°€ 관련이 μ—†μŠ΅λ‹ˆλ‹€.
  • 큰 ν…Œμ΄λΈ”μ— λŒ€ν•΄ λ·°λ₯Ό λ§Œλ“€ λ•Œ 더 λ§Žμ€ λ©”λͺ¨λ¦¬κ°€ μ‚¬μš©λ©λ‹ˆλ‹€.

Q # 6) ER λͺ¨λΈμ€ λ¬΄μ—‡μž…λ‹ˆκΉŒ?

λ‹΅λ³€ : ER λͺ¨λΈμ€ λ°μ΄ν„°λ² μ΄μŠ€μ˜ κ°œλ…μ  λ·°λ₯Ό μ •μ˜ν•˜λŠ” μ—”ν„°ν‹°-관계 λͺ¨λΈμž…λ‹ˆλ‹€.

ER λͺ¨λΈμ€ 기본적으둜 μ‹€μ œ 싀체와 κ·Έ μ—°κ΄€ / 관계λ₯Ό λ³΄μ—¬μ€λ‹ˆλ‹€. μ—¬κΈ°μ„œ μ—”ν‹°ν‹°λŠ” λ°μ΄ν„°λ² μ΄μŠ€μ˜ 속성 μ„ΈνŠΈλ₯Ό λ‚˜νƒ€λƒ…λ‹ˆλ‹€.

Q # 6-1) μ—”ν„°ν‹°(Entity), μ—”ν„°ν‹° νƒ€μž…(Entitiy type) 및 μ—”ν„°ν‹° 집합(Entitiy set)을 μ •μ˜ν•˜μ‹­μ‹œμ˜€.

λ‹΅λ³€ : μ—”ν„°ν‹°λŠ” μ‹€μ„Έκ³„μ—μ„œ λ…λ¦½μ μœΌλ‘œ μ‘΄μž¬ν•˜λŠ” μž₯μ†Œ, 클래슀 λ˜λŠ” 객체 일 수 μžˆμŠ΅λ‹ˆλ‹€.

μ—”ν„°ν‹° νƒ€μž…μ€ μœ μ‚¬ν•œ νŠΉμ„±μ„ 가진 μ—”ν„°ν‹° 집합을 λ‚˜νƒ€λƒ…λ‹ˆλ‹€.

λ°μ΄ν„°λ² μ΄μŠ€μ— μ„€μ •λœ μ—”ν‹°ν‹°λŠ” νŠΉμ • μ—”ν‹°ν‹° μœ ν˜•μ„ κ°–λŠ” μ—”ν‹°ν‹°μ˜ 집합을 λ‚˜νƒ€λƒ…λ‹ˆλ‹€.

 

Q # 7) λ°μ΄ν„°λ² μ΄μŠ€ νŠΈλžœμž­μ…˜μ΄λž€ λ¬΄μ—‡μž…λ‹ˆκΉŒ?

λ‹΅λ³€ : λ°μ΄ν„°λ² μ΄μŠ€μ˜ μΌκ΄€μ„±μžˆλŠ” μƒνƒœλ₯Ό λ‹€λ₯Έ κ²ƒμœΌλ‘œ λ³€κ²½ν•˜λŠ” μž‘μ—… μˆœμ„œλ₯Ό λ°μ΄ν„°λ² μ΄μŠ€ νŠΈλžœμž­μ…˜μ΄λΌκ³ ν•©λ‹ˆλ‹€. νŠΈλžœμž­μ…˜ μ™„λ£Œ ν›„ 성곡적인 μ™„λ£Œκ°€ μ‹œμŠ€ν…œμ— λ°˜μ˜λ˜κ±°λ‚˜ νŠΈλžœμž­μ…˜μ΄ μ‹€νŒ¨ν•˜κ³  λ³€κ²½ 사항이 λ°˜μ˜λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

Q # 7-1) νŠΈλžœμž­μ…˜μ˜ 4가지 μ„±μ§ˆμ— λŒ€ν•΄ μ„€λͺ…ν•΄λ³΄μ„Έμš”.

λ‹΅λ³€ : μ΄ 넀가지 μ„±μ§ˆμ„ κ°€μ§€κ³ μžˆμŠ΅λ‹ˆλ‹€.

Atomicity(μ›μžμ„±) λŠ” νŠΈλžœμž­μ…˜μ˜ 연산이 DB에 λͺ¨λ‘ λ°˜μ˜λ˜λ˜μ§€ μ „ν˜€ λ°˜μ˜μ΄λ˜μ§€ μ•Šλ˜μ§€ λ‘˜μ€‘μ— ν•˜λ‚˜λ§Œ μˆ˜ν–‰ν•΄μ•Όν•œλ‹€.

Consistency(일관성) λŠ” νŠΈλžœμž­μ…˜μ΄ μ„±κ³΅μ μœΌλ‘œ μ™„λ£Œλœ ν›„μ—λŠ” μ–Έμ œλ‚˜ 일관성 μžˆλŠ” DBμƒνƒœλ‘œ λ³€ν™˜λ˜μ–΄μ•Όν•œλ‹€.

Isolation(독립성) 은 μˆ˜ν–‰μ€‘μΈ νŠΈλžœμž­μ…˜μ΄ μ™„μ „νžˆ μ™„λ£Œλ˜κΈ° μ „μ—λŠ” λ‹€λ₯Έ νŠΈλž™μž­μ…˜μ—μ„œ μˆ˜ν–‰ κ²°κ³Όλ₯Ό μ°Έμ‘°ν•  수 μ—†λ‹€.

Durablility(지속성) λŠ” μ„±κ³΅μ μœΌλ‘œ μ™„λ£Œλœ νŠΈλžœμž­μ…˜μ˜ κ²°κ³ΌλŠ” μ‹œμŠ€ν…œμ΄ κ³ μž₯λ‚˜λ”λΌλ„ 영ꡬ적으둜 λ°˜μ˜λ˜μ–΄μ•Ό ν•œλ‹€.

 

Q # 8) 인덱슀 λž€?

λ‹΅λ³€ : μΈλ±μŠ€λŠ” 데이터뢄야에 μžˆμ–΄μ„œ ν…Œμ΄λΈ”μ— λŒ€ν•œ λ™μž‘μ˜ 속도λ₯Ό λ†’μ—¬μ£ΌλŠ” 자료 ꡬ쑰λ₯Ό λ§ν•©λ‹ˆλ‹€. μΈλ±μŠ€λŠ” ν…Œμ΄λΈ” λ‚΄μ˜ 1개의 컬럼, ν˜Ήμ€ μ—¬λŸ¬ 개의 μ»¬λŸΌμ„ μ΄μš©ν•˜μ—¬ 생성될 수 μžˆμŠ΅λ‹ˆλ‹€. κ³ μ†μ˜ 검색 λ™μž‘ 뿐만 μ•„λ‹ˆλΌ λ ˆμ½”λ“œ μ ‘κ·Όκ³Ό κ΄€λ ¨ν•˜μ—¬ 효율적인 μˆœμ„œ 맀김 λ™μž‘μ— λŒ€ν•œ 기초λ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€.

인덱슀λ₯Ό μ‚¬μš©ν•΄μ•Ό ν•˜λŠ” 경우

  • λ°μ΄ν„°μ˜ 양이 많고 검색이 변경보닀 λΉˆλ²ˆν•œ 경우
  • 인덱슀λ₯Ό 걸고자 ν•˜λŠ” ν•„λ“œμ˜ 값이 λ‹€μ–‘ν•œ 값을 κ°€μ§€λŠ” 경우

인덱슀λ₯Ό μ‚¬μš©ν•  μ‹œ 단점

  •  DB의 10%정도 곡간이 μš”κ΅¬λ©λ‹ˆλ‹€.
  • 인덱슀λ₯Ό μƒμ„±ν•˜λŠ” μ‹œκ°„μ΄ 크게 μš”κ΅¬λ©λ‹ˆλ‹€.
  • INSERT, DELETE, UPDATE 쿼리문을 μ‹€ν–‰ν•  λ•Œ λ³„λ„μ˜ 과정이 μΆ”κ°€μ μœΌλ‘œ λ°œμƒν•˜κΈ° λ•Œλ¬Έμ— DB의 λ³€κ²½μž‘μ—…μ΄ 잦으면 μ„±λŠ₯이 μ €ν•˜λ©λ‹ˆλ‹€.

인덱슀 ν—ŒνŒ…μ€ 인덱슀 μˆ˜μ§‘μ„ ν–₯μƒμ‹œμΌœ λ°μ΄ν„°λ² μ΄μŠ€ μ„±λŠ₯뿐만 μ•„λ‹ˆλΌ 쿼리 μ„±λŠ₯을 ν–₯μƒμ‹œν‚€λŠ” ν”„λ‘œμ„ΈμŠ€μž…λ‹ˆλ‹€.

Q # 8-1) 인덱슀 ν—ŒνŒ…μ„ μ‚¬μš©ν•˜μ—¬ 쿼리 μ„±λŠ₯을 ν–₯μƒμ‹œν‚€λŠ” 방법은 λ¬΄μ—‡μž…λ‹ˆκΉŒ?

λ‹΅λ³€ : 인덱슀 ν—ŒνŒ…μ€ λ‹€μŒμ„ 톡해 쿼리 μ„±λŠ₯을 ν–₯μƒμ‹œν‚΅λ‹ˆλ‹€.

  • 쿼리 μ΅œμ ν™” ν”„λ‘œκ·Έλž¨μ„ μ‚¬μš©ν•˜μ—¬ μ›Œν¬λ‘œλ“œμ™€ 쿼리λ₯Ό μ‘°μ •ν•©λ‹ˆλ‹€.
  • 인덱슀 및 쿼리 배포의 μ„±λŠ₯ 및 효과 κ΄€μ°°

Q # 9) 검사점(Checkpoint)λ₯Ό μ •μ˜ν•˜μ‹­μ‹œμ˜€.

λ‹΅λ³€ : CheckpointλŠ” λͺ¨λ“  λ‘œκ·Έκ°€ μ €μž₯ λ””μŠ€ν¬μ— 영ꡬ적으둜 μ €μž₯되고 μΌκ΄€μ„±μ΄μ—†λŠ” 지점을 μ„ μ–Έν•©λ‹ˆλ‹€. μΆ©λŒμ΄ λ°œμƒν•˜λ©΄ μ‹œμŠ€ν…œμ΄ 검사 μ μ—μ„œ λ‹€μ‹œ μ‹œμž‘ν•  수 μžˆμœΌλ―€λ‘œ μž‘μ—…λŸ‰κ³Ό μ‹œκ°„μ΄ μ ˆμ•½λ©λ‹ˆλ‹€.

 

Q # 10) 데이터 사전(Data dictionary)을 μ„€λͺ…ν•˜μ‹­μ‹œμ˜€.

λ‹΅λ³€ : λ°μ΄ν„° 사전은 ν…Œμ΄λΈ”κ³Ό λ°μ΄ν„°λ² μ΄μŠ€ 개체의 λ‚΄μš©κ³Ό ꡬ쑰λ₯Ό μ„€λͺ…ν•˜λŠ” 정보 μ§‘ν•©μž…λ‹ˆλ‹€. λ°μ΄ν„° λ”•μ…”λ„ˆλ¦¬μ— μ €μž₯된 μ •λ³΄μ˜ μž‘μ—…μ€ λ°μ΄ν„°λ² μ΄μŠ€ μš”μ†Œ κ°„μ˜ 관계λ₯Ό μ œμ–΄, μ‘°μž‘ 및 μ•‘μ„ΈμŠ€ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€.

 

Q # 11) κΈ°λ³Έ ν‚€(Primary key)와 볡합 ν‚€(Compound key)λ₯Ό μ„€λͺ…ν•˜μ‹­μ‹œμ˜€.

λ‹΅λ³€ : κΈ°λ³Έ ν‚€ λŠ” λͺ¨λ“  ν–‰ 데이터가 κ³ μœ ν•˜κ²Œ μ‹λ³„λ˜λŠ” ν…Œμ΄λΈ”μ˜ ν•΄λ‹Ή μ—΄μž…λ‹ˆλ‹€. ν…Œμ΄λΈ”μ˜ λͺ¨λ“  ν–‰μ—λŠ” κΈ°λ³Έ ν‚€κ°€ μžˆμ–΄μ•Όν•˜λ©° 두 행은 λ™μΌν•œ κΈ°λ³Έ ν‚€λ₯Ό κ°€μ§ˆ 수 μ—†μŠ΅λ‹ˆλ‹€. κΈ°λ³Έ ν‚€ 값은 μ ˆλŒ€λ‘œ nullμ΄κ±°λ‚˜ μˆ˜μ •ν•˜κ±°λ‚˜ μ—…λ°μ΄νŠΈ ν•  수 μ—†μŠ΅λ‹ˆλ‹€. 볡합 ν‚€ λŠ” μ—΄ μ„ΈνŠΈκ°€ ν…Œμ΄λΈ”μ˜ λͺ¨λ“  행을 κ³ μœ ν•˜κ²Œ μ‹λ³„ν•˜λŠ” 후보 ν‚€μ˜ μ–‘μ‹μž…λ‹ˆλ‹€.

 

Q # 12) Unique ν‚€λ‘œ 무엇을 μ΄ν•΄ν•˜μ‹­λ‹ˆκΉŒ?

λ‹΅λ³€ : Unique ν‚€λŠ” μœ μΌμ„±μ„ 가지기 μœ„ν•΄ μ„€μ •ν•΄ 놓은 ν‚€λ‘œ 쀑볡이 λ˜λŠ” 것을 λ°©μ§€ν•©λ‹ˆλ‹€. Primary ν‚€λŠ” 였직 ν•˜λ‚˜λ§Œ 생성할 수 μžˆμ§€λ§Œ, Uniqueν‚€λŠ” μ—¬λŸ¬κ°œ 생성이 κ°€λŠ₯ν•©λ‹ˆλ‹€. Primaryν‚€μ˜ 경우 NULL 값을 ν—ˆμš©ν•˜μ§€ μ•Šμ§€λ§Œ, Unique ν‚€λŠ” NULL 값을 ν—ˆμš©ν•©λ‹ˆλ‹€.

 

Q # 13) λ°μ΄ν„°λ² μ΄μŠ€ 트리거둜 무엇을 μ΄ν•΄ν•˜μ‹­λ‹ˆκΉŒ?

λ‹΅λ³€ : ν…Œμ΄λΈ”μ—μ„œ μ‚½μž… μ „, μ‚½μž… ν›„, μ—…λ°μ΄νŠΈμ‹œ, ν–‰ μ‚­μ œμ‹œμ™€ 같은 μ΄λ²€νŠΈκ°€ λ°œμƒν•  λ•Œ μžλ™μœΌλ‘œ μ‹€ν–‰λ˜λŠ” λͺ…λ Ή μ„ΈνŠΈλ₯Ό λ°μ΄ν„°λ² μ΄μŠ€ νŠΈλ¦¬κ±°λΌκ³ ν•©λ‹ˆλ‹€.

 

Q # 14) μ €μž₯ ν”„λ‘œ μ‹œμ €λ₯Ό μ •μ˜ν•˜μ‹­μ‹œμ˜€.

λ‹΅λ³€ : μ €μž₯ ν”„λ‘œμ‹œμ €λŠ” 사전 컴파일 된 SQL 쿼리의 λͺ¨μŒμœΌλ‘œ, 사전에 μ€€λΉ„ν•΄ λ‘” λ§Žμ€ λͺ…령을 μžλ™μœΌλ‘œ μ‹€ν–‰ν•  수 있기 λ•Œλ¬Έμ— μž‘μ—…μ˜ νš¨μœ¨μ„±λ„ 높일 수 μžˆμŠ΅λ‹ˆλ‹€.

 

Q # 15) 'DELETE', 'TRUNCATE'및 'DROP'λͺ…령을 κ΅¬λΆ„ν•˜μ‹­μ‹œμ˜€.

λ‹΅λ³€ : 'DELETE' μ—°μ‚°μ„ μ‹€ν–‰ ν•œ ν›„ μ†μ‹€ 된 데이터λ₯Ό κ²€μƒ‰ν•˜κΈ° μœ„ν•΄ COMMIT 및 ROLLBACK 문을 μˆ˜ν–‰ ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

'TRUNCATE' μ‘°μž‘을 μ‹€ν–‰ ν•œ ν›„ μ†μ‹€ 된 데이터λ₯Ό κ²€μƒ‰ν•˜κΈ° μœ„ν•΄ COMMIT 및 ROLLBACK 문을 μˆ˜ν–‰ ν•  수 μ—†μŠ΅λ‹ˆλ‹€.

'DROP' λͺ…령은 κΈ°λ³Έ ν‚€ / μ™Έλž˜ 킀와 같은 ν…Œμ΄λΈ” λ˜λŠ” ν‚€λ₯Ό μ‚­μ œν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€.

 

Q # 16) μ΄μƒν˜„μƒμ΄λž€?

λ‹΅λ³€ : λ¦΄λ ˆμ΄μ…˜μ—μ„œ 일뢀 μ†μ„±λ“€μ˜ μ’…μ†μœΌλ‘œ 인해 λ°μ΄ν„°μ˜ 쀑볡이 λ°œμƒν•˜λŠ” 것을 λ§ν•©λ‹ˆλ‹€.

Q # 16-1) μ΄μƒμ˜ μ’…λ₯˜μ— λŒ€ν•΄ λ§ν•˜μ„Έμš”.

λ‹΅λ³€ :

μ‚½μž… 이상 은  μ›ν•˜μ§€ μ•ŠλŠ” μžλ£Œκ°€ μ‚½μž…λœλ‹€λ“ μ§€, μ‚½μž…ν•˜λŠ”λ° μžλ£Œκ°€ λΆ€μ‘±ν•΄ μ‚½μž…μ΄ λ˜μ§€ μ•Šμ•„ λ°œμƒν•˜λŠ” λ¬Έμ œμ μ„ λ§ν•œλ‹€.

μ‚­μ œ 이상 은 ν•˜λ‚˜μ˜ 자료만 μ‚­μ œν•˜κ³  μ‹Άμ§€λ§Œ, κ·Έ μžλ£Œκ°€ ν¬ν•¨λœ νŠœν”Œ 전체가 μ‚­μ œλ¨μœΌλ‘œ μ›ν•˜μ§€ μ•ŠλŠ” 정보 손싀이 λ°œμƒν•˜λŠ” λ¬Έμ œμ μ„ λ§ν•œλ‹€.

κ°±μ‹  이상 은 μ •ν™•ν•˜μ§€ μ•Šκ±°λ‚˜ μΌλΆ€μ˜ νŠœν”Œλ§Œ κ°±μ‹ λ˜μ–΄ 정보가 λͺ¨ν˜Έν•΄μ§€κ±°λ‚˜ 일관성이 μ—†μ–΄μ Έ μ •ν™•ν•œ 정보 νŒŒμ•…μ΄ λ˜μ§€ μ•ŠλŠ” λ¬Έμ œμ μ„ λ§ν•œλ‹€.

 

Q # 17) νŠΈλ¦¬κ±°μ— λŒ€ν•΄ μ„€λͺ…ν•˜κ³ , 트리거λ₯Ό μ“°λŠ” μ΄μœ μ— λŒ€ν•΄ λ§ν•˜μ„Έμš”.

λ‹΅λ³€ : μžλ™μœΌλ‘œ μ‹€ν–‰λ˜λ„λ‘ μ •μ˜λœ μ €μž₯ ν”„λ‘œμ‹œμ €μž…λ‹ˆλ‹€. INSERT/UPDATE/DELETE문에 λŒ€ν•œ μ‘λ‹΅μœΌλ‘œ μžλ™ ν˜ΈμΆœν•©λ‹ˆλ‹€.

트리거λ₯Ό μ‚¬μš©ν•˜λŠ” 이유

  • 업무 κ·œμΉ™μ„ 보μž₯
  • 업무 처리 μžλ™ν™”
  • 데이터 무결성 κ°•ν™”(λ³€κ²½, 생성, 제거, 볡ꡬ μ‹œ)

Q # 18) λ°μ΄ν„°λ² μ΄μŠ€ λ¬΄κ²°μ„±μ΄λž€?

λ‹΅λ³€ : λ°μ΄ν„° λ² μ΄μŠ€μ— μ €μž₯된 데이터 κ°’κ³Ό 그것이 ν‘œν˜„ν•˜λŠ” ν˜„μ‹€ μ„Έκ³„μ˜ μ‹€μ œκ°’μ΄ μΌμΉ˜ν•˜λŠ” 정확성을 λ§ν•©λ‹ˆλ‹€.

개체 무결성 은 λ¦΄λ ˆμ΄μ…˜μ—μ„œ κΈ°λ³Έν‚€λ₯Ό κ΅¬μ„±ν•˜λŠ” 속성은 NULLκ°’μ΄λ‚˜ 쀑볡값을 κ°€μ§ˆ 수 μ—†λ‹€.

μ°Έμ‘° 무결성 은 μ™Έλž˜ν‚€ 값은 NULLμ΄κ±°λ‚˜ μ°Έμ‘° ν…Œμ΄λΈ”μ˜ κΈ°λ³Έν‚€ 값이어야함

 

Q # 19) μ‘°μΈμ— λŒ€ν•΄ μ„€λͺ…ν•˜κ³  쑰인의 μ’…λ₯˜μ— λŒ€ν•΄ λ§ν•˜μ„Έμš”. 

λ‹΅λ³€ : 두 개 μ΄μƒμ˜ ν…Œμ΄λΈ”μ΄λ‚˜ λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό μ—°κ²°ν•˜μ—¬ 데이터λ₯Ό κ²€μƒ‰ν•˜λŠ” λ°©λ²•μž…λ‹ˆλ‹€.

Inner Join 은 2개 μ΄μƒμ˜ ν…Œμ΄λΈ”μ—μ„œ κ΅μ§‘ν•©λ§Œμ„ μΆ”μΆœ

Left Join 은 2개 μ΄μƒμ˜ ν…Œμ΄λΈ”μ—μ„œ from에 ν•΄λ‹Ήν•˜λŠ” 뢀뢄을 μΆ”μΆœ

Right Join 은 2개 μ΄μƒμ˜ ν…Œμ΄λΈ”μ—μ„œ fromκ³Ό joinν•˜λŠ” ν…Œμ΄λΈ”μ— ν•΄λ‹Ήν•˜λŠ” 뢀뢄을 μΆ”μΆœ

Outer Join 은 μ•„웃터 쑰인 λ˜λŠ” ν’€ 쑰인이라고 말함, 2개 μ΄μƒμ˜ ν…Œμ΄λΈ”μ—μ„œ λͺ¨λ“  ν…Œμ΄λΈ”μ— ν•΄λ‹Ήν•˜λŠ” 뢀뢄을 μΆ”μΆœ

 

Q # 20) κ΅μ°©μƒνƒœλž€?

λ‹΅λ³€ : 2개 μ΄μƒμ˜ νŠΈλžœμž­μ…˜μ΄ νŠΉμ • μžμ›(ν…Œμ΄λΈ” λ˜λŠ” ν–‰)의 잠금(Lock)을 νšλ“ν•œ 채 λ‹€λ₯Έ νŠΈλžœμž­μ…˜μ΄ μ†Œμœ ν•˜κ³  μžˆλŠ” μž κΈˆμ„ μš”κ΅¬ν•˜λ©΄ 아무리 기닀렀도 상황이 λ°”λ€Œμ§€ μ•ŠλŠ” μƒνƒœκ°€ λ˜λŠ”λ° 이λ₯Ό κ΅μ°©μƒνƒœ 라고 ν•©λ‹ˆλ‹€.

Q # 20-1) κ΅μ°©μƒνƒœλ₯Ό λ°©μ§€ν•˜κΈ° μœ„ν•œ 방법에 λŒ€ν•΄ μ„€λͺ…ν•˜μ„Έμš”.

λ‹΅λ³€ :

  • νŠΈλžœμž­μ…˜μ„ 자주 μ»€λ°‹ν•œλ‹€.
  • 정해진 μˆœμ„œλ‘œ ν…Œμ΄λΈ”μ— μ ‘κ·Όν•œλ‹€.
  • SELECT ~ FOR UPDATE 의 μ‚¬μš©μ„ ν”Όν•œλ‹€.

Q # 21) NoSQL이 κΈ°μ‘΄ RDBMS와 λ‹€λ₯Έ 점은?

λ‹΅λ³€ : NoSQL 은 μŠ€ν‚€λ§ˆκ°€ μ—†μŠ΅λ‹ˆλ‹€. 즉 데이터 관계와 정해진 규격(table-column의 μ •μ˜)이 μ—†μŠ΅λ‹ˆλ‹€.

관계 μ •μ˜κ°€ μ—†μœΌλ‹ˆ Join이 λΆˆκ°€λŠ₯ν•˜κ³  (ν•˜μ§€λ§Œ reference와 같은 κΈ°λŠ₯으둜 λΉ„μŠ·ν•˜κ²Œ κ΅¬ν˜„μ€ κ°€λŠ₯)  νŠΈλžœμž­μ…˜μ„ μ§€μ›ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

λΆ„μ‚°μ²˜λ¦¬(μˆ˜ν‰μ  ν™•μž₯)의 κΈ°λŠ₯을 μ‰½κ²Œ μ œκ³΅ν•œλ‹€λŠ” μž₯점이 μžˆμŠ΅λ‹ˆλ‹€.

λŒ€λΆ€λΆ„μ˜ NoSQL DBλŠ” λΆ„μ‚°μ²˜λ¦¬κΈ°λŠ₯을 λͺ©μ μœΌλ‘œ λ‚˜μ™”κΈ° λ•Œλ¬Έμ— λΆ„μ‚°μ²˜λ¦¬ κΈ°λŠ₯을 자체 ν”„λ ˆμž„μ›Œν¬μ— ν¬ν•¨ν•˜κ³  μžˆλ‹€.

 

Q # 21-1) μ–΄λ–€μƒν™©μ—μ„œ NoSQL을 μ“°λŠ” 것이 더 μ ν•©ν•œκ°€?

λ‹΅λ³€ : λΉ„μ •ν˜• 데이터λ₯Ό μ €μž₯ν•΄μ•Όν•  λ•Œ κ°€μž₯ μ ν•©ν•©λ‹ˆλ‹€.

 

Q # 22) ν…Œμ΄λΈ”μ„ λ“œλ‘­(DROP)ν•˜λŠ” 것과 자λ₯΄λŠ” 것(Truncate), 그리고 ν…Œμ΄λΈ” λ‚΄ λͺ¨λ“  λ ˆμ½”λ“œλ₯Ό μ‚­μ œ(Delete)ν•˜λŠ” κ²ƒμ˜ 차이점은 λ¬΄μ—‡μž…λ‹ˆκΉŒ?

λ‹΅λ³€ : DELETE TABLE은 λ‘œκ·Έλ˜λŠ” μž‘μ—…μ΄κΈ° λ•Œλ¬Έμ— μ‚­μ œλ˜λŠ” 각 행은 νŠΈλžœμž­μ…˜ λ‘œκ·Έμ— 기둝되고 이것은 μž‘μ—…μ„ 느리게 ν•©λ‹ˆλ‹€. TRUCATE TABLE μ—­μ‹œ ν…Œμ΄λΈ” λ‚΄ 행듀을 μ‚­μ œν•˜μ§€λ§Œ μ‚­μ œλ˜λŠ” 각 행을 κΈ°λ‘ν•˜μ§€ μ•Šκ³  λŒ€μ‹  ν…Œμ΄λΈ”μ˜ λ°μ΄ν„°λ² μ΄μŠ€ ν• λ‹Ή ν•΄μ œλ₯Ό κΈ°λ‘ν•˜μ—¬ μž‘μ—…μ΄ λΉ λ¦…λ‹ˆλ‹€. TRUNCATE TABLEλŠ” λ‘€λ°±ν•  수 μ—†μŠ΅λ‹ˆλ‹€.

DELETE λͺ…λ Ήμ–΄λŠ” λ°μ΄ν„°λŠ” μ§€μ›Œμ§€μ§€λ§Œ ν…Œμ΄λΈ” μš©λŸ‰μ€ 쀄어듀지 μ•ŠλŠ”λ‹€. μ›ν•˜λŠ” λ°μ΄ν„°λ§Œ μ§€μšΈ 수 μžˆλ‹€. μ‚­μ œ ν›„ RollBack κ°€λŠ₯ν•˜λ‹€.

TRUNCATE λͺ…λ Ήμ–΄λŠ” μš©λŸ‰μ΄ 쀄어듀고, 인덱슀 등도 λͺ¨λ‘ μ‚­μ œλœλ‹€. ν…Œμ΄λΈ”μ€ μ‚­μ œν•˜μ§€λŠ” μ•Šκ³  λ°μ΄ν„°λ§Œ μ‚­μ œν•œλ‹€. ν•œκΊΌλ²ˆμ— λ‹€ μ§€μ›Œμ•Ό ν•œλ‹€. μ‚­μ œ ν›„ μ ˆλŒ€ 되돌릴 수 μ—†λ‹€.

DROP λͺ…λ Ήμ–΄λŠ” ν…Œμ΄λΈ” 전체λ₯Ό μ‚­μ œ,곡간, 객체λ₯Ό μ‚­μ œν•œλ‹€. μ‚­μ œ ν›„ μ ˆλŒ€ 되돌릴 수 μ—†λ‹€.

 

 

λ°˜μ‘ν˜•
Comments