Search

λ°μ΄ν„°λ² μ΄μŠ€ κΈ°λ³Έ

데이터?

: μΈ‘μ • 및 μˆ˜μ§‘ν•œ κ°’

정보?

: 데이터λ₯Ό κ°€κ³΅ν•˜μ—¬ 의미λ₯Ό λΆ€μ—¬ν•œ 것

λ°μ΄ν„°λ² μ΄μŠ€ (DataBase)

: β€œλ°μ΄ν„° μ €μž₯μ†Œβ€

데이터 + 베이슀

β€’
데이터 : μΈ‘μ • 및 μˆ˜μ§‘ν•œ κ°’
β€’
베이슀 : 기지
β€’
λ°μ΄ν„°λ² μ΄μŠ€ : 데이터가 μ €μž₯된 기지; β€œλ°μ΄ν„° μ €μž₯μ†Œβ€
κ³΅μœ ν•˜κΈ° μœ„ν•΄ ν†΅ν•©ν•˜μ—¬ μ €μž₯ν•œ 운영 λ°μ΄ν„°μ˜ 집합

λ°μ΄ν„°λ² μ΄μŠ€ νŠΉμ§•

데이터λ₯Ό 파일 μ‹œμŠ€ν…œμœΌλ‘œ κ΄€λ¦¬ν•˜λ©΄ 데이터가 쀑볡 및 λˆ„λ½λ  κ°€λŠ₯성이 비ꡐ적 더 크닀. λ˜ν•œ, μ—¬λŸ¬ μ‹œμŠ€ν…œ κ°„μ˜ 데이터λ₯Ό κ³΅μœ ν•˜λŠ” 것이 μ–΄λ ΅λ‹€. ν•˜μ§€λ§Œ, λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό μ‚¬μš©ν•˜λ©΄, μ—¬λŸ¬ μ‹œμŠ€ν…œμ„ μ‚¬μš©ν•˜λ”λΌλ„ 데이터λ₯Ό 쀑볡 및 λˆ„λ½μ„ μ΅œμ†Œν™”ν•  수 있으며 μ‹œμŠ€ν…œ κ°„ μ‹€μ‹œκ°„ 데이터 κ³΅μœ κ°€ κ°€λŠ₯ν•˜λ‹€.

λ°μ΄ν„°λ² μ΄μŠ€ μ‹œμŠ€ν…œ

λ°μ΄ν„°λ² μ΄μŠ€ μ‹œμŠ€ν…œ

