λ°μ΄ν„°λ² μ΄μŠ€

λ°μ΄ν„°λ² μ΄μŠ€3

래리래리 2022. 6. 25. 15:19

#관계 데이터 λͺ¨λΈ

-관계 데이터 λͺ¨λΈ

λ™μΌν•œ ꡬ쑰(λ¦΄λ ˆμ΄μ…˜)의 κ΄€μ μ—μ„œ λͺ¨λ“  데이터λ₯Ό λ…Όλ¦¬μ μœΌλ‘œ ꡬ성

λ ˆμ½”λ“œλ“€μ˜ μ–΄λ– ν•œ μˆœμ„œμ™€λ„ λ¬΄κ΄€ν•˜κ²Œ μž‘μ„±

μ‚¬μš©μžλŠ” μ›ν•˜λŠ” 데이터(What)만 λͺ…μ‹œν•˜κ³  μ–΄λ–»κ²Œ 이 데이터λ₯Ό 찾을 것인가(How)λŠ” λͺ…μ‹œν•  ν•„μš” μ—†μŒ

λ§ν¬λ‚˜ 포인터λ₯Ό μ‚¬μš©ν•˜μ§€ μ•ŠλŠ”λ‹€

 

-μš©μ–΄

1.λ¦΄λ ˆμ΄μ…˜ : 2μ°¨μ›μ˜ ν…Œμ΄λΈ”

2.λ ˆμ½”λ“œ : λ¦΄λ ˆμ΄μ…˜μ˜ 각 ν–‰

3.νˆ¬ν”Œ : λ ˆμ½”λ“œλ₯Ό 쒀더 κ³΅μ‹μ μœΌλ‘œ λΆ€λ₯΄λŠ” μš©μ–΄

4.μ• νŠΈλ¦¬λ·°νŠΈ : λ¦΄λ ˆμ΄μ…˜μ—μ„œ 이름을 κ°€μ§„ ν•˜λ‚˜μ˜ μ—΄ 

 

-도메인 domain

ν•œ 속성에 λ‚˜νƒ€λ‚  수 μžˆλŠ” κ°’λ“€μ˜ μ§‘ν•©

각 μ†μ„±μ˜ λ„λ©”μΈμ˜ 값듀은 μ›μžκ°’(μœ μΌν•œ κ°’)

λ™μΌν•œ 도메인이 μ—¬λŸ¬ 속성에 μ‚¬μš©λ  수 μžˆλ‹€

볡합 μ†μ„±μ΄λ‚˜ λ‹€μΉ˜ 속성은 ν—ˆμš©λ˜μ§€ μ•ŠλŠ”λ‹€

 

-차수 degree

ν•œ λ¦΄λ ˆμ΄μ…˜μ— λ“€μ–΄μžˆλŠ” μ†μ„±μ˜ 수

μœ νš¨ν•œ λ¦΄λ ˆμ΄μ…˜μ˜ μ΅œμ†Œ μ°¨μˆ˜λŠ” 1

λ¦΄λ ˆμ΄μ…˜μ˜ μ°¨μˆ˜λŠ” 자주 λ°”λ€Œμ§€ μ•ŠλŠ”λ‹€(μŠ€ν‚€λ§ˆ)

 

-카디날리티 cardinality

μœ νš¨ν•œ λ¦΄λ ˆμ΄μ…˜μ€ 카디날리티 0을 κ°€μ§ˆ 수 μžˆλ‹€. (즉, νŠœν”Œμ„ ν•˜λ‚˜λ„ κ°–μ§€ μ•ŠλŠ” λ¦΄λ ˆμ΄μ…˜μ΄ κ°€λŠ₯ν•˜λ‹€)

λ¦΄λ ˆμ΄μ…˜μ˜ μΉ΄λ””λ‚ λ¦¬ν‹°λŠ” μ‹œκ°„μ΄ 지남에 따라 계속 λ³€ν•œλ‹€.

 

-λ¦΄λ ˆμ΄μ…˜ μŠ€ν‚€λ§ˆ relation schema

λ¦΄λ ˆμ΄μ…˜μ˜ 이름과 λ¦΄λ ˆμ΄μ…˜μ˜ μ†μ„±λ“€μ˜ μ§‘ν•©

