본문 바로가기

전공/데이터베이스

(21)
[데이터베이스] 저장 장치 관리 및 인덱싱: 인덱싱 $B^{+}$-트리 인덱스 $B^{+}$-트리는 다음과 같은 속성을 만족하는 루트 트리(rooted tree)이다. 트리의 루트 노드(root node)에서 단말 노드(leaf node)까지 모든 경로(path)의 길이가 같다. (균형 트리(balanced tree)이다.) 루트 노드나 단말 노드가 아닌 각 노드는 $\left \lceil n/2 \right \rceil$에서 n 사이의 자식(children)을 가진다. 단말 노드는 $\left \lceil (n - 1)/2 \right \rceil$에서 (n - 1)사이의 자식을 가진다. 만약 루트 노드가 단말 노드가 아니면, 루트 노드는 2에서 n사이의 자식을 가진다. 만약 루트 노드가 단말 노드이면, 루트 노드는 0에서 (n-1)사이의 자식을 가진다..
[데이터베이스] 저장 장치 관리 및 인덱싱: 데이터 저장 장치 구조 데이터 사전 저장소(Data Dictionary Storage) 릴레이션 스키마와 같은 데이터에 대한 데이터를 메타데이터(metadata)라고 하고, 이는 데이터 사전(data dictionary)이라고 불리는 구조에 저장된다. 메타데이터에는 릴레이션에 대한 정보, 사용자와 계정에 대한 정보, 릴레이션 및 속성에 대한 통계 및 설명 데이터, 물리적 파일 구성 정보, 릴레이션의 인덱스에 대한 정보와 같은 정보들이 있다. 데이터베이스 버퍼(Database Buffer) 데이터베이스 파일은 블록(block)이라고 불리는 고정된 길이의 저장 단위로 저장되고, 이 블록은 디스크 할당(storage allocation)과 데이터 전송(data transfer)의 기본 단위이다. - (메인 메모리) 블록의 종류 1...
[데이터베이스] 저장 장치 관리 및 인덱싱: 물리적 저장 장치 구조 저장 장치 계층(Storage Hierarchy) 1. 캐시(cache) : 저장 장치 중 가장 빠르고 비싸고, 크기가 상대적으로 작은 저장 장치이다. 2. 메인 메모리(main memory) : 연산에 사용할 데이터를 저장하기 위한 저장 장치이다. 휘발성 메모리이다. 3. 플래시 메모리(flash memory) : 비휘발성 메모리이다. SSD(solid-state drive) - 내부적으로 플래시 메모리를 사용해서 저장하지만 자기 디스크와 유사한 인터페이스를 제공한다. 4. 자기 디스크 저장 장치(magnetic-disk storage) : 온라인으로 장기간 데이터를 저장하기 위한 저장 장치 이다. 비휘발성 메모리이다. 하드 디스크 드라이브(hard disk drive, HDD)라고도 한다. 5. 광학..
[데이터베이스] 관계형 데이터베이스 설계 좋은 관계형 설계의 특징 두 릴레이션 instructor와 department를 자연 조인한 inst_dept 하나의 릴레이션으로 결합했다. 그 결과로 같은 학과 내의 교수에 대해서 학과 정보가 반복되게 된다. 이는 일관성 문제를 야기할 수 있다. 따라서 이는 좋지 못한 릴레이션이다. - 분해(Decomposition) inst_dept 릴레이션에서 정보의 반복 문제를 해결하는 방법은 inst_dept 릴레이션을 instructor과 department 두 개의 릴레이션으로 분해하는 것이다. 이때 분해된 각 릴레이션은 good form이어야 하고, 분해는 무손실 분해(lossless-join decomposition)여야 한다. 무손실 분해는 함수 종속(functional dependencies)를 이용..
[데이터베이스] E-R 모델을 사용한 데이터베이스 설계 - (2) 주 키 - 관계 집합에서의 키 관계 집합에 참여하는 개체 집합의 주 키의 조합이 관계 집합의 수퍼 키를 형성한다. 이진 관계 집합에서 주 키 선택은 관계 집합의 대응 카디널리티를 고려해서 선택하게 된다. 1. 다대다 관계의 경우, 두 개체 집합의 주 키의 합집합을 주 키로 선택한다. 2. 일대다 및 다대일 관계의 경우, "다" 쪽의 주 키를 관계 집합의 주 키로 선택한다. 3. 일대일 관계의 경우, 두 개의 주 키 중 하나를 관계 집합의 주 키로 선택한다. 역할(Role) 관계에서 개체가 행하는 기능을 개체의 역할이라고 한다. 관계 집합에 참여하는 개체 집합은 일반적으로 서로 구별되기 때문에 역할이 따로 명시되지 않는다. 예시) course_id와 prereq_id를 역할이라 한다. 비이진 관계 집합(N..
[데이터베이스] E-R 모델을 사용한 데이터베이스 설계 - (1) 데이터베이스 설계 단계 1. 데이터 분석과 요구 사항(requirement) : 데이터베이스 사용자가 필요로 하는 데이터를 충분히 규정한다. 2. 개념적 설계 단계(conceptual-design phase) : 데이터 모델을 선택하고, 선택한 데이터 모델의 개념을 적용해 요구 사항을 데이터베이스의 개념 스키마로 변환한다. E-R 모델링은 일반적으로 개념적 설계를 표현한다. 3. 데이터 모델(E-R 모델) 검토 : 스키마를 검토하여 모든 데이터 요구 사항을 만족하고, 서로 충돌하지 않는지 확인하고, 중복되는 사항을 제거한다. 4. 논리적 설계 단계(logical-design phase) : 상위의 개념 스키마를 사용할 데이터베이스의 구현 데이터 모델에 대응시킨다. 구현 데이터 모델은 일반적으로 관계형 데..
[데이터베이스] SQL - (3) 중첩 하위 질의(Nested Subuery) subquery는 다른 query 안에 중첩된 select-from-where 표현이다. - 멤버십 비교 in 접속사는 집합 멤버십을 테스트하는데, 집합은 select 절에 의해 생성된 값들의 집합이다. not in 접속사는 집합 멤버십의 부재를 테스트한다. 예시) select count (distinct ID) from takes where (course_id, sec_id, semester, year) in (select course_id, sec_id, semester, year from teaches where teaches.ID = 10101); in과 not in 연산자는 열거형 집합(enumerated set)에서 사용할 수 있다. 예시) sele..
[데이터베이스] SQL - (2) SQL에서의 연산 - 자연 조인(Natural Join) 자연 조인(Natural Join)은 공통으로 가지는 속성의 값이 일치하는 tuple들을 연결하여 만들어진 tuple을 포함하는 테이블을 생성한다. 예시) select * from instructor natural join teaches; 자연 조인(Natural Join)을 사용할 때 속성을 잘못 동일시 하지 않도록 주의해야 한다. 예시) 학생의 이름과 그 학생이 수강했던 과목을 나열하라. incorrect version: select name, title from student natural join takes natural join course; 이유: student와 takes의 자연 조인은 (ID, name, dept_name, tot_c..