πŸ“’ CS/πŸ“ DB

320x100
πŸ“’ CS/πŸ“ DB

[DB] 논리적 쑰인 (Inner/Outer/Cross/Self)

쑰인 두 개 μ΄μƒμ˜ ν…Œμ΄λΈ”μ„ λ¬Άμ–΄ ν•˜λ‚˜μ˜ 결과물을 λ§Œλ“œλŠ” 것을 λ§ν•œλ‹€. λΉ„κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€(MongoDB)μ—μ„œλ„ lookupμ΄λž€ 쿼리둜 이λ₯Ό μ²˜λ¦¬ν•  수 μžˆλŠ”λ°, κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€λ³΄λ‹€ μ„±λŠ₯이 떨어지기 λ•Œλ¬Έμ— λ˜λ„λ‘ μ‚¬μš©ν•˜μ§€ μ•ŠλŠ”λ‹€. 쑰인(논리적 쑰인)의 μ’…λ₯˜ 논리적 μ‘°μΈμ΄λž€ μ‚¬μš©μžκ°€ SQL문을 μ΄μš©ν•΄ μ›ν•˜λŠ” 데이터 κ²°ν•© 방식을 κΈ°μˆ ν•˜λŠ” 것을 μ˜λ―Έν•œλ‹€. Inner Join (λ‚΄λΆ€ 쑰인): μ™Όμͺ½ ν…Œμ΄λΈ”κ³Ό 였λ₯Έμͺ½ ν…Œμ΄λΈ”μ˜ 두 행이 λͺ¨λ‘ μΌμΉ˜ν•˜λŠ” 행이 μžˆλŠ” λΆ€λΆ„λ§Œ ν‘œκΈ° Outer Join Left Join (μ™Όμͺ½ 쑰인): μ™Όμͺ½ ν…Œμ΄λΈ”μ˜ λͺ¨λ“  행이 κ²°κ³Ό ν…Œμ΄λΈ”μ— ν‘œκΈ° Right Join (였λ₯Έμͺ½ 쑰인): 였λ₯Έμͺ½ ν…Œμ΄λΈ”μ˜ λͺ¨λ“  행이 κ²°κ³Ό ν…Œμ΄λΈ”μ— ν‘œκΈ° Full Outer Join (전체 μ™ΈλΆ€ 쑰인): 쑰인 쑰건에..

πŸ“’ CS/πŸ“ DB

[DB] μ •κ·œν™” κ³Όμ • (1NF/2NF/3NF/BCNF)

ν•¨μˆ˜μ  쒅속(Functional Dependency) κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€μ—μ„œμ˜ μ •κ·œν™” 과정을 μ‚΄νŽ΄λ³΄κΈ° μ „, ν•¨μˆ˜μ  쒅속 κ°œλ…μ— λŒ€ν•΄ λ¨Όμ € μ•Œμ•„λ³΄μž. λ¦΄λ ˆμ΄μ…˜ R(ν…Œμ΄λΈ”)μ—μ„œ X와 Yλ₯Ό R의 μ†μ„±μ˜ 뢀뢄집합이라고 ν•  λ•Œ, X의 κ°’ 각각에 λŒ€ν•΄ Y의 값이 였직 ν•˜λ‚˜λ‘œ κ²°μ • 될 λ•Œ YλŠ” X에 μ’…μ†λœλ‹€κ³  ν•œλ‹€. 즉, ν…Œμ΄λΈ”μ˜ ν•œ ν•„λ“œκ°’ 집합(X)이 λ‹€λ₯Έ ν•„λ“œκ°’ 집합(Y)을 κ²°μ •ν•˜λŠ” 관계λ₯Ό λ§ν•œλ‹€. μ—¬κΈ°μ„œ "κ²°μ •ν•œλ‹€"λŠ” μ˜λ―ΈλŠ” λ¬΄μ—‡μΌκΉŒ? "μ•Œ 수 μžˆλ‹€", "영ν–₯을 λ―ΈμΉœλ‹€" 라고 받아듀이면 쉽닀. "Xκ°€ Y을 κ²°μ •ν•œλ‹€"λΌλŠ” λœ»μ€ X의 값을 μ•Œλ©΄ Y의 값을 μ•Œ 수 있고, X와 YλŠ” 관계가 μžˆμ–΄ X의 값에 μ˜ν•΄ Y의 값이 λ‹¬λΌμ§„λ‹€λŠ” 것을 μ˜λ―Έν•œλ‹€. 이런 ν•¨μˆ˜μ  쒅속 관계λ₯Ό ν™”μ‚΄ν‘œλ₯Ό 톡해 X→Y라고 ν‘œν˜„ν•˜κ³  Xλ₯Ό κ²°μ •μž..

