본문 바로가기

Domain/데이터베이스

(12)
[데이터베이스] 정규화 정규화 관계형 데이터베이스의 설계에서 중복을 최소화하는 방식으로 일관성 훼손을 방지하여 데이터를 구조화하는 프로세스를 정규화라고 한다. 데이터베이스 정규화의 목표는 이상이 있는 관계를 재구성하여 작고 잘 조직된 관계를 생성하는 것에 있다. 설계가 잘못된 테이블의 예시 위 테이블의 문제점은 아래와 같다. 하나의 테이블에 여러 주제가 표현 -> 학생, 교수, 교과목 여러 주제의 표현으로 인해 데이터 중복이 발생했다. 수정 이상(갱신/삽입/삭제이상) 현상이 발생할 수 있다. 수정 이상 수정 이상이란 데이터의 갱신/삽입/삭제 과정에서 원치 않는 결과가 초래되는 현상을 의미한다. 갱신 이상은 데이터의 값을 변경하는 작업에 의해 생기는 이상 현상이다. 위처럼 홍병근 학생의 주소 변경 시 일부 행들만 변경되어 데이터..
[데이터베이스] ISAM과 B+ 트리 ISAM(Indexed Sequential Access Method) ISAM은 트리의 구조가 변경되지 않는 정적 트리이다. 리프 페이지는 연속적으로 할당되어 앞, 뒤의 링크 없이 순차적으로 접근이 가능하다는 점이 특징이자 장점이다. 데이터 삽입 시 overflow page가 생성될 수 있으며 order 개념이 없다. 특징 레코드가 물리적으로 인접해있다. 트리 구조가 변경되지 않는다. 인덱스 레벨의 페이지가 변경되지 않으므로 병행성 제어가 쉽다. ISAM의 삽입과 삭제 좌측은 23,48,41,42를 삽입한 뒤의 모습이고, 우측은 42,51,97을 삭제한 뒤의 모습이다. B+ 트리 동적인 트리로 데이터의 삽입, 삭제에 의해 트리의 구조가 변경될 수 있다. 리프 페이지의 노드들은 앞, 뒤 링크로 연결되어 있..
[데이터베이스] 10. DBMS의 버퍼 관리와 쿼리 비용 추정 DBMS의 버퍼 관리 질의 과정에서 데이터에 접근하기 위해서는 테이블의 레코드들이 실제 물리 메모리의 버퍼 공간에 할당되어야 한다. 물리 메모리는 디스크에 비해 매우 적은 공간이며 이에 따라 적절한 교체 정책이 필요하다. DBMS는 로 이를 관리한다. 이는 메모리 버퍼의 몇 번 프레임에 디스크의 몇 번 페이지를 올렸는지를 의미한다. 특정 페이지가 요청된 경우의 시나리오는 다음과 같다. IF) 해당 페이지가 버퍼에 존재할 경우 -> 바로 반환 ELSE) 해당 페이지가 버퍼에 존재하지 않는 경우 버퍼에서 교체할 프레임을 선택한다. 교체할 프레임이 dirty면 이를 디스크에 기록한다. 요청한 페이지를 디스크에서 버퍼의 해당 프레임으로 로드한다. 각 프레임은 pin count로 얼마나 사용되고 있는 지를 기록하..
[데이터베이스] 9. 인덱스와 인덱스 구조별 비용 추정 인덱스 인덱스란 검색키를 기반으로 효율적인 질의를 돕는 메커니즘이다. 한 테이블의 특정 필드를 인덱스로 설정할 경우 전체 테이블을 full scan하는 것이 아닌 인덱스의 검색키 만으로 스캔하여 빠르다. 다만, 인덱스를 사용할 경우 공간적인 오버헤드가 약간 증가한다. 그리고, 갱신 작업 또한 약간의 시간적 오버헤드가 발생한다. 기존의 경우 해당 테이블의 실제 데이터만 수정하면 되지만, 인덱스가 있을 경우 인덱스의 검색키 또한 바꿔야 하며 그에 따라 인덱스의 구조가 변경될 수 있기 때문이다. 파일 구조에 따른 인덱스의 종류 B 트리 인덱스 B 트리의 구조를 띄는 인덱스로 하나의 노드에 2개 이상의 엔트리가 존재한다. 해당 구조의 특징은 아래와 같다. 범위 탐색에 유리하다. 성능은 트리의 높이에 따라 결정된..
[데이터베이스] 8. ESQL(Embedded SQL)와 프로시저(Procedure) ESQL 응용프로그램에 삽입된 SQL문을 의미한다. 응용프로그램에서 작성된 SQL문을 통해 DBMS에 접근하여 조회/갱신 등이 가능하다. 이때, 결과를 받기 위해 '커서'를 활용한다. 커서는 SQL문의 결과를 접근하기 위한 포인터이다. void computeGPA{ EXEC SQL BEGIN DECLARE SECTION; float oldgpa, newgpa; char id[9]; EXEC SQL END DECLARE SECTION; EXEC SQL DECLARE SECTION; EXEC SQL DECLARE gpaCursor CURSOR FOR SELECT id, gpa FROM student FOR UPDATE; EXEC SQL OPEN gpaCursor; //학생 테이블 접근시작 while(1){ ..
[데이터베이스] 7. SQL의 View View View란 테이블에 대한 가상의 테이블로써 테이블처럼 직접 데이터를 소유하지 않고 검색 시에 이용할 수 있도록 정보를 담고 있는 객체를 의미합니다. 만약 특정 컬럼들을 여러 번 조회해야 한다면 똑같은 SELECT문을 여러 번 반복해야 하는데, 뷰에 해당 쿼리문을 저장함으로써 빠르고 간편하게 조회가 가능합니다. 자주 질의되는 SQL문을 View라는 가상 테이블로 저장. View의 특징 데이터의 논리적 독립성 예를 들어, 기존의 instructor 테이블이 professor(pid, name, dept), lecturer(lid, name, major, address)로 분할되었다. 이때 View의 instructor 컬럼 리스트의 이름과 타입은 기존의 insturctor 테이블과 동일하므로 기존의..
[데이터베이스] 6. 무결성 제약 조건 무결성 제약 조건 데이터베이스 스키마에 대하여 지정되는 조건으로 데이터 베이스에 저장되는 데이터들이 반드시 만족해야할 조건을 의미한다. 부적절한 정보 입력을 방지하기 위함. RDBMS의 무결성 제약 조건1 - 도메인 무결성 제약 조건 CHECK, DEFAULT, NOT NULL 등을 활용하여 각 속성의 도메인을 지정하여 입력 오류를 방지 grade_type이라는 학생의 가능한 학점에 대한 도메인 생성 CREATE DOMAIN grade_type AS CHAR CHECK (VALUE IN('A','B','C','D','F')); CREATE TABLE course_taken( ... student_id CHAR(4) NOT NULL, #NULL 값을 방지 grade grade_type, # 지정한 학점만 ..
[데이터베이스] 5. 데이터의 입력, 삭제, 수정 데이터 입력 : INSERT INSERT INTO 테이블(컬럼명1, 컬럼명2, ...) VALUES (값1, 값2, ...),(값1, 값2, ...); INSERT 방식 원소를 직접 입력 질의에 의한 입력: 질의 결과. 즉, 다수의 원소들이 동시에 입력 원소의 직접 입력 INSERT INTO student(id, name) VALUES ('970601','임꺽정'), ('980402','홍길동'); 질의에 의한 입력: 학생 중 성적이 3.5 이상인 경우 장학생 목록에 추가 INSERT INTO scholarshipStudent(id,major,gpa) SELECT S.id, S.major. S.gpa FROM student S WHERE gpa>=3.5; 데이터 삭제 : DELETE DELETE FROM..