JiYoung Dev πŸ–₯

[Oracle Database] λ°μ΄ν„°λ² μ΄μŠ€ κ°œλ… 작기 λ³Έλ¬Έ

full stack/database

[Oracle Database] λ°μ΄ν„°λ² μ΄μŠ€ κ°œλ… 작기

Shinjio 2023. 3. 19. 12:18

2023.03.15 μˆ˜μ—… λ‚΄μš© 

참고자료 : 였라클둜 λ°°μš°λŠ” λ°μ΄ν„°λ² μ΄μŠ€ μž…λ¬Έ

 

μˆ˜μ—… λͺ©μ 

λ°μ΄ν„°λ² μ΄μŠ€μ™€ κ΄€λ ¨λœ μš©μ–΄ 및 κ°œλ…μ„ μ„€λͺ…ν•œ ν›„ 였라클 λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό μ„€μΉ˜ν•˜κ³  였라클 λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό 더 νŽΈλ¦¬ν•˜κ²Œ μ‚¬μš©ν•  수 μžˆλŠ” 도ꡬ μ†Œκ°œ

 

πŸ”Ž λ°μ΄ν„°λ² μ΄μŠ€

πŸ“– 데이터와 λ°μ΄ν„°λ² μ΄μŠ€, DBMS

λ°μ΄ν„°λ² μ΄μŠ€λŠ” 데이터(data)와 베이슀(base)의 ν•©μ„±μ–΄

DBMSλŠ” Database Management System의 μ•½μžλ‘œ 'λ°μ΄ν„°λ² μ΄μŠ€ 관리 μ‹œμŠ€ν…œ'을 의미

 

βš™ 데이터 vs 정보

데이터

μ–΄λ–€ ν•„μš”μ— μ˜ν•΄ μˆ˜μ§‘ν–ˆμ§€λ§Œ 아직 νŠΉμ • λͺ©μ μ„ μœ„ν•΄ ν‰κ°€ν•˜κ±°λ‚˜ μ •μ œν•˜μ§€ μ•Šμ€ κ°’μ΄λ‚˜ 사싀 λ˜λŠ” 자료 자체

정보

μˆ˜μ§‘ν•œ 데이터λ₯Ό μ–΄λ– ν•œ λͺ©μ μ„ μœ„ν•΄ λΆ„μ„ν•˜κ±°λ‚˜ κ°€κ³΅ν•˜μ—¬ κ°€μΉ˜λ₯Ό μΆ”κ°€ν•˜κ±°λ‚˜ μƒˆλ‘œμš΄ 의미λ₯Ό μ΄λŒμ–΄ λ‚Ό 수 μžˆλŠ” κ²°κ³Ό

즉, μˆ˜μ§‘ν•œ 데이터λ₯Ό ν™œμš©ν•˜μ—¬ μƒˆλ‘œμš΄ κ°€μΉ˜, 의미λ₯Ό μ§€λ‹Œ 정보λ₯Ό λ„μΆœν•œλ‹€. 

 

효율적인 데이터 관리λ₯Ό μœ„ν•œ 쑰건

• 데이터λ₯Ό ν†΅ν•©ν•˜μ—¬ 관리

μΌκ΄€λœ λ°©λ²•μœΌλ‘œ 관리

• 데이터 λˆ„λ½ 및 쀑볡 제거

• μ—¬λŸ¬ μ‚¬μš©μž(μ‘μš© ν”„λ‘œκ·Έλž¨ 포함)κ°€ κ³΅λ™μœΌλ‘œ μ‹€μ‹œκ°„ μ‚¬μš© κ°€λŠ₯

 

βš™ λ°μ΄ν„°λ² μ΄μŠ€

효율적인 데이터 관리λ₯Ό μœ„ν•œ 쑰건을 λ§Œμ‘±ν•˜λ©΄μ„œ νŠΉμ • λͺ©μ μ„ μœ„ν•΄ μ—¬λŸ¬ μ‚¬λžŒμ΄ κ³΅μœ ν•˜μ—¬ μ‚¬μš©ν•  수 있으며, 효율적인 관리와 검색을 μœ„ν•΄ κ΅¬μ‘°ν™”ν•œ 데이터 집합

 

βš™ DBMS

효율적인 데이터 관리 쑰건을 λ§Œμ‘±ν•˜λ©° μ„œλΉ„μŠ€ 제곡의 νš¨μœ¨μ„±μ„ 높이기 μœ„ν•΄ λ“±μž₯

λ°μ΄ν„°λ² μ΄μŠ€μ˜ 데이터 μ‘°μž‘κ³Ό 관리λ₯Ό κ·ΉλŒ€ν™”ν•œ μ‹œμŠ€ν…œ μ†Œν”„νŠΈμ›¨μ–΄

 

λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό ν†΅ν•œ 데이터 κ΄€λ¦¬λž€, μ—¬λŸ¬ λͺ©μ μœΌλ‘œ μ‚¬μš©ν•  λ°μ΄ν„°μ˜ μ ‘κ·Ό, 관리 λ“±μ˜ 업무λ₯Ό DBMSκ°€ μ „λ‹΄ν•˜λŠ” 방식. λ‹€μ‹œ 말해 μ‘μš© ν”„λ‘œκ·Έλž¨μ΄ ν•„μš”ν•œ 데이터 μž‘μ—…μ„ DBMS에 μš”μ²­ν•˜λ©΄, DBMSλŠ” μžμ‹ μ΄ κ΄€λ¦¬ν•˜λŠ” λ°μ΄ν„°λ² μ΄μŠ€λ‘œ κ΄€λ ¨ μž‘μ—…μ„ μˆ˜ν–‰ν•˜κ³  결괏값을 제곡

 

μ–΄λ– ν•œ λͺ©μ μ„ μœ„ν•΄ μˆ˜μ§‘ν•œ 데이터가 μ‘΄μž¬ν•˜κ³ , 
μ΄λŸ¬ν•œ 데이터듀이 λͺ¨μ—¬ 검색 및 κ΄€λ¦¬ν•˜κΈ° μ‰½κ²Œ κ΅¬μ‘°ν™”ν•œ 것을 λ°μ΄ν„°λ² μ΄μŠ€λΌκ³  ν•˜λ©°,
λ°μ΄ν„°λ² μ΄μŠ€μ˜ 데이터 μ‘°μž‘κ³Ό 관리λ₯Ό κ·ΉλŒ€ν™”ν•œ μ‹œμŠ€ν…œ μ†Œν”„νŠΈμ›¨μ–΄λ₯Ό DBMS라고 함

 

πŸ“– 데이터 λͺ¨λΈ

데이터 λͺ¨λΈμ΄λž€ 컴퓨터에 데이터λ₯Ό μ €μž₯ν•˜λŠ” 방식을 μ •μ˜ν•΄ 놓은 κ°œλ… λͺ¨ν˜•

κ³„μΈ΅ν˜•, λ„€νŠΈμ›Œν¬ν˜•, κ΄€κ³„ν˜•, 객체 지ν–₯ν˜• 등이 있음

 

βš™ κ³„μΈ΅ν˜• 데이터 λͺ¨λΈ(hierarchical data model)

λ‚˜λ­‡κ°€μ§€ ν˜•νƒœμ˜ 트리(tree) ꡬ쑰λ₯Ό ν™œμš©ν•˜μ—¬ 데이터 관련성을 κ³„μΈ΅λ³„λ‘œ λ‚˜λˆ„μ–΄ λΆ€λͺ¨ μžμ‹ 같은 관계λ₯Ό μ •μ˜ν•˜κ³  데이터λ₯Ό 관리. 이 λͺ¨λΈμ—μ„œ 데이터가 μ €μž₯된 νŒŒμΌμ€ λ‹€μŒ κ·Έλ¦Όκ³Ό 같이 μƒμœ„ κ°œλ…μ— ν•˜μœ„ κ°œλ…μ΄ ν¬ν•¨λ˜μ–΄ μžˆλŠ” νŠΉμ§•μ΄ 있음. 기본적으둜 ν•˜λ‚˜μ˜ λΆ€λͺ¨ κ°œμ²΄κ°€ μ—¬λŸ¬ μžμ‹μ„ κ°€μ§ˆ 수 μžˆλŠ” λ°˜λ©΄μ— μžμ‹ κ°œμ²΄λŠ” μ—¬λŸ¬ λΆ€λͺ¨λ₯Ό κ°€μ§ˆ 수 μ—†μŒ

 

βš™ λ„€νŠΈμ›Œν¬ν˜• 데이터 λͺ¨λΈ(network data model)

κ·Έλž˜ν”„(graph) ꡬ쑰λ₯Ό 기반으둜 ν•˜μ—¬ 개체 κ°„ 관계λ₯Ό κ·Έλž˜ν”„ ꡬ쑰둜 연결함. λ”°λΌμ„œ μžμ‹ κ°œμ²΄κ°€ μ—¬λŸ¬ λΆ€λͺ¨ 개체λ₯Ό κ°€μ§ˆ 수 μžˆλ‹€λŠ” μ μ—μ„œ κ³„μΈ΅ν˜• 데이터 λͺ¨λΈκ³Ό 차이가 있음.

 

βš™ κ°μ²΄ 지ν–₯ν˜• 데이터 λͺ¨λΈ(object-oriented data model)

1980λ…„λŒ€ λ“±μž₯ν•œ λͺ¨λΈλ‘œ 객체 지ν–₯ ν”„λ‘œκ·Έλž˜λ°μ—μ„œ μ‚¬μš©ν•˜λŠ” 객체 κ°œλ…μ„ 기반으둜 ν•œ 데이터 λͺ¨λΈ.

객체 지ν–₯ ν”„λ‘œκ·Έλž˜λ°μ²˜λŸΌ 데이터λ₯Ό λ…λ¦½λœ 객체둜 κ΅¬μ„±ν•˜κ³  κ΄€λ¦¬ν•˜λ©° 상속, μ˜€λ²„λΌμ΄λ“œ λ“± 객체 지ν–₯ ν”„λ‘œκ·Έλž˜λ°μ—μ„œ μ‚¬μš©λ˜λŠ” κ°•λ ₯ν•œ κΈ°λŠ₯을 ν™œμš©ν•  수 있음.