λ¦΄λ ˆμ΄μ…˜μ„ μœ„ν•œ ν‹€ framework

PK μ†μ„±μ—λŠ” λ°‘μ€„λ‘œ ν‘œμ‹œ

내포 intension 라고 함 > λ¦΄λ ˆμ΄μ…˜μ˜ μƒμ„Έν•œ λ‚΄μš©μ€ μˆ¨κΈ°λ©΄μ„œ DB의 전체 ꡬ쑰λ₯Ό λͺ…ν™•ν•˜κ²Œ λ‚˜νƒ€λ‚΄κΈ° λ•Œλ¬Έμ΄λ‹€(DDLμ •μ˜)

 

변견은 μ†μ„±μ˜ μΆ”κ°€ μ‚­μ œμ‹œ DDL μ‚¬μš©

DDL  >>

μΆ”κ°€ alter table ~ add ~

제거 alter table ~ drop~

μˆ˜μ • alter table ~ modify~

 

-λ¦΄λ ˆμ΄μ…˜ μΈμŠ€ν„΄μŠ€ relation instance

λ¦΄λ ˆμ΄μ…˜μ— μ–΄λŠ μ‹œμ μ— λ“€μ–΄ μžˆλŠ” νŠœν”Œλ“€μ˜ μ§‘ν•©

νˆ¬ν”Œ μ‚½μž… μ‚­μ œ μˆ˜μ • μ‹œ λ¦΄λ ˆμ΄μ…˜ μΈμŠ€ν„΄μŠ€λŠ” λ³€ν•œλ‹€

DMLλ₯Ό μ‚¬μš©ν•˜μ—¬ μ •μ˜

 

μ‹œκ°„μ˜ 흐름에 따라 계속 λ³€ν•œλ‹€

μ™Έμ—°(extension)이라고 ν•œλ‹€

 

DML >>

νŠœν”Œ μ‚½μž… insert into ~ values ~

νŠœν”Œ μˆ˜μ • update ~ set ~ where ~

νŠœν”Œ 확인 select ~ from ~ where ~

νŠœν”Œ μ‚­μ œ delete from ~ where ~


관계 λ°μ΄ν„°λ² μ΄μŠ€ μŠ€ν‚€λ§ˆ >> ν•˜λ‚˜ μ΄μƒμ˜ λ¦΄λ ˆμ΄μ…˜ μŠ€ν‚€λ§ˆλ“€λ‘œ 이루어짐

관계 λ°μ΄ν„°λ² μ΄μŠ€ μΈμŠ€ν„΄μŠ€ >> λ¦΄λ ˆμ΄μ…˜ μΈμŠ€ν„΄μŠ€λ“€μ˜ λͺ¨μž„μœΌλ‘œ ꡬ성됨

 

-λ¦΄λ ˆμ΄μ…˜

νŠœν”Œλ“€μ˜ μ§‘ν•©

νŠΉμ„± :

각 λ¦΄λ ˆμ΄μ…˜μ€ 였직 ν•˜λ‚˜μ˜ λ ˆμ½”λ“œ νƒ€μž…λ§Œ 포함

ν•œ 속성 λ‚΄μ˜ 값듀은 λͺ¨λ‘ 같은 μœ ν˜•

μ†μ„±μ˜ μˆœμ„œλŠ” μ€‘μš”X

λ™μΌν•œ νŠœν”Œμ΄ 두 개 이상 μ‘΄μž¬ν•˜μ§€ X

ν•œ νŠœν”Œμ˜ 각 속성은 μ›μžκ°’μ„ 가짐(단일값)

각 μ†μ„±μ˜ 이름은 ν•œ λ¦΄λ ˆμ΄μ…˜ λ‚΄μ—μ„œλ§Œ κ³ μœ ν•˜λ‹€

νŠœν”Œλ“€μ˜ μˆœμ„œλŠ” μ€‘μš”X

 

-λ¦΄λ ˆμ΄μ…˜ ν‚€

ν‚€λŠ” 두 λ¦΄λ ˆμ΄μ…˜μ„ μ„œλ‘œ μ—°κ΄€μ‹œν‚€λŠ”λ° μ‚¬μš©λœλ‹€.