: μ‚¬μš©μž + μΈν„°νŽ˜μ΄μŠ€ + DBMS + λ°μ΄ν„°λ² μ΄μŠ€(데이터사전, μ €μž₯DB)
β€’
μ‚¬μš©μž : 일반 μ‚¬μš©μž, 개발자, SQL μ‚¬μš©μž, DBA
β€’
μΈν„°νŽ˜μ΄μŠ€ : UI, DB API, DB TOOL
β—¦
UI : μ‚¬μš©μžκ°€ 데이터λ₯Ό μš”μ²­ν•˜λŠ” ν™”λ©΄
β–ͺ
μ›Ή, μ•±, ν”„λ‘œκ·Έλž¨ ν™”λ©΄
β—¦
DB API : κ°œλ°œμžκ°€ κ°œλ°œν•˜λŠ” ν”„λ‘œκ·Έλž¨κ³Ό μ—°κ²°λœ μΈν„°νŽ˜μ΄μŠ€
β–ͺ
DB λ“œλΌμ΄λ²„ (JDBC λ“±)
β—¦
DB TOOL : 데이터 κ΄€λ¦¬μžκ°€ DBMS λ₯Ό μ‚¬μš©ν•˜λŠ” ν”„λ‘œκ·Έλž¨
β–ͺ
SQL Developer, Workbench, DBeaver, Toad λ“±
β€’
λ°μ΄ν„°λ² μ΄μŠ€ : 데이터 사전 + μ €μž₯ λ°μ΄ν„°λ² μ΄μŠ€
β—¦
데이터 사전
β–ͺ
메타 ν…Œμ΄ν„°κ°€ μ €μž₯λ˜λŠ” κ³³
β–ͺ
메타데이터 : λ°μ΄ν„°λ² μ΄μŠ€ ꡬ쑰, μŠ€ν‚€λ§ˆ, ν…Œμ΄λΈ” μ •μ˜, μ œμ•½ 쑰건, 인덱슀, λ·° λ“±
β—¦
μ €μž₯ λ°μ΄ν„°λ² μ΄μŠ€
β–ͺ
μ‹€μ œ 데이터가 μ €μž₯λ˜λŠ” κ³³
β€’
DBMS : λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό κ΄€λ¦¬ν•˜λŠ” μ‹œμŠ€ν…œ
β—¦
μ£Όμš” μ œν’ˆ : ORACLE, MySQL, MS-SQL
λ°μ΄ν„°λ² μ΄μŠ€ μ‹œμŠ€ν…œμ˜ κ΅¬μ„±μš”μ†ŒλŠ” μ‚¬μš©μž, μΈν„°νŽ˜μ΄μŠ€, DBMS, λ°μ΄ν„°λ² μ΄μŠ€ μž…λ‹ˆλ‹€.
μ‚¬μš©μžλŠ”, λ°μ΄ν„°λ² μ΄μŠ€ μ‹œμŠ€ν…œμ„ μ‚¬μš©ν•˜λŠ” μ‚¬λžŒ λ˜λŠ” μ‘μš© ν”„λ‘œκ·Έλž¨μ„ λ§ν•©λ‹ˆλ‹€. μ‚¬μš©μžλŠ” 데이터λ₯Ό 쑰회, μΆ”κ°€, μˆ˜μ •, μ‚­μ œν•˜κ³  λ°μ΄ν„°λ² μ΄μŠ€ μ‹œμŠ€ν…œμ˜ κΈ°λŠ₯을 ν™œμš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
μΈν„°νŽ˜μ΄μŠ€λŠ”, μ‚¬μš©μžμ™€ λ°μ΄ν„°λ² μ΄μŠ€ μ‹œμŠ€ν…œ κ°„μ˜ μƒν˜Έ μž‘μš©μ„ μœ„ν•œ 맀개체둜, λͺ…령을 μž…λ ₯ν•˜κ³  κ²°κ³Όλ₯Ό ν‘œμ‹œν•˜λŠ” 방식을 μ œκ³΅ν•©λ‹ˆλ‹€. μΈν„°νŽ˜μ΄μŠ€λŠ” λͺ…λ Ή 쀄 μΈν„°νŽ˜μ΄μŠ€(CLI), κ·Έλž˜ν”½ μ‚¬μš©μž μΈν„°νŽ˜μ΄μŠ€(GUI), μ‘μš© ν”„λ‘œκ·Έλž¨ API λ“± λ‹€μ–‘ν•œ ν˜•νƒœλ‘œ μ‘΄μž¬ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
DBMS(Database Management System) λŠ”, λ°μ΄ν„°λ² μ΄μŠ€ μ‹œμŠ€ν…œμ˜ 핡심 ꡬ성 μš”μ†Œλ‘œ, 데이터λ₯Ό κ΄€λ¦¬ν•˜κ³  μ‘°μž‘ν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” μ†Œν”„νŠΈμ›¨μ–΄μž…λ‹ˆλ‹€. DBMSλŠ” λ°μ΄ν„°λ² μ΄μŠ€ 생성, μ‘°μž‘, μœ μ§€ 관리, λ³΄μ•ˆ, 무결성 λ“±μ˜ κΈ°λŠ₯을 μ œκ³΅ν•©λ‹ˆλ‹€.
λ°μ΄ν„°λ² μ΄μŠ€λŠ”, μ‹€μ œ 데이터가 μ €μž₯λ˜λŠ” μž₯μ†Œμž…λ‹ˆλ‹€. λ°μ΄ν„°λ² μ΄μŠ€λŠ” 데이터 사전(메타데이터)κ³Ό μ €μž₯ λ°μ΄ν„°λ² μ΄μŠ€λ‘œ κ΅¬μ„±λ©λ‹ˆλ‹€. 데이터 사전은 데이터에 λŒ€ν•œ 정보λ₯Ό ν¬ν•¨ν•˜κ³ , μ €μž₯ λ°μ΄ν„°λ² μ΄μŠ€λŠ” μ‹€μ œ 데이터 λ ˆμ½”λ“œλ₯Ό λ³΄μœ ν•©λ‹ˆλ‹€.

데이터 λͺ¨λΈ

: 데이터λ₯Ό μ €μž₯ν•˜λŠ” 방식을 κ°„λ‹¨ν•˜κ²Œ μ„€λͺ…ν•΄μ£ΌλŠ” ꡬ쑰
( λͺ¨λΈ : 싀체λ₯Ό κ°„λ‹¨ν•˜κ²Œ μ„€λͺ…ν•΄μ£ΌλŠ” μž‘μ€ ꡬ쑰 )

데이터 λͺ¨λΈμ˜ μ’…λ₯˜