κ·ΈλŸ¬λ‚˜ μ΄λŸ¬ν•œ 객체 지ν–₯ν˜• λͺ¨λΈ κ°œλ…μ„ μ™„μ „νžˆ λ°μ΄ν„°λ² μ΄μŠ€μ— μ μš©ν•˜λŠ” 것은 쉽지 μ•ŠκΈ° λ•Œλ¬Έμ— 이λ₯Ό μ μš©ν•œ μƒμš© DBMSλŠ” λ§Žμ§€ μ•ŠμŒ. λ‹€λ§Œ, 였라클 λ°μ΄ν„°λ² μ΄μŠ€μ™€ 같은 μ—¬λŸ¬ DBMS μ œν’ˆκ΅°μ΄ κ΄€κ³„ν˜• 데이터 λͺ¨λΈμ„ λ°”νƒ•μœΌλ‘œ 객체 κ°œλ…μ„ λ„μž…ν•˜μ—¬ '객체 κ΄€κ³„ν˜•(object-ralational data model) DBMS'둜 μ˜μ—­μ„ ν™•μž₯ν•˜κ³  있음

 

βš™ κ΄€κ³„ν˜• 데이터 λͺ¨λΈ(relational data model)

ν˜„λŒ€μ— κ°€μž₯ 많이 μ‚¬μš©ν•˜λŠ” λͺ¨λΈλ‘œ 데이터 κ°„ 관계(relation)에 μ΄ˆμ μ„ λ‘ .

각 λ°μ΄ν„°μ˜ 독립 νŠΉμ„±λ§Œμ„ κ·œμ •ν•˜μ—¬ 데이터 λ¬ΆμŒμ„ λ‚˜λˆ„κ³  쀑볡이 λ°œμƒν•  수 μžˆλŠ” λ°μ΄ν„°λŠ” λ³„κ°œμ˜ λ¦΄λ ˆμ΄μ…˜(relation)으둜 μ •μ˜ν•œ ν›„ μ—°κ²°

 

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

개체(entity) 

정보 μ €μž₯을 μœ„ν•œ 집합 κ°œλ…. 업무에 ν•„μš”ν•˜κ³  μœ μš©ν•œ 정보λ₯Ό κ΄€λ¦¬ν•˜κΈ° μœ„ν•œ 집합적인 것.

λ°μ΄ν„°λ² μ΄μŠ€μ—μ„œ λ°μ΄ν„°ν™”ν•˜λ €λŠ” 사물, κ°œλ…μ˜ 정보 λ‹¨μœ„. κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€μ˜ ν…Œμ΄λΈ”(table) κ°œλ…κ³Ό λŒ€μ‘λ˜λ©° ν…Œμ΄λΈ”μ€ λ¦΄λ ˆμ΄μ…˜(relation)으둜 ν‘œκΈ°ν•˜κΈ°λ„ 함

μ—”ν„°ν‹° μ•ˆμ—λŠ” 2개 μ΄μƒμ˜ μΈμŠ€ν„΄μŠ€, ν•˜λ‚˜ μ΄μƒμ˜ 속성이 μžˆμ–΄μ•Ό ν•˜λ©°, ν•˜λ‚˜ μ΄μƒμ˜ 관계λ₯Ό 가짐. 

속성(attribute) 

μ—”ν„°ν‹°μ˜ 곡톡적인 νŠΉμ§•μ„ ν‘œν˜„ν•˜λŠ” κ²ƒμœΌλ‘œ 이후 μš°λ¦¬κ°€ μ–»κ³ μž ν•˜λŠ” 정보가 됨. ν•˜λ‚˜μ˜ μ†μ„±μ—λŠ” ν•˜λ‚˜μ˜ 속성 값을 가짐.

개체λ₯Ό κ΅¬μ„±ν•˜λŠ” λ°μ΄ν„°μ˜ κ°€μž₯ μž‘μ€ 논리적 λ‹¨μœ„. λ°μ΄ν„°μ˜ μ’…λ₯˜, νŠΉμ„±, μƒνƒœ 등을 μ •μ˜ν•¨. κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€μ˜ μ—΄(column) κ°œλ…κ³Ό λŒ€μ‘ν•¨

관계(relationship) 

κ°œμ²΄μ™€ 개체 λ˜λŠ” 속성 κ°„μ˜ 연관성을 λ‚˜νƒ€λ‚΄κΈ° μœ„ν•΄ μ‚¬μš©. κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€μ—μ„œλŠ” ν…Œμ΄λΈ” κ°„μ˜ 관계λ₯Ό μ™Έλž˜ν‚€(foreign key) λ“±μœΌλ‘œ κ΅¬ν˜„ν•˜μ—¬ μ‚¬μš©

μΈμŠ€ν„΄μŠ€(instance)

μ—”ν„°ν‹° μ•ˆμ˜ κ°œλ³„μ μΈ 것듀. μ—”ν„°ν‹° μ•ˆμ— μžˆλŠ” 각각의 λŒ€μƒ

 

πŸ“– λ°μ΄ν„° λͺ¨λΈλ§