ν•œ λ¦΄λ ˆμ΄μ…˜μ˜ μ–΄λ–€ ν‚€ 값이 λ‹€λ₯Έ λ¦΄λ ˆμ΄μ…˜μ— λ‚˜νƒ€λ‚˜λ©΄ 두 λ¦΄λ ˆμ΄μ…˜μ˜ ν•΄λ‹Ή νŠœν”Œλ“€μ΄ μ„œλ‘œ μ—°κ΄€ λ˜μ—ˆμŒμ„ μ•Œ 수 μžˆλ‹€.

κ°€λŠ₯ν•œ ν‚€λ₯Ό κ΅¬μ„±ν•˜λŠ” μ†μ„±μ˜ μˆ˜κ°€ μ μ„μˆ˜λ‘ μ’‹λ‹€

νŠœν”Œλ“€μ— μ ‘κ·Όν•˜λŠ” 속도λ₯Ό 높이기 μœ„ν•΄ 킀에 인덱슀λ₯Ό λ§Œλ“œλŠ”λ° ν‚€κ°€ μ μ„μˆ˜λ‘

인덱슀 크기가 쀄어듀고, 검색 μ‹œκ°„μ΄ λ‹¨μΆ•λœλ‹€

 

각 νŠœν”Œμ„ κ³ μœ ν•˜κ²Œ 식별할 수 μžˆλŠ” ν•˜λ‚˜ μ΄μƒμ˜ μ†μ„±λ“€μ˜ λͺ¨μž„

슈퍼 ν‚€ / 후보 ν‚€ / κΈ°λ³Έ ν‚€ / λŒ€μ²΄ ν‚€ / μ™Έλž˜ ν‚€

 


-슈퍼 ν‚€ 

ν•œ λ¦΄λ ˆμ΄μ…˜ λ‚΄μ˜ νŠΉμ • νŠœν”Œμ„ κ³ μœ ν•˜κ²Œ μ‹λ³„ν•˜λŠ” ν•˜λ‚˜μ˜ 속성 λ˜λŠ” μ†μ„±λ“€μ˜ μ§‘ν•©

νŠœν”Œλ“€μ„ κ³ μœ ν•˜κ²Œ μ‹λ³„ν•˜λŠ”λ° κΌ­ ν•„μš”ν•˜μ§€ μ•Šμ€ μ†μ„œλ“€μ„ 포함 ν•  수 μžˆλ‹€(문제점)

 

-후보 ν‚€

각 νŠœν”Œμ„ κ³ μœ ν•˜κ²Œ μ‹λ³„ν•˜λŠ” μ΅œμ†Œν•œμ˜ μ†μ„±λ“€μ˜ λͺ¨μž„

후보킀λ₯Ό κ΅¬μ„±ν•˜λŠ” 속성 쀑 μ–΄λŠ ν•œ 속성이라도 λΉΌλ©΄ κ³ μœ ν•˜κ²Œ μ‹λ³„ν•˜λŠ” λŠ₯λ ₯을 μƒμ‹€ν•œλ‹€

λͺ¨λ“  λ¦΄λ ˆμ΄μ…˜μ—λŠ” μ΅œμ†Œ ν•œ 개 μ΄μƒμ˜ 후보킀가 μžˆλ‹€

후보 킀도 두 개 μ΄μƒμ˜ μ†μ„±μœΌλ‘œ μ΄λ£¨μ–΄μ§ˆ 수 있으며 이런 경우 볡합 ν‚€ 라고 ν•œλ‹€

 

-κΈ°λ³Έ ν‚€ PK

ν•œ λ¦΄λ ˆμ΄μ…˜μ— 후보 ν‚€κ°€ λ‘κ°œ 이상 있으면 이듀 쀑 ν•˜λ‚˜λ₯Ό κΈ°λ³Έ ν‚€λ‘œ μ„ μ •

μ‚¬μš© λΉˆλ„ μˆ˜κ°€ 높은 ν‚€ 값을 PK둜 μ„ μ •

μžμ—°μŠ€λŸ¬μš΄ κΈ°λ³Έ ν‚€λ₯Ό 찾을 수 μ—†λŠ” 경우 λ ˆμ½”λ“œ λ²ˆν˜Έμ™€ 같이 μΈμœ„μ μΈ ν‚€ 속성을 λ¦΄λ ˆμ΄μ…˜μ—