πŸ“’ CS/πŸ“ DB

[DB] Persistence Framework (SQL Mapper vs ORM)

μ˜μ†μ„±(persistence) μ˜μ†μ„±μ΄λž€ 데이터λ₯Ό μƒμ„±ν•œ ν”„λ‘œκ·Έλž¨μ΄ μ’…λ£Œλ˜μ–΄λ„ 데이터가 사라지지 μ•ŠλŠ” νŠΉμ„±μ„ λ§ν•œλ‹€. 데이터가 μ˜μ†μ„±μ„ 갖지 μ•ŠλŠ”λ‹€λ©΄, λ°μ΄ν„°λŠ” λ©”λͺ¨λ¦¬μ—μ„œλ§Œ μ‘΄μž¬ν•˜κΈ° λ•Œλ¬Έμ— ν”„λ‘œκ·Έλž¨μ„ μ’…λ£Œν•˜λ©΄ λͺ¨λ‘ λ‚ μ•„κ°„λ‹€. λ°μ΄ν„°μ—κ²Œ μ˜μ†μ„±μ„ λΆ€μ—¬ν•˜λ €λ©΄ 파일 μ‹œμŠ€ν…œμ΄λ‚˜ λ°μ΄ν„°λ² μ΄μŠ€μ— μ €μž₯ν•΄μ•Ό ν•œλ‹€. λ°μ΄ν„°λ² μ΄μŠ€μ— 객체(데이터) μ €μž₯ν•˜λŠ” 방법 1. JDBC JDBC(Java Database Connectivity)λž€ JAVAμ—μ„œ DB에 μ ‘κ·Όν•  수 μžˆλ„λ‘ μ œκ³΅ν•˜λŠ” APIλ₯Ό λ§ν•œλ‹€. JDBCλŠ” μΈν„°νŽ˜μ΄μŠ€λ‘œ DBMS의 μ’…λ₯˜μ— 상관없이 μ΄μš©ν•  수 있으며 μžλ°”μ—μ„œ λͺ¨λ“  데이터 μ ‘κ·Όμ˜ 근간이닀. (μ•„λž˜μ—μ„œ μ‚΄νŽ΄λ³Ό λͺ¨λ“  Persistence FramworkλŠ” JDBCλ₯Ό μ‚¬μš©) *순수 JDBCλŠ” κ½€λ‚˜ λ³΅μž‘ν•˜κ³  λ²ˆκ±°λ‘­λ‹€..

πŸ“’ CS/πŸ“ DB

[DB] νŒŒν‹°μ…”λ‹