ν˜„μ‹€ λŒ€μƒμ„ λ°μ΄ν„°λ² μ΄μŠ€λ‘œ μ €μž₯ν•  수 μžˆλ„λ‘ 섀계 및 ꡬ좕을 ν•˜λŠ” κ³Όμ •

ν˜„μ‹€ λŒ€μƒμ˜ 객체 ➑ κ°œλ…μ  데이터 λͺ¨λΈλ§ (λ‹¨μˆœ 섀계) ➑ 논리적 데이터 λͺ¨λΈλ§ (상세 섀계) ➑ 물리적 데이터 λͺ¨λΈλ§ (μ‹€μ œ 곡사) ➑ λ°μ΄ν„°λ² μ΄μŠ€λ‘œ ν‘œν˜„ μ™„λ£Œ 

 

βš™ κ°œλ…μ  데이터 λͺ¨λΈλ§

λ³΅μž‘ν•œ ν˜„μ‹€ μ„Έκ³„μ˜ λŒ€μƒμ„ λ‹¨μˆœν™”, μΆ”μž₯ν™”, λͺ…ν™•ν™” ν•˜λŠ” μž‘μ—…

엔터티와 속성을 λ„μΆœν•˜κ³  μ—”ν„°ν‹° κ°„μ˜ 관계λ₯Ό μ„€μ •ν•˜μ—¬ ERD둜 κ·Έλ €λ‚Έλ‹€. 

 

βš™ ERD

μ—”ν„°ν‹°(Entity)와 μ—”ν„°ν‹° κ°„μ˜ 관계(Relationship)λ₯Ό λ°œκ²¬ν•˜κ³ , 이λ₯Ό κ·Έλ¦Ό(Diagram)으둜 ν‘œν˜„ν•˜λŠ” ν–‰μœ„

이런 ꡬ쑰화 μž‘μ—…μ„ 톡해 μ„œλ‘œ μ˜μ‚¬μ†Œν†΅μ΄ 더 μ‰¬μ›Œμ§

 

1. μ—”ν„°ν‹°λ₯Ό κ·Έλ¦°λ‹€. (속성은 μ œμ™Έ)
2. μ—”ν„°ν‹°λ₯Ό 적절히 λ°°μΉ˜ν•œλ‹€. 
3. 관계λ₯Ό μ„€μ •ν•œλ‹€. (μ„œλ‘œ 관계가 μžˆλŠ” 엔터티끼리 μ„ μœΌλ‘œ 이어쀀닀)
4. 관계λͺ…을 κΈ°μˆ ν•œλ‹€. (μƒλž΅ κ°€λŠ₯)
5. κ΄€κ³„μ˜ 참여도(Cardinality)λ₯Ό κΈ°μˆ ν•œλ‹€. 
   - μ°Έμ—¬λ„λž€ μ—”ν„°ν‹° μ•ˆμ˜ μΈμŠ€ν„΄μŠ€λ“€μ΄ μ–Όλ§ˆλ‚˜ μ°Έμ—¬ν•˜λŠ”μ§€λ₯Ό μ˜λ―Έν•¨. 1:1, 1:N, N:N 관계 등이 있으며, Nμͺ½μ—λŠ” 까치발(>)둜 ν‘œμ‹œν•œλ‹€. 
6. κ΄€κ³„μ˜ ν•„μˆ˜μ—¬λΆ€(Optionality)λ₯Ό κΈ°μˆ ν•œλ‹€. 
  - ν•„μˆ˜μ—¬λΆ€λž€ μ—”ν„°ν‹° μ•ˆμ˜ μΈμŠ€ν„΄μŠ€λ“€μ΄ λ°˜λ“œμ‹œ μ°Έμ—¬ν•˜λŠ”μ§€λ₯Ό μ˜λ―Έν•œλ‹€. μ΅œμ†Œ μ°Έμ—¬λŠ” (I)λ₯Ό ν‘œμ‹œν•˜κ³ , 선택 μ°Έμ—¬λŠ” (0)으둜 ν‘œμ‹œν•œλ‹€. 

 

βš™ λ…Όλ¦¬μ  데이터 λͺ¨λΈλ§

ERDλ₯Ό κΈ°μ€€μœΌλ‘œ 보닀 μƒμ„Έν•œ 섀계도λ₯Ό μž‘μ„±ν•˜λŠ” 것

속성 μž…λ ₯, μ‹λ³„μž 선택, μ •κ·œν™”, 관계 μ„€μ • 등을 섀정함

논리적 λͺ¨λΈλ§μ€ ν”„λ‘œμ νŠΈμ—μ„œ λ°μ΄ν„°λ² μ΄μŠ€κ°€ μ–΄λ–»κ²Œ λ§Œλ“€μ–΄μ Έ μžˆλŠ”μ§€ 참고용으둜 μ“°μž„

 

1. 속성을 μ•„λž˜λ‘œ λͺ¨λ‘ μž…λ ₯ν•œλ‹€. 
2. 각 μ—”ν„°ν‹°μ—μ„œ μ‹λ³„μž(PRIMARY KEY)λ₯Ό μ„ νƒν•œλ‹€. 
   - μ‹λ³„μžλž€, μ—”ν„°ν‹° λ‚΄μ—μ„œ νŠΉμ •ν•œ μΈμŠ€ν„΄μŠ€λ₯Ό 식별할 수 μžˆλŠ” 속성 집합
