ν‚€(Key)와 무결성 μ œμ•½ 쑰건
Β·
πŸ“ Computer Science/✏ Database
κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€λŠ” 관계 λŒ€μˆ˜μ˜ κ°œλ…μ„ λ°”νƒ•μœΌλ‘œ κ°œλ°œλ˜μ—ˆκ³  데이터가 ν…Œμ΄λΈ”μ— μ €μž₯되며 각 ν…Œμ΄λΈ”μ€ ν–‰(νŠœν”Œ)κ³Ό μ—΄(속성)둜 κ΅¬μ„±λœλ‹€. 관계 λŒ€μˆ˜: μ–΄λ–€ 데이터λ₯Ό μ–΄λ–»κ²Œ μ°ΎλŠ”μ§€μ— λŒ€ν•œ 처리 절차λ₯Ό λͺ…μ‹œν•˜λŠ” 절차적인 언어이닀. 1. ν‚€(Key) νŠœν”Œλ“€μ„ μ„œλ‘œ ꡬ뢄할 수 μžˆλŠ” 기쀀이 λ˜λŠ” 속성(μ• νŠΈλ¦¬λ·°νŠΈ)을 λ§ν•œλ‹€. 슈퍼 ν‚€(Super Key): μ†μ„±λ“€μ˜ μ§‘ν•©μœΌλ‘œ μœ μΌμ„±μ€ λ§Œμ‘±ν•˜μ§€λ§Œ μ΅œμ†Œμ„±μ€ λ§Œμ‘±μ‹œν‚€μ§€ λͺ»ν•œλ‹€. 후보 ν‚€(Candidate Key): νŠœν”Œμ„ μœ μΌν•˜κ²Œ μ‹λ³„ν•˜κΈ° μœ„ν•΄ μ‚¬μš©ν•˜λŠ” μ†μ„±λ“€μ˜ λΆ€λΆ„μ§‘ν•©μœΌλ‘œ λͺ¨λ“  νŠœν”Œμ— λŒ€ν•΄ μœ μΌμ„±κ³Ό μ΅œμ†Œμ„±μ„ λ§Œμ‘±μ‹œμΌœμ•Ό ν•œλ‹€. μœ μΌμ„±(Unique): ν•˜λ‚˜μ˜ ν‚€κ°’μœΌλ‘œ ν•˜λ‚˜μ˜ νŠœν”Œλ§Œμ„ μœ μΌν•˜κ²Œ 식별할 수 μžˆμ–΄μ•Ό ν•œλ‹€. μ΅œμ†Œμ„±(Minimality): νŠœν”Œλ“€μ„ μœ μΌν•˜κ²Œ μ‹λ³„ν•˜λŠ” 데..
인덱슀(Index)
Β·
πŸ“ Computer Science/✏ Database
인덱슀(Index) 데이터 λ ˆμ½”λ“œλ₯Ό λΉ λ₯΄κ²Œ μ ‘κ·Όν•˜κΈ° μœ„ν•΄ 쌍으둜 κ΅¬μ„±λ˜λŠ” 데이터 ꡬ쑰이닀. 데이터 ν…Œμ΄λΈ”μ„ Full Scan ν•˜μ§€ μ•Šκ³  인덱슀λ₯Ό μ΄μš©ν•΄ κ²€μƒ‰ν•΄μ„œ 검색 속도 ν–₯μƒν•˜κ³  λ””μŠ€ν¬ μ—°μ‚° 횟수λ₯Ό 쀄인닀. 검색 쿼리의 μ„±λŠ₯을 μ›”λ“±νžˆ ν–₯μƒμ‹œν‚€λŠ” μΈλ±μŠ€κ°€ 항상 μ’‹μ§€λ§Œμ€ μ•Šλ‹€. 인덱슀λ₯Ό μƒμ„±ν•˜κ²Œ 되면 μ‚½μž…, μ‚­μ œ, κ°±μ‹  λ“±μ˜ 좔가적인 과정이 λ°œμƒν•˜κΈ° λ•Œλ¬Έμ— 그만큼 μ„±λŠ₯ 손싀이 λ°œμƒν•œλ‹€. 인덱슀 μ—”νŠΈλ¦¬: 인덱슀 파일의 λ ˆμ½”λ“œμ΄λ‹€. 데이터 λ ˆμ½”λ“œμ˜ μˆ˜λ³΄λ‹€ μž‘κ±°λ‚˜ κ°™λ‹€. μ’…λ₯˜ λ°€μ§‘ 인덱슀: 데이터 파일 λ‚΄ λͺ¨λ“  ν‚€ 값을 인덱슀 μ—”νŠΈλ¦¬λ‘œ μ •μ˜ν•œλ‹€. Ex) ν΄λŸ¬μŠ€ν„°λ“œ 인덱슀 ν¬μ†Œ 인덱슀: 탐색 κ°’ 일뢀에 λŒ€ν•΄μ„œλ§Œ 인덱슀 μ—”νŠΈλ¦¬λ₯Ό μ •μ˜ν•œλ‹€. Ex) κΈ°λ³Έ 인덱슀, 보쑰 인덱슀 1) ν΄λŸ¬μŠ€ν„°λ“œ 인덱슀 vs λ„Œν΄λŸ¬μŠ€ν„°λ“œ ..
λ°μ΄ν„°λ² μ΄μŠ€(DataBase)
Β·
πŸ“ Computer Science/✏ Database
파일 μ‹œμŠ€ν…œκ³Ό λ°μ΄ν„°λ² μ΄μŠ€ λ°μ΄ν„°λ² μ΄μŠ€κ°€ μ‘΄μž¬ν•˜κΈ° μ΄μ „μ—λŠ” 파일 μ‹œμŠ€ν…œμ„ μ΄μš©ν•˜μ—¬ 데이터λ₯Ό κ΄€λ¦¬ν•˜μ˜€λ‹€. 1. 파일 μ‹œμŠ€ν…œ 파일 μ‹œμŠ€ν…œμ€ νŒŒμΌμ„ μ΄μš©ν•˜μ—¬ 자료λ₯Ό κ΄€λ¦¬ν•˜λŠ” λ°©λ²•μœΌλ‘œ νŒŒμΌμ€ 물리적인 λΉ„νŠΈμ˜ 연속이고 순차적인 λ ˆμ½”λ“œλ“€λ‘œ κ΅¬μ„±λœλ‹€. μ—¬κΈ°μ„œ λ ˆμ½”λ“œλž€ μ—°κ΄€λœ ν•„λ“œλ“€μ˜ λͺ¨μž„을 λ§ν•œλ‹€. 데이터에 λŒ€ν•œ ν”„λ‘œκ·Έλž¨μ˜ μ˜μ‘΄λ„κ°€ λ†’μŒ(쒅속성): ν”„λ‘œκ·Έλž¨ μ•ˆμ— λ°μ΄ν„°μ˜ μ •μ˜κ°€ μ‘΄μž¬ν•˜κΈ° λ•Œλ¬Έμ— 데이터 ꡬ쑰λ₯Ό μˆ˜μ •ν•˜λ©΄ ν”„λ‘œκ·Έλž¨μ„ μˆ˜μ •ν•΄μ•Ό ν•œλ‹€. λ°μ΄ν„°μ˜ μ€‘λ³΅μ„±μœΌλ‘œ 뢈일치 ν˜„μƒ: λ™μΌν•œ 사싀에 μ„œλ‘œ λ‹€λ₯Έ 데이터가 μ‘΄μž¬ν•΄μ„œ 정보에 λŒ€ν•œ ν˜Όλž€κ³Ό μ €μž₯ 곡간 λ‚­λΉ„κ°€ λ°œμƒν•œλ‹€. λΆ€μ‘±ν•œ κΈ°λŠ₯ 데이터 λͺ¨λΈλ§ κ°œλ…: ν”„λ‘œκ·Έλž˜λ°μ— κ·œμΉ™μ΄ μ—†λ‹€. μ§ˆμ˜μ–΄: 일일이 ν”„λ‘œκ·Έλž˜λ°ν•΄μ•Ό ν•œλ‹€. λ™μ‹œμ„± μ œμ–΄: μ—¬λŸ¬ μ‚¬μš©μžκ°€ λ™μ‹œμ— μ•‘μ„ΈμŠ€ ν•˜λ©΄ 데이터..
ν•΄μ‹œ(Hash)
Β·
πŸ“ Computer Science/✏ Data Structure
ν•΄μ‹œ(Hash) 적은 μžμ›μœΌλ‘œ 데이터λ₯Ό 효율적으둜 κ΄€λ¦¬ν•˜κΈ° μœ„ν•΄ μž„μ˜μ˜ 길이 데이터λ₯Ό κ³ μ •λœ 길이의 λ°μ΄ν„°λ‘œ λ§€ν•‘ν•˜λŠ” 것이닀. ν•΄μ‹œ ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ μ €μž₯ν•  데이터와 μ—°κ΄€λœ κ³ μœ ν•œ 숫자λ₯Ό λ§Œλ“  λ’€ 이λ₯Ό 인덱슀둜 μ‚¬μš©ν•œλ‹€. λ‚΄λΆ€μ μœΌλ‘œ 배열을 μ΄μš©ν•˜μ—¬ 데이터λ₯Ό μ €μž₯ν•˜κΈ° λ•Œλ¬Έμ— λΉ λ₯Έ 검색 속도(O(1))λ₯Ό κ°–λŠ”λ‹€. 1. ν•΄μ‹œ ν•¨μˆ˜(Hash Function) μ €μž₯ν•  데이터와 μ—°κ΄€λœ κ³ μœ ν•œ 숫자(Hash Code)λ₯Ό λ§Œλ“ λ‹€. μ €μž₯λ˜λŠ” κ°’λ“€μ˜ key 값을 ν•΄μ‹œ ν•¨μˆ˜λ₯Ό 톡해 μž‘μ€ λ²”μœ„μ˜ κ°’λ“€λ‘œ λ°”κΎΌλ‹€. 2. ν•΄μ‹œ ν…Œμ΄λΈ” ν•΄μ‹œ ν…Œμ΄λΈ”μ€ μ›μ†Œκ°€ μ €μž₯될 μžλ¦¬κ°€ μ›μ†Œμ˜ 값에 μ˜ν•΄ κ²°μ •λ˜λŠ” 자료ꡬ쑰둜 μž„μ˜μ˜ μ›μ†Œλ₯Ό ν•΄μ‹œ ν…Œμ΄λΈ”μ— μ €μž₯ν•˜λ €λ©΄ ν•΄μ‹œ ν•¨μˆ˜λ₯Ό 톡해 ν•΄μ‹œ 값을 κ³„μ‚°ν•˜κ³  ν•΄μ‹œ 값에 따라 μ €μž₯ν•œλ‹€. 3. 좩돌(Collisi..
κ·Έλž˜ν”„(Graph)
Β·
πŸ“ Computer Science/✏ Data Structure
κ·Έλž˜ν”„(Graph) 정점(Vertex)κ³Ό κ°„μ„ (Edge)의 집합이닀. λ°©ν–₯μ„±(Directed) κ·Έλž˜ν”„: 간선에 λ°©ν–₯성이 ν¬ν•¨λœ κ·Έλž˜ν”„μ΄λ‹€. 무방ν–₯μ„±(Undirected) κ·Έλž˜ν”„: λ°©ν–₯성이 μ—†λŠ” κ·Έλž˜ν”„μ΄λ‹€. κ°€μ€‘μΉ˜(Weight) κ·Έλž˜ν”„: 간선에 κ°€μ€‘μΉ˜ 정보가 ν¬ν•¨λœ κ·Έλž˜ν”„μ΄λ‹€. λΆ€λΆ„(Sub) κ·Έλž˜ν”„: κ·Έλž˜ν”„μ˜ 일뢀 정점 및 κ°„μ„ μœΌλ‘œ 이루어진 κ·Έλž˜ν”„μ΄λ‹€. 1. κ΅¬ν˜„ 방법 1) 인접 ν–‰λ ¬ 정점(V)의 수만큼 2차원 배열을 λ§Œλ“€κ³  μΈμ ‘ν•˜λ©΄ 1, μΈμ ‘ν•˜μ§€ μ•ŠμœΌλ©΄ 0을 λ„£λŠ” λ°©λ²•μœΌλ‘œ λ©”λͺ¨λ¦¬ λ‚­λΉ„(V^2)κ°€ μžˆμœΌλ‚˜ 밀도가 높은 κ·Έλž˜ν”„ ν‘œν˜„μ— μ ν•©ν•˜λ‹€. 2) 인접 리슀트 각 μ •μ λ§ˆλ‹€ 리슀트λ₯Ό λ§Œλ“€κ³  인접해 μžˆλŠ” 정점듀을 μ—°κ²°ν•œ λ°©λ²•μœΌλ‘œ 검색 μ‹œκ°„μ΄ 였래 κ±Έλ¦¬μ§€λ§Œ λ©”λͺ¨λ¦¬ λ‚­λΉ„κ°€ μ—†λ‹€. 2. κ·Έλž˜ν”„ 탐색 1) 깊이 μš°μ„  ..
이진 트리(Binary Tree)
Β·
πŸ“ Computer Science/✏ Data Structure
이진 트리(Binary Tree) μ–΄λ–€ λ…Έλ“œμ˜ μžμ‹ λ…Έλ“œμ˜ μˆ˜κ°€ μ΅œλŒ€ 2개λ₯Ό λ„˜μ§€ μ•ŠλŠ” νŠΈλ¦¬μ΄λ‹€. 포화(Perfect) μ΄μ§„νŠΈλ¦¬: λͺ¨λ“  레벨이 꽉 μ°¬ μ΄μ§„νŠΈλ¦¬μ΄λ‹€. μ™„μ „(Complete) μ΄μ§„νŠΈλ¦¬: μœ„μ—μ„œ μ•„λž˜λ‘œ, μ™Όμͺ½μ—μ„œ 였λ₯Έμͺ½μœΌλ‘œ μ°¨λ‘€λŒ€λ‘œ μ±„μ›Œμ§„ νŠΈλ¦¬μ΄λ‹€. 사ν–₯ μ΄μ§„νŠΈλ¦¬: ν•œμͺ½μœΌλ‘œ κΈ°μšΈμ–΄μ§„ 트리둜 탐색 μ‹œκ°„μ€ O(N)이닀. 1. 이진 탐색 트리(Binary Search Tree) 탐색 μ‹œκ°„μ΄ 평균 O(logN)으둜 효율적인 탐색이 κ°€λŠ₯ν•˜λ‹€. 각 λ…Έλ“œμ˜ μžμ‹μ΄ 2개 μ΄ν•˜μ΄λ‹€. 각 λ…Έλ“œμ˜ μ™Όμͺ½ μžμ‹μ€ λΆ€λͺ¨λ³΄λ‹€ μž‘κ³  였λ₯Έμͺ½ μžμ‹μ€ λΆ€λͺ¨λ³΄λ‹€ 크닀. μ€‘λ³΅λœ κ°’μ˜ λ…Έλ“œκ°€ μ—†μ–΄μ•Ό ν•œλ‹€. 2020.04.29 - [πŸ“ Computer Science/✏ Algorithm] - [C] 이진 탐색 트리(BST) [C] 이..