νŒŒν‹°μ…”λ‹(λ°μ΄ν„°λ² μ΄μŠ€ λΆ„ν• ) νŒŒν‹°μ…”λ‹μ΄λž€ λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό μ—¬λŸ¬ λΆ€λΆ„μœΌλ‘œ λΆ„ν• ν•˜λŠ” κ²ƒμœΌλ‘œ 큰 ν…Œμ΄λΈ”μ΄λ‚˜ 인덱슀λ₯Ό μž‘μ€ ‘νŒŒν‹°μ…˜’ λ‹¨μœ„λ‘œ λ‚˜λˆ„μ–΄ κ΄€λ¦¬ν•˜λŠ” 기법을 λ§ν•œλ‹€. μ„œλΉ„μŠ€μ˜ 크기가 점점 컀지고 DB에 μ €μž₯ν•˜λŠ” λ°μ΄ν„°λ“€μ˜ 규λͺ¨ λ˜ν•œ μ»€μ§€λ©΄μ„œ 기쑴에 μ‚¬μš©ν•˜λ˜ DBμ‹œμŠ€ν…œμ˜ μš©λŸ‰κ³Ό μ„±λŠ₯에 λ¬Έμ œκ°€ λ°œμƒν•˜κ²Œ λ˜μ—ˆλ‹€. 이λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•œ λ°©λ²•μœΌλ‘œ νŒŒν‹°μ…”λ‹ 기법이 λ‚˜νƒ€λ‚˜κ²Œ λ˜μ—ˆλ‹€. 물리적인 데이터 뢄할이 μžˆλ”λΌλ„, DB에 μ ‘κ·Όν•˜λŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ μž…μž₯μ—μ„œλŠ” 이λ₯Ό μΈμ‹ν•˜μ§€ λͺ»ν•œλ‹€. 데이터 μ²˜λ¦¬λŠ” ν…Œμ΄λΈ” λ‹¨μœ„λ‘œ 이뀄지고, 데이터 μ €μž₯은 νŒŒν‹°μ…˜ λ³„λ‘œ μˆ˜ν–‰λœλ‹€. νŒŒν‹°μ…”λ‹ μž₯점 μ„±λŠ₯ 데이터 μ ‘κ·Ό μ‹œ μ•‘μ„ΈμŠ€ λ²”μœ„λ₯Ό 쀄여 쿼리의 μ„±λŠ₯이 ν–₯μƒλœλ‹€. νŒŒν‹°μ…˜ λ³„λ‘œ 데이터가 λΆ„μ‚°λ˜μ–΄ μ €μž₯λ˜λ―€λ‘œ λ””μŠ€ν¬μ˜ μ„±λŠ₯이 ν–₯μƒλœλ‹€. νŒŒν‹°μ…˜ λ³„λ‘œ λ°±μ—… ..

πŸ“’ CS/πŸ“ DB

[DB] SQL

DDL - CREATE / ALTER / DROP DCL - GRANT / REVOKE DML - INSERT / UPDATE / DELETE / SELECT (WEHER / ORDER BY / GROUP BY) https://zhiblog.tistory.com/32 [DB] SQL - SQL 기초 이둠, μ½”λ”© ν…ŒμŠ€νŠΈ λŒ€λΉ„ SQL(Structed Query Language)μ΄λž€? SQLλž€ ν‘œμ€€ κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€ μ–Έμ–΄λ‘œ, κ΄€κ³„λŒ€μˆ˜μ™€ 관계해석을 기초둜 ν•œ ν˜Όν•© 데이터 μ–Έμ–΄μž…λ‹ˆλ‹€. μ‚¬μš© μš©λ„μ— 따라 DDL, DCL, DML둜 κ΅¬λΆ„λ©λ‹ˆλ‹€. μžμ„Έν•˜κ²Œ λ‹€λ€„λ³Όκ²Œμš” zhiblog.tistory.com

πŸ“’ CS/πŸ“ DB

[DB] νŠΈλžœμž­μ…˜(κ°œλ…/νŠΉμ„±/μ—°μ‚°/μƒνƒœ)