3. μ •κ·œν™”λ₯Ό μ‹€μ‹œν•œλ‹€. 
  - μ •κ·œν™” : μ€‘λ³΅λ˜λŠ” 데이터가 μ €μž₯λ˜μ§€ μ•Šλ„λ‘ μ—”ν„°ν‹°λ₯Ό μͺΌκ°œλŠ” ν™œλ™
4. 관계섀정(FOREIGN KEY)λ₯Ό ν•œλ‹€. 
  - μ •κ·œν™”λ‘œ μͺΌκ°œμ§„ λŒ€μƒλ“€μ„ μ—°κ²°ν•˜κΈ° μœ„ν•΄ μ‹λ³„μžλ₯Ό λΉŒλ €μ˜¨λ‹€. 
  - μ‹λ³„μžλ‘œ ꡬ뢄이 μ•ˆλ˜λŠ” κ²½μš°μ—λŠ” 속성 μΆ”κ°€ 

 

βš™ λ¬Όλ¦¬μ  데이터 λͺ¨λΈλ§

μƒμ„Έν•˜κ²Œ μ„€κ³„λœ 논리적 λͺ¨λΈλ§ κ²°κ³Όλ₯Ό 가지고 μ‹€μ œλ‘œ DB ꡬ좕

 

πŸ“– κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€μ™€ SQL

βš™ κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€(RDBMS, Relational Database Management System)

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

 

βš™ SQL(Structured Query Language)

RDBMSμ—μ„œ 데이터λ₯Ό 닀루고 κ΄€λ¦¬ν•˜λŠ” 데 μ‚¬μš©ν•˜λŠ” λ°μ΄ν„°λ² μ΄μŠ€ 질의 μ–Έμ–΄

즉, μš°λ¦¬λŠ” SQL을 톡해(μ •ν™•νžˆλŠ” SQL을 μ‚¬μš©ν•΄μ•Όλ§Œ) λ°μ΄ν„°λ² μ΄μŠ€μ—μ„œ μ—¬λŸ¬ 데이터 κ΄€λ ¨ μž‘μ—…μ„ μˆ˜ν–‰ν•  수 있음

 

SQL은 λͺ©μ μ— 따라 μ•„λž˜μ™€ 같이 λ‚˜λ‰¨

 

μ’…λ₯˜ μ„€λͺ…
DQL(Data Query Language) RDBMS에 μ €μž₯된 데이터λ₯Ό μ›ν•˜λŠ” λ°©μ‹μœΌλ‘œ μ‘°νšŒν•˜λŠ” λͺ…λ Ήμ–΄
DML(Data Manipulation Language) RDBMS λ‚΄ ν…Œμ΄λΈ”μ˜ 데이터λ₯Ό μ €μž₯, μˆ˜μ •, μ‚­μ œν•˜λŠ” λͺ…λ Ήμ–΄
DDL(Data Definition Language) RDMBS λ‚΄ 데이터 관리λ₯Ό μœ„ν•΄ ν…Œμ΄λΈ”μ„ ν¬ν•¨ν•œ μ—¬λŸ¬ 객체λ₯Ό 생성, μˆ˜μ •, μ‚­μ œν•˜λŠ” λͺ…λ Ήμ–΄
TCL(Transaction Control Language) νŠΈλžœμž­μ…˜ λ°μ΄ν„°μ˜ 영ꡬ μ €μž₯, μ·¨μ†Œ λ“±κ³Ό κ΄€λ ¨λœ λͺ…λ Ήμ–΄
DCL(Data Control Language) 데이터 μ‚¬μš© κΆŒν•œκ³Ό κ΄€λ ¨λœ λͺ…λ Ήμ–΄

 

데이터와 μ •λ³΄μ˜ 차이
λ°μ΄ν„°λž€ μ–΄λ–€ λͺ©μ μ„ μœ„ν•΄ μˆ˜μ§‘ν•œ κ°€κ³΅λ˜μ§€ μ•Šμ€ 사싀 λ˜λŠ” 자료 자체
μ •λ³΄λž€ 데이터λ₯Ό μ΄μš©ν•˜μ—¬ νŠΉμ •ν•œ λͺ©μ , κ°€μΉ˜λ₯Ό μ–»κΈ° μœ„ν•΄ κ°€κ³΅ν•˜κ±°λ‚˜ λΆ„μ„ν•œ κ²°κ³Ό

λ°μ΄ν„°λ² μ΄μŠ€μ™€ DBMS κ°œλ…
λ°μ΄ν„°λ² μ΄μŠ€λž€ 효율적인 데이터 관리 방법을 λ§Œμ‘±ν•˜λ©° μ—¬λŸ¬ μ‚¬λžŒμ΄ κ³΅μœ ν•  수 있고 효율적인 데이터 검색과 관리λ₯Ό μœ„ν•΄ κ΅¬μ‘°ν™”ν•œ λ°μ΄ν„°μ˜ 집합
DBMSλž€ λ°μ΄ν„°λ² μ΄μŠ€μ˜ μ‘°μž‘κ³Ό 관리λ₯Ό κ·ΉλŒ€ν™”ν•œ μ‹œμŠ€ν…œ μ†Œν”„νŠΈμ›¨μ–΄

κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€ 의미
데이터 κ°„ 관계에 μ΄ˆμ μ„ λ‘” κ΄€κ³„ν˜• 데이터 λͺ¨λΈ κ°œλ…μ„ λ°”νƒ•μœΌλ‘œ 데이터λ₯Ό μ €μž₯ν•˜κ³  κ΄€λ¦¬ν•˜λŠ” λ°μ΄ν„°λ² μ΄μŠ€

 

πŸ”Ž κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€μ™€ 였라클 λ°μ΄ν„°λ² μ΄μŠ€

πŸ“– κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€μ˜ ꡬ성 μš”μ†Œ

βš™ ν…Œμ΄λΈ”(table)

κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€λŠ” 기본적으둜 데이터λ₯Ό 2차원 ν‘œ ν˜•νƒœλ‘œ μ €μž₯ν•˜κ³  관리

ν‘œ ν˜•νƒœμ˜ 데이터 μ €μž₯ 곡간을 ν…Œμ΄λΈ”μ΄λΌκ³  함

ν…Œμ΄λΈ”μ€ 2차원 ν˜•νƒœμ΄λ―€λ‘œ κ°€λ‘œμ€„κ³Ό μ„Έλ‘œμ€„λ‘œ κ΅¬μ„±λ˜λŠ”λ°, κ°€λ‘œμ€„μ„ ν–‰(row), μ„Έλ‘œμ€„μ„ μ—΄(column)이라 함

 

ν–‰

- μ €μž₯ν•˜λ €λŠ” ν•˜λ‚˜μ˜ 개체λ₯Ό κ΅¬μ„±ν•˜λŠ” μ—¬λŸ¬ 값을 κ°€λ‘œλ‘œ λŠ˜μ–΄λœ¨λ¦° ν˜•νƒœ

μ—΄

- μ €μž₯ν•˜λ €λŠ” 데이터λ₯Ό λŒ€ν‘œν•˜λŠ” 이름과 곡톡 νŠΉμ„±

- μ €μž₯ μ •λ³΄μ˜ μ’…λ₯˜(μžλ£Œν˜•)κ³Ό μ €μž₯ κ°€λŠ₯ν•œ κ°’μ˜ μ΅œλŒ€ 길이 그리고 κ°’μ˜ 쀑볡을 ν—ˆμš©ν•˜μ§€ μ•ŠλŠ” λ“±μ˜ μ €μž₯ 쑰건과 λ²”μœ„λ₯Ό 지정할 수 있음

 

β€» μ—¬λŸ¬ ν…Œμ΄λΈ”μ˜ ꡬ성과 관계λ₯Ό 잘 κ·œμ •ν•˜κ³  κ΄€λ¦¬ν•˜λŠ” 것이 κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€μ—μ„œ 데이터λ₯Ό κ΄€λ¦¬ν•˜λŠ” 핡심

 

βš™ νŠΉλ³„ν•œ 의미λ₯Ό μ§€λ‹Œ μ—΄, ν‚€(key)

ν‚€λŠ” ν•˜λ‚˜μ˜ ν…Œμ΄λΈ”μ„ κ΅¬μ„±ν•˜λŠ” μ—¬λŸ¬ μ—΄ μ€‘μ—μ„œ νŠΉλ³„ν•œ 의미λ₯Ό μ§€λ‹Œ ν•˜λ‚˜ λ˜λŠ” μ—¬λŸ¬ μ—΄μ˜ 쑰합을 μ˜λ―Έν•¨.

κΈ°λ³Έν‚€(PK, Primary Key)

μ—¬λŸ¬ ν‚€ 쀑 κ°€μž₯ μ€‘μš”ν•œ ν‚€λ‘œμ„œ ν•œ ν…Œμ΄λΈ” λ‚΄μ—μ„œ μ€‘λ³΅λ˜μ§€ μ•ŠλŠ” κ°’λ§Œ κ°€μ§ˆ 수 μžˆλŠ” ν‚€

 

κΈ°λ³Έν‚€μ˜ 속성
1. ν…Œμ΄λΈ”μ— μ €μž₯된 행을 식별할 수 μžˆλŠ” μœ μΌν•œ 값이어야 함
2. κ°’μ˜ 쀑볡이 μ—†μ–΄μ•Ό 함
3. NULL 값을 κ°€μ§ˆ 수 μ—†μŒ

 

보쑰킀

λ³΄μ‘°ν‚€λŠ” λŒ€μ²΄ν‚€(alternate key)라고도 λΆ€λ₯΄λ©° 후보킀(candidate key)에 속해 μžˆλŠ” ν‚€

그리고 후보킀 μ€‘μ—μ„œ κΈ°λ³Έν‚€λ‘œ μ§€μ •λ˜μ§€ μ•Šμ€ 열을 말함