β€’
κ³„μΈ΅ν˜•
β€’
λ„€νŠΈμ›Œν¬ν˜•
β€’
객체지ν–₯ν˜•
β€’
κ΄€κ³„ν˜•

κ΄€κ³„ν˜• 데이터 λͺ¨λΈ

: ν–‰κ³Ό 열을 κ°–λŠ” 2차원 ꡬ쑰의 ν…Œμ΄λΈ” ν˜•νƒœλ₯Ό ν†΅ν•˜μ—¬ 자료λ₯Ό ν‘œν˜„ν•˜λŠ” 것

κ΄€κ³„ν˜• 데이터 λͺ¨λΈμ˜ 핡심 ꡬ성 μš”μ†Œ

β€’
개체(Entity) = λ¦΄λ ˆμ΄μ…˜ (μ‹€μ œ DB의 ν…Œμ΄λΈ”κ³Ό λŒ€μ‘)
β€’
속성(Attriute)
β€’
관계(Relationship)

λ¦΄λ ˆμ΄μ…˜μ˜ κ΅¬μ„±μš”μ†Œ

β€’
λ¦΄λ ˆμ΄μ…˜(Relation) : 데이터듀을 2차원 ν…Œμ΄λΈ”μ˜ ꡬ쑰둜 μ €μž₯ν•œ 것(ν…Œμ΄λΈ”)
β€’
속성(Attribute) : λ¦΄λ ˆμ΄μ…˜μ˜ μ—΄ (컬럼; column)
β€’
νŠœν”Œ(Tuple) : λ¦΄λ ˆμ΄μ…˜μ˜ ν–‰ (둜우; row)
β€’
차수(Degree) : λ¦΄λ ˆμ΄μ…˜ μ†μ„±μ˜ 개수
β€’
카디널리티(Cardinality) : λ¦΄λ ˆμ΄μ…˜μ˜ μž…λ ₯된 νŠœν”Œμ˜ 개수
β€’
도메인(Domain) : ν•˜λ‚˜μ˜ 속성이 κ°€μ§ˆ 수 μžˆλŠ” κ°’μ˜ λ²”μœ„

λ¦΄λ ˆμ΄μ…˜μ˜ νŠΉμ§•

β€’
νŠœν”Œμ˜ 속성은 ν•˜λ‚˜μ˜ λ°μ΄ν„°λ§Œ μ €μž₯ν•œλ‹€
β€’
νŠœν”Œμ€ λͺ¨λ‘ λ‹€λ₯Έ λ°μ΄ν„°λ‘œ μœ μΌν•œ 값을 κ°–λŠ”λ‹€
β€’
νŠœν”Œ κ°„μ˜ μˆœμ„œλŠ” μ˜λ―Έκ°€ μ—†λ‹€
β€’
속성 κ°„μ˜ μˆœμ„œλŠ” μ˜λ―Έκ°€ μ—†λ‹€
β€’
속성은 λΆ„ν•΄λ˜μ§€ μ•ŠλŠ” μ›μžκ°’λ₯Ό κ°–λŠ”λ‹€ (ν•˜λ‚˜μ˜ 속성은 ν•˜λ‚˜μ˜ κ°’λ§Œ κ°–λŠ”λ‹€)
데이터 λͺ¨λΈμ€ 데이터λ₯Ό μ €μž₯ν•˜λŠ” 방식을 μ΄ν•΄ν•˜κΈ° μ‰½κ²Œ λ‹¨μˆœν™”ν•œ ꡬ쑰이닀. 데이터 λͺ¨λΈμ— λŒ€ν•œ 연ꡬ가 μ§„ν–‰λ˜λ©΄μ„œ, λ‹€μ–‘ν•œ ν˜•νƒœμ˜ 데이터 λͺ¨λΈμ΄ λ“±μž₯ν•˜μ˜€μœΌλ‚˜, ν˜„μž¬κΉŒμ§€ κ°€μž₯ 널리 μ‚¬μš©λ˜λŠ” 데이터 λͺ¨λΈμ€ λ°”λ‘œ κ΄€κ³„ν˜• 데이터 λͺ¨λΈμ΄λ‹€. κ΄€κ³„ν˜• 데이터 λͺ¨λΈμ€ ν–‰κ³Ό μ—΄λ‘œ κ΅¬μ„±λœ ν‘œμ˜ ν˜•νƒœ, 즉 ν…Œμ΄λΈ”μ΄λΌλŠ” κΈ°λ³Έ ꡬ쑰둜 데이터λ₯Ό ν‘œν˜„ν•˜κ³  κ΄€λ¦¬ν•˜λŠ” ꡬ쑰이닀.
κ΄€κ³„ν˜• 데이터 λͺ¨λΈμ€ λ°μ΄ν„°λ² μ΄μŠ€μ˜ ꡬ쑰λ₯Ό λͺ…ν™•ν•˜κ²Œ μ •μ˜ν•˜μ—¬ λ°μ΄ν„°μ˜ 일관성, 무결성, λ³΄μ•ˆ 등을 μœ μ§€ν•˜κ³  κ΄€λ¦¬ν•˜κΈ°μ— μ ν•©ν•œ 방법 쀑 ν•˜λ‚˜μ΄λ‹€. μ΄λŸ¬ν•œ κ΄€κ³„ν˜• 데이터 λͺ¨λΈμ„ 기반으둜 데이터λ₯Ό λ‹€λ£¨λŠ” 데이터 μ €μž₯μ†Œλ₯Ό κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€λΌκ³  ν•œλ‹€. μ‰½κ²Œ 말해, ν–‰κ³Ό μ—΄μ˜ 2차원 ꡬ쑰인 ν…Œμ΄λΈ”μ„ 기본으둜 λ‹€λ£¨λŠ” λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€λΌκ³  ν•  수 μžˆλ‹€.

κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€

: κ΄€κ³„ν˜• 데이터 λͺ¨λΈμ— κΈ°λ°˜ν•œ λ°μ΄ν„°λ² μ΄μŠ€

RDBMS(Relational Database Management System)

: κ΄€κ³„ν˜• 데이터 λͺ¨λΈμ„ λ°”νƒ•μœΌλ‘œ 데이터λ₯Ό μ €μž₯ 및 κ΄€λ¦¬ν•˜λŠ” μ‹œμŠ€ν…œ

SQL (Sturctrured Query Language)

: "κ΅¬μ‘°ν™”λœ μ§ˆμ˜μ–΄"
RDBMS μ—μ„œ 데이터λ₯Ό 닀루고 κ΄€λ¦¬ν•˜λŠ” 질의 μ–Έμ–΄

κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€ μ œν’ˆ

β€’
ORACLE
β€’
MySQL
β€’
MS-SQL

SQL λΆ„λ₯˜

μ’…λ₯˜
μ„€λͺ…
DDL
- DB 의 객체 및 ꡬ쑰λ₯Ό μ •μ˜ν•˜λŠ” μ–Έμ–΄ - Data Definition Language - CREATE, ALTER, DROP, RENAME, TRUNCATE
DML
- 데이터λ₯Ό μž…λ ₯, 쑰회, μˆ˜μ •, μ‚­μ œ ν•˜λŠ” μ–Έμ–΄ - Data Manipulation Language - INSERT, SELECT, UPDATE, DELETE
DCL
- μ‚¬μš©μžμ—κ²Œ κΆŒν•œ λΆ€μ—¬ 및 νšŒμˆ˜ν•˜λŠ” μ–Έμ–΄ - Data Control Language - GRANT, REVOKE
TCL
- νŠΈλžœμž­μ…˜μ„ μ œμ–΄ν•˜λŠ” μ–Έμ–΄ - Transaction, Control Language - COMMIT, ROLLBACK, SAVEPOINT

DDL (데이터 μ •μ˜μ–΄)

: ν…Œμ΄λΈ”μ„ ν¬ν•¨ν•œ μ—¬λŸ¬ 객체 생성, μˆ˜μ •, μ‚­μ œ ν•˜λŠ” λͺ…λ Ήμ–΄ - CREATE : 객체 생성 - ALTER : 객체 μˆ˜μ • - DROP : 객체 μ‚­μ œ - TRUNCATE : λ‚΄λΆ€μ˜ λ‚΄μš©μ„ μ‚­μ œ
Plain Text
볡사

DML (데이터 μ‘°μž‘μ–΄)

: ν…Œμ΄λΈ” λ‚΄μ˜ 데이터λ₯Ό 쑰회, μΆ”κ°€, μˆ˜μ •, μ‚­μ œν•˜λŠ” λͺ…λ Ήμ–΄ - SELECT : 데이터 쑰회 - INSERT : 데이터 μΆ”κ°€ - UPDATE : 데이터 μˆ˜μ • - DELETE : 데이터 μ‚­μ œ
Plain Text
볡사

DCL (데이터 μ œμ–΄μ–΄)

: 데이터에 λŒ€ν•œ μ‚¬μš© κΆŒν•œμ„ λΆ€μ—¬ν•˜κ±°λ‚˜ ν•΄μ œν•˜λŠ” λͺ…λ Ήμ–΄ - GRANT : κΆŒν•œ λΆ€μ—¬ - REVOKE : κΆŒν•œ ν•΄μ œ
Plain Text
볡사