νŠΈλžœμž­μ…˜μ΄λž€? λ°μ΄ν„°λ² μ΄μŠ€μ˜ μƒνƒœλ₯Ό λ³€ν™”μ‹œν‚€κΈ° μœ„ν•΄μ„œ μˆ˜ν–‰ν•˜λŠ” μž‘μ—…μ˜ μ΅œμ†Œ λ‹¨μœ„λ₯Ό λœ»ν•œλ‹€. μ—¬κΈ°μ„œ μž‘μ—…μ˜ λ‹¨μœ„λŠ” μ§ˆμ˜μ–΄ ν•œ λ¬Έμž₯을 λœ»ν•˜λŠ” 것이 μ•„λ‹ˆλ©°, 이 μž‘μ—… λ‹¨μœ„λŠ” μͺΌκ°œμ§ˆ 수 μ—†λ‹€. κ°„λ‹¨νžˆ 말해 μ—¬λŸ¬ 개의 μ§ˆμ˜μ–΄λ“€μ΄ 묢인 μž‘μ—…μ˜ ν•œ λ‹¨μœ„λ₯Ό μ˜λ―Έν•˜λŠ”λ°, 이 λ‹¨μœ„λ§ŒνΌ DB에 λͺ…령을 ν•œ λ²ˆμ— λ°˜μ˜ν•œλ‹€. 예λ₯Ό λ“€μ–΄ Aκ°€ Bμ—κ²Œ μ†‘κΈˆν•˜λŠ” 경우λ₯Ό μƒκ°ν•΄λ³΄μž. Aκ°€ Bμ—κ²Œ 일정 κΈˆμ•‘μ„ μ†‘κΈˆν–ˆμ„ λ•Œ, μ •μƒμ μœΌλ‘œ μ†‘κΈˆμ΄ μ™„λ£Œλ˜λ©΄ A의 κ³„μ’Œμ—μ„œ ν•΄λ‹Ή κΈˆμ•‘μ΄ 차감되고, B에 κ³„μ’Œμ—λŠ” 같은 κΈˆμ•‘μ΄ μΆ”κ°€λ˜μ–΄μ•Ό ν•œλ‹€. 이λ₯Ό μ§ˆμ˜μ–΄λ‘œ ν‘œν˜„ν•΄λ³΄λ©΄ μ•„λž˜μ™€ κ°™λ‹€. -- A κ³„μ’Œμ—μ„œ κΈˆμ•‘ 차감 UPDATE κ³„μ’Œ SET μž”μ•‘ = μž”μ•‘ - 10000 WHERE 이름 = 'A'; -- B κ³„μ’Œμ— κΈˆμ•‘ μΆ”κ°€ UPDATE κ³„μ’Œ SET μž”μ•‘ =..

πŸ“’ CS/πŸ“ DB

[DB] λ©΄μ ‘μ§ˆλ¬Έ 정리

SQL Q1. SQLμ΄λž€ λ¬΄μ—‡μž…λ‹ˆκΉŒ? A1. ꡬ쑰적 질의 μ–Έμ–΄μ˜ μ€„μž„λ§λ‘œ κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€ μ‹œμŠ€ν…œμ—μ„œ 데이터λ₯Ό κ²€μƒ‰ν•˜κ³  κ΄€λ¦¬ν•˜κΈ° μœ„ν•΄ κ³ μ•ˆλœ μ–Έμ–΄μž…λ‹ˆλ‹€. SQL은 3가지 λ²”μ£Όλ‘œ λ‚˜λˆŒ 수 μžˆλŠ”λ°, DBμ—μ„œ 데이터와 데이터 κ°„μ˜ 관계λ₯Ό μ„€λͺ…ν•˜κΈ° μœ„ν•œ 데이터 μ •μ˜ μ–Έμ–΄(DDL), 데이터 검색, 등둝, μ‚­μ œ, μˆ˜μ •μ„ μœ„ν•œ 데이터 μ‘°μž‘ μ–Έμ–΄(DML), λ§ˆμ§€λ§‰μœΌλ‘œ 데이터에 λŒ€ν•œ 접근을 μ œμ–΄ν•˜κΈ° μœ„ν•œ 데이터 μ œμ–΄ μ–Έμ–΄(DCL)κ°€ μžˆμŠ΅λ‹ˆλ‹€. Q2. 데이터 μ‚­μ œλ₯Ό μœ„ν•œ DELETE, TRUNCATE, DROP λͺ…λ Ήμ˜ 차이에 λŒ€ν•΄ μ„€λͺ…ν•˜μ„Έμš”. A2. DELETE λͺ…령은 ν…Œμ΄λΈ”μ— μžˆλŠ” 데이터λ₯Ό ν•œ 쀄씩 μ„ νƒν•˜μ—¬ 일일이 μ‚­μ œν•©λ‹ˆλ‹€. TRUNCATE λͺ…령은 전체 데이터λ₯Ό ν•œ λ²ˆμ— μ‚­μ œν•˜λŠ” λ°©μ‹μž…λ‹ˆλ‹€. DELETE λͺ…λ Ήκ³Ό λ‹€λ₯΄..