β€» ν›„λ³΄ν‚€λž€ κΈ°λ³Έν‚€κ°€ 될 수 μžˆλŠ” λͺ¨λ“  ν‚€λ₯Ό μ˜λ―Έν•¨. 즉, κΈ°λ³Έν‚€ μ—­μ‹œ 후보킀에 속함. 이 후보킀 쀑 κΈ°λ³Έν‚€λ‘œ μ§€μ •λ˜μ§€ μ•Šμ€ ν‚€λ₯Ό 보쑰킀 λ˜λŠ” λŒ€μ²΄ν‚€λΌκ³  함

 

μ™Έλž˜ν‚€(FK, Foreign Key) 

νŠΉμ • ν…Œμ΄λΈ”μ— ν¬ν•¨λ˜μ–΄ μžˆμœΌλ©΄μ„œ λ‹€λ₯Έ ν…Œμ΄λΈ”μ˜ κΈ°λ³Έν‚€λ‘œ μ§€μ •λœ ν‚€

쀑볡 데이터 λ°œμƒμ„ λ°©μ§€ν•˜κΈ° μœ„ν•΄ μ‚¬μš©

 

볡합킀(composite key)

μ—¬λŸ¬ 열을 μ‘°ν•©ν•˜μ—¬ κΈ°λ³Έν‚€ 역할을 ν•  수 있게 λ§Œλ“  ν‚€

 

πŸ“– μ˜€λΌν΄ λ°μ΄ν„°λ² μ΄μŠ€

βš™ μžλ£Œν˜•

μ–΄λ–€ ν˜•νƒœμ˜ 데이터인지λ₯Ό 말할 λ•Œ

μžλ£Œν˜•μ€ ν…Œμ΄λΈ”μ„ κ΅¬μ„±ν•˜λŠ” 열에 지정함

ν•˜λ‚˜μ˜ μžλ£Œν˜•μ— 맞좰 ν•œ μ’…λ₯˜μ˜ 데이터λ₯Ό μ €μž₯ν•  수 μžˆλŠ” μžλ£Œν˜•μ„ 슀칼라(scalar)라고 함

μžλ£Œν˜•μ—λŠ” μ—¬λŸ¬ μ’…λ₯˜κ°€ 있으며 ν•œ λ²ˆμ— μ—¬λŸ¬ 데이터λ₯Ό μ €μž₯ν•  수 μžˆλŠ” VARRAY, NESTED TABLE 같은 μ»¬λ ‰μ…˜ ν˜•λ„ μžˆμœΌλ‚˜, κ°€μž₯ 많이 μ‚¬μš©ν•˜λŠ” μžλ£Œν˜•μ€ VARCHAR2, DATE, NUMBERμž„. 

 

μžλ£Œν˜• μ„€λͺ…
VARCHAR2(길이) 4000byte만큼의 κ°€λ³€ 길이 λ¬Έμžμ—΄ 데이터 μ €μž₯(μ΅œμ†Œ 크기 1byte)
NUMBER(전체 자릿수, μ†Œμˆ˜μ  μ΄ν•˜ 자릿수) ±38자릿수의 숫자 μ €μž₯
DATE λ‚ μ§œ ν˜•μ‹ μ €μž₯. μ„ΈκΈ°, μ—°, μ›”, 일, μ‹œ, λΆ„, 초 μ €μž₯ κ°€λŠ₯
CHAR(길이) 4000byte만큼의 κ³ μ • 길이 λ¬Έμžμ—΄ 데이터 μ €μž₯(μ΅œμ†Œ 크기 1byte)
NVARCHAR2(길이) 4000byte만큼의 κ°€λ³€ 길이 ꡭ가별 문자 μ„ΈνŠΈ 데이터 μ €μž₯(μ΅œμ†Œ 크기 1byte)
BLOB μ΅œλŒ€ 크기 4GB의 λŒ€μš©λŸ‰ 이진 데이터 μ €μž₯
CLOB μ΅œλŒ€ 크기 4GB λŒ€μš©λŸ‰ ν…μŠ€νŠΈ 데이터 μ €μž₯
BFILE μ΅œλŒ€ 크기 4GB λŒ€μš©λŸ‰ 이진 데이터 파일 μ €μž₯

 

βš™ κ°μ²΄

κ°μ²΄λŠ” 였라클 λ°μ΄ν„°λ² μ΄μŠ€ λ‚΄μ—μ„œ 데이터λ₯Ό μ €μž₯ν•˜κ³  κ΄€λ¦¬ν•˜κΈ° μœ„ν•œ 논리 ꡬ쑰λ₯Ό 가진 ꡬ성 μš”μ†Œ