TCL (νŠΈλžœμž­μ…˜ μ œμ–΄μ–΄)

: νŠΈλžœμž­μ…˜ λ‹¨μœ„λ‘œ 데이터 변경사항을 영ꡬ μ €μž₯ν•˜κ±°λ‚˜ λ˜λŒλ¦¬λŠ” λͺ…λ Ήμ–΄ - COMMIT : νŠΈλžœμž­μ…˜μ—μ„œ λ³€κ²½ 사항을 영ꡬ적으둜 μ €μž₯ν•˜λŠ” λͺ…λ Ή - ROLLBACK : νŠΈλžœμž­μ…˜μ—μ„œ λ³€κ²½ 사항을 μ·¨μ†Œν•˜κ³  이전 μƒνƒœλ‘œ λ˜λŒλ¦¬λŠ” λͺ…λ Ή
Plain Text
볡사

νŠΈλžœμž­μ…˜? (Transaction)

: DBMS μ—μ„œ λ°œμƒν•˜λŠ” ν•˜λ‚˜μ˜ 논리적 μž‘μ—… λ‹¨μœ„

νŠΈλžœμž­μ…˜μ˜ νŠΉμ§• - ACID

β€’
A
β—¦
μ›μžμ„± (Atomicity): ν•˜λ‚˜μ˜ νŠΈλžœμž­μ…˜μ€ λͺ¨λ“  연산이 μ™„μ „νžˆ μˆ˜ν–‰λ˜κ±°λ‚˜ μ•„λ¬΄λŸ° 연산도 μˆ˜ν–‰λ˜μ§€ μ•Šμ€ μƒνƒœλ‘œ μœ μ§€λ˜μ–΄μ•Ό 함을 μ˜λ―Έν•©λ‹ˆλ‹€. 즉, νŠΈλžœμž­μ…˜ λ‚΄μ˜ λͺ¨λ“  μž‘μ—…μ€ ν•¨κ»˜ μ‹€ν–‰λ˜κ±°λ‚˜ 아무것도 μ‹€ν–‰λ˜μ§€ μ•Šμ•„μ•Ό ν•©λ‹ˆλ‹€.
β€’
C
β—¦
일관성 (Consistency): νŠΈλžœμž­μ…˜ μ™„λ£Œ 후에 λ°μ΄ν„°λ² μ΄μŠ€λŠ” 미리 μ •μ˜λœ μΌκ΄€λœ μƒνƒœμ— μžˆμ–΄μ•Ό ν•©λ‹ˆλ‹€. νŠΈλžœμž­μ…˜ μž‘μ—…μ€ λ°μ΄ν„°λ² μ΄μŠ€μ˜ 일관성을 μœ μ§€ν•΄μ•Ό ν•©λ‹ˆλ‹€.
β€’
I
β—¦
격리성 (Isolation): λ™μ‹œμ— μ—¬λŸ¬ νŠΈλžœμž­μ…˜μ΄ 싀행될 λ•Œ, ν•œ νŠΈλžœμž­μ…˜μ˜ μž‘μ—…μ΄ λ‹€λ₯Έ νŠΈλžœμž­μ…˜μ— 영ν–₯을 λ―ΈμΉ˜μ§€ μ•Šλ„λ‘ κ²©λ¦¬λ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€. 각 νŠΈλžœμž­μ…˜μ€ λ‹€λ₯Έ νŠΈλžœμž­μ…˜μ˜ μž‘μ—…μ„ λͺ¨λ₯΄κ³  λ…λ¦½μ μœΌλ‘œ μ²˜λ¦¬λ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€.
β€’
D
β—¦
μ˜μ†μ„± (Durability): νŠΈλžœμž­μ…˜μ΄ μ„±κ³΅μ μœΌλ‘œ μ™„λ£Œλ˜λ©΄ κ·Έ κ²°κ³ΌλŠ” 영ꡬ적으둜 λ°μ΄ν„°λ² μ΄μŠ€μ— μ €μž₯λ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€. μ‹œμŠ€ν…œ μž₯μ•  λ˜λŠ” 비정상 μ’…λ£Œκ°€ λ°œμƒν•˜λ”λΌλ„ λ°μ΄ν„°μ˜ 지속성이 보μž₯λ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€.
μ΄λŸ¬ν•œ νŠΈλž™μž­μ…˜μ˜ νŠΉμ§•μœΌλ‘œ 인해, λ°μ΄ν„°λ² μ΄μŠ€μ˜ 무결성과 일관성을 보μž₯ν•  수 μžˆλ‹€.