πŸ“’ CS/πŸ“ DB

[DB] λ°μ΄ν„°λ² μ΄μŠ€ 기초 / κ΄€κ³„ν˜•λ°μ΄ν„°λ² μ΄μŠ€ / key

λ°μ΄ν„°λ² μ΄μŠ€(DB)λž€ λ°μ΄ν„°λ“€μ˜ λͺ¨μž„을 μΌμ»«λŠ” 말둜 λŒ€κ·œλͺ¨μ˜ 정보λ₯Ό κ΄€λ¦¬ν•˜λ„λ‘ μ„€κ³„λœλ‹€. μ—¬κΈ°μ„œ λ§ν•˜λŠ” 데이터 κ΄€λ¦¬λŠ” 정보 μ €μž₯ ꡬ쑰λ₯Ό μ •μ˜ν•˜λŠ” μž‘μ—…κ³Ό μ €μž₯된 정보λ₯Ό μ‘°μž‘ν•˜κΈ° μœ„ν•œ 기법이 λͺ¨λ‘ ν¬ν•¨λ˜λŠ” μ˜λ―Έμ΄λ‹€. *초기의 λ°μ΄ν„°λ² μ΄μŠ€ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ€ 파일 μ‹œμŠ€ν…œ μœ„μ— 직접 κ΅¬μΆ•λ˜μ—ˆλ‹€. 파일 μ‹œμŠ€ν…œ 파일 μ‹œμŠ€ν…œμ€ νŒŒμΌμ„ μ €μž₯ μž₯μΉ˜μ— μ €μž₯ν•˜κ³  μ‚¬μš©ν•˜κΈ° μœ„ν•œ 운영체제 μƒμ˜ μΌμ’…μ˜ κ·œμΉ™μ΄λ‚˜ 체계λ₯Ό λ§ν•œλ‹€. 파일 μ‹œμŠ€ν…œμ— μ €μž₯된 정보λ₯Ό μ΄μš©ν•˜λ €λ©΄ μš”κ΅¬μ‚¬ν•­μ— λ§žλŠ” λ‹€μ–‘ν•œ μ‘μš© ν”„λ‘œκ·Έλž¨μ΄ ν•„μš”ν•˜λ‹€. 예λ₯Ό λ“€μ–΄ 파일 μ‹œμŠ€ν…œμ— λŒ€ν•™ 쑰직과 κ΄€λ ¨λœ 정보(ꡐ수, 학생, μˆ˜μ—… λ“±κ³Ό κ΄€λ ¨λœ)듀을 μ €μž₯ν•œ 경우λ₯Ό μƒκ°ν•΄λ³΄μž. 이 λŒ€ν•™ 쑰직의 정보듀을 ν™œμš©ν•˜λ €λ©΄ ν•„μš”ν•œ μš”κ΅¬μ‚¬ν•­μ— λ§žλŠ” μ‘μš© ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•΄μ•Ό ν•œλ‹€. 😦 μƒˆλ‘œμš΄ 학생에..

λ°˜μ‘ν˜•
dana4056
'πŸ“’ CS/πŸ“ DB' μΉ΄ν…Œκ³ λ¦¬μ˜ κΈ€ λͺ©λ‘