μΆ”κ°€ν•  수 μžˆλŠ”λ° 이 ν‚€λ₯Ό λŒ€λ¦¬ ν‚€ 라고 ν•œλ‹€

 

PKνŠΉμ„± : ν•œ λ¦΄λ ˆμ΄μ…˜ λ‚΄μ˜ λͺ¨λ“  νŠœν”Œμ„ κ³ μœ ν•˜κ²Œ 식별할 수 μžˆμ–΄μ•Ό ν•˜λ―€λ‘œ 널 κ°’μ΄λ‚˜ 쀑볡을 ν—ˆμš©ν•˜μ§€ μ•ŠλŠ”λ‹€

 

PK μ„ μ • μ‹œ 고렀사항 

1. 속성이 항상 κ³ μœ ν•œ 값을 κ°€μ§€λŠ”κ°€

2. 속성이 ν™•μ‹€ν•˜κ²Œ 널 값을 κ°–μ§€ μ•ŠλŠ”κ°€

3. 속성 값이 변결될 κ°€λŠ₯성이 높은 속성은 μ„ μ •ν•˜μ§€ 말 것

4. κ°€λŠ₯ν•œ μ •μˆ˜ κ°’μ΄λ‚˜ 짧은 λ¬Έμžμ—΄λ‘œ κ³ λ €ν•œλ‹€

5. κ°€λŠ₯ν•œ 볡합 κΈ°λ³Έ ν‚€λŠ” ν”Όν•œλ‹€

 

-λŒ€μ²΄ ν‚€

PK둜 μ„ μ •λ˜μ§€ μ•Šμ€ 후보 ν‚€

 

-μ™Έλž˜ ν‚€

μ–΄λ–€ λ¦΄λ ˆμ΄μ…˜μ˜ κΈ°λ³Έ ν‚€λ₯Ό μ°Έμ‘°ν•˜λŠ” 속성

관계 λ°μ΄ν„°λ² μ΄μŠ€μ—μ„œ λ¦΄λ ˆμ΄μ…˜λ“€ κ°„μ˜ 관계λ₯Ό λ‚˜νƒ€λ‚΄κΈ° μœ„ν•΄ μ‚¬μš©

μ™Έλž˜ ν‚€ 속성은 μ°Έμ‘°λ˜λŠ” λ¦΄λ ˆμ΄μ…˜μ˜ κΈ°λ³Έ 킀와 λ™μΌν•œ 도메인을 κ°€μ Έμ•Ό ν•œλ‹€

μžμ‹ μ΄ μ†ν•œ λ¦΄λ ˆμ΄μ…˜μ˜ κΈ°λ³Έ ν‚€μ˜ κ΅¬μ„±μš”μ†Œκ°€ λ˜κ±°λ‚˜ λ˜μ§€ μ•Šμ„ 수 μžˆλ‹€.

 

 


-μ™Έλž˜ ν‚€μ˜ μœ ν˜•

 

1. λ‹€λ₯Έ λ¦΄λ ˆμ΄μ…˜μ˜ κΈ°λ³Έ ν‚€λ₯Ό μ°Έμ‘°ν•˜λŠ” μ™Έλž˜ ν‚€

 

2. 자체 λ¦΄λ ˆμ΄μ…˜μ˜ κΈ°λ³Έ ν‚€λ₯Ό μ°Έμ‘°ν•˜λŠ” μ™Έλž˜ ν‚€

 

3. κΈ°λ³Έ ν‚€μ˜ κ΅¬μ„±μš”μ†Œκ°€ λ˜λŠ” μ™Έλž˜ ν‚€ ( ν•©μ³μ Έμ„œ κΈ°λ³Έ ν‚€(볡합 ν‚€) μ΄λ©΄μ„œ μ™Έλž˜ν‚€)

 

 


*좜처

였라클 기반 λ°μ΄ν„°λ² μ΄μŠ€ 배움터 (생λŠ₯, ν™μ˜κ²½)

였라클 11g + PL/SQL μž…λ¬Έ (λŒ€λ¦Ό, μ„±μœ€κ²½ μ„œλ™λ¦°)