객체 μ„€λͺ…
ν…Œμ΄λΈ”(table) 데이터λ₯Ό μ €μž₯ν•˜λŠ” μž₯μ†Œ
인덱슀(index) ν…Œμ΄λΈ”μ˜ 검색 νš¨μœ¨μ„ 높이기 μœ„ν•΄ μ‚¬μš©
λ·°(view) ν•˜λ‚˜ λ˜λŠ” μ—¬λŸ¬ 개의 μ„ λ³„λœ 데이터λ₯Ό λ…Όλ¦¬μ μœΌλ‘œ μ—°κ²°ν•˜μ—¬ ν•˜λ‚˜μ˜ ν…Œμ΄λΈ”μ²˜λŸΌ μ‚¬μš©ν•˜κ²Œ ν•΄ 쀌
μ‹œν€€μŠ€(sequence) 일련 번호λ₯Ό 생성
μ‹œλ…Έλ‹˜(synonym) 였라클 객체의 별칭을 지정
ν”„λ‘œμ‹œμ €(procedure) ν”„λ‘œκ·Έλž˜λ° μ—°μ‚° 및 κΈ°λŠ₯ μˆ˜ν–‰μ΄ κ°€λŠ₯함(λ°˜ν™˜κ°’ μ—†μŒ)
ν•¨μˆ˜(function) ν”„λ‘œκ·Έλž˜λ° μ—°μ‚° 및 κΈ°λŠ₯ μˆ˜ν–‰μ΄ κ°€λŠ₯함(λ°˜ν™˜κ°’ 있음)
νŒ¨ν‚€μ§€(package) κ΄€λ ¨ μžˆλŠ” ν”„λ‘œμ‹œμ €μ™€ ν•¨μˆ˜λ₯Ό 보관
트리거(trigger) 데이터 κ΄€λ ¨ μž‘μ—…μ˜ μ—°κ²° 및 방지 κ΄€λ ¨ κΈ°λŠ₯을 제곡

 

βš™ PL/SQL

였라클 λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό ν¬ν•¨ν•œ μ—¬λŸ¬ κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€μ—μ„œ 데이터λ₯Ό κ΄€λ¦¬ν•˜κΈ° μœ„ν•΄ λ³΅μž‘ν•œ κΈ°λŠ₯이 ν•„μš”ν•  λ•Œ κΈ°μ‘΄ SQL만으둜 이λ₯Ό κ΅¬ν˜„ν•˜λŠ” 것은 λ‹€μ†Œ ν•œκ³„κ°€ 있음. λ”°λΌμ„œ 였라클 λ°μ΄ν„°λ² μ΄μŠ€λŠ” 데이터 관리λ₯Ό μœ„ν•΄ λ³„λ„μ˜ ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄λ₯Ό μ œκ³΅ν•˜λŠ”λ° 이λ₯Ό PL/SQL이라고 함. 보톡 였라클 λ°μ΄ν„°λ² μ΄μŠ€ ν”„λ‘œκ·Έλž˜λ°μ΄λΌκ³  ν•˜λ©΄ SQLλ¬Έκ³Ό PL/SQL을 μ‚¬μš©ν•˜μ—¬ ν”„λ‘œκ·Έλž¨μ„ μ œμž‘ν•˜λŠ” 것을 의미. PL/SQL을 μ‚¬μš©ν•˜λ©΄ λ³€μˆ˜, 쑰건문, 반볡문 λ“± ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄μ—μ„œ μ œκ³΅ν•˜λŠ” μš”μ†Œλ₯Ό μ‚¬μš©ν•˜μ—¬ 데이터λ₯Ό 관리할 수 있음

 

ν…Œμ΄λΈ”κ³Ό ν–‰, μ—΄μ˜ 의미
ν…Œμ΄λΈ” : 2차원 ν‘œ ν˜•νƒœμ˜ 데이터 μ €μž₯ 곡간
ν–‰ : ν…Œμ΄λΈ”μ—μ„œ ν•˜λ‚˜μ˜ 객체λ₯Ό κ΅¬μ„±ν•˜λŠ” μ—¬λŸ¬ 값을 κ°€λ‘œλ‘œ λŠ˜μ–΄λœ¨λ¦° ν˜•νƒœ
μ—΄ : μ €μž₯ν•˜λ €λŠ” 데이터λ₯Ό λŒ€ν‘œν•˜λŠ” 이름과 곡톡 νŠΉμ„±

κΈ°λ³Έν‚€, μ™Έλž˜ν‚€μ˜ 의미
ν‚€ : ν•˜λ‚˜μ˜ ν…Œμ΄λΈ”μ„ κ΅¬μ„±ν•˜λŠ” μ—¬λŸ¬ μ—΄ μ€‘μ—μ„œ νŠΉλ³„ν•œ 의미λ₯Ό μ§€λ‹Œ ν•˜λ‚˜ λ˜λŠ” μ—¬λŸ¬ μ—΄μ˜ μ‘°ν•©
κΈ°λ³Έν‚€ : ν…Œμ΄λΈ”μ— μ €μž₯된 행을 식별할 수 μžˆλŠ” μœ μΌν•œ κ°’(μ€‘λ³΅λ˜λŠ” κ°’κ³Ό NULL값을 κ°€μ§ˆ 수 μ—†μŒ)
μ™Έλž˜ν‚€ : νŠΉμ • ν…Œμ΄λΈ”μ— ν¬ν•¨λ˜λ©΄μ„œ λ‹€λ₯Έ ν…Œμ΄λΈ”μ˜ κΈ°λ³Έν‚€λ‘œ μ§€μ •λœ ν‚€

VARCHAR2, NUMBER, DATE μžλ£Œν˜• 읡히기
VARCHAR2 : 4000byte μ΄ν•˜μ˜ λ¬Έμžμ—΄
NUMBER : ±38자릿수의 숫자 μ €μž₯
DATE : λ‚ μ§œ