개발의변화
데이터베이스 7급 2017 국가직 기출 본문
문2.
슈퍼키는 후보키가 되기 위한 필요충분 조건
=> 슈퍼키 (유일성 만족, 최소성 만족X)> 후보키 (유일성과 최소성 만족) > 대체키 > 기본키
릴레이션 R이 릴레이션 S를 참조하는 경우 R의 외래키가 S의 기본키가 아닌 후보키 중 하나를 참조해야 한다.
=> 참조하는 경우 외래키는 반드시 참조하는 기본키를 만족해야 한다.
문3.
데이터 구조
데이터 구조는 데이터를 효율적으로 이용할 수 있도록 컴퓨터에 저장
데이터 구조에 있어 가장 기초적인 단위로는 행령, 레코드,트리, 그래프
파일 구조
릴레이션을 구성하는 레코드는 일반적으로 하나의 파일로 존재하며 디스크 블록에 저장됨
블록은 디스크의 물리적인 속성으로 운영체제에 의해 결정되는 고정된 크기, 레코드 크기는 가변적
인접한 블록들을 읽는 경웅에는 탐색 시간과 회전 지연 시간이 필요하지 않기 떄문에 입출력속도가 빠르고, 필요에 따라 블록들이 인접하도록 구성
힙 파일 구조
파일 안에 레코드를 위한 공간만 있으면 임의의 레코드는 어디든지 놓일 수 있는 구조
가장 단순한 파일 조직으로 일반적으로 레코드들이 삽입된 순서대로 파일에 저장되는 비 순서 파일 구조
새로 삽입되는 레코드는 파일의 가장 끝에 첨부되는데, 파일 중간에 빈 공간이 있으면 삽입 가능
레코드들을 접근하는 순서가 중요하지 않을 떄 사용하는 것이 효율적
순차 파일 구조
입력된 레코드들을 논리적인 순서에 따라 물리적 연속 공간에 순차적으로 기록
레코드들의 물리적 순서가 그 레코드들의 논리적 순서와 같게 저장
기록 밀도가 높아 기억 공간을 효율적으로 사용할 수 있으며, 매체 변환이 쉬워 어떠한 매체에도 적용할 수 있음
파일에 새로운 레코드를 삽입 및 삭제하는 경우, 파일 전체를 복사해야 하므로 시간이 많이 소요
직접 파일 구조
저장하고자 하는 데이터의 키 값을 저장 공간의 물리적 주소로 변환할 수 있는 어떤 관계를 정의해 두었다가 이를 활용하는 파일 구조
인덱스된 순차 파일 구조
키 값에 따라 정렬된 레코드를 순차적으로 접근하거나 주어진 키 값에 따라 직접 접근할 수 있는 파일 구조
순차적으로 정렬된 순차 데이터 파일과 이 파일에 대한 포인터를 가지고 인덱스를 구성
인덱스와 순차 데이터 파일을 구성하는 방법에 따라 정적 인덱스 방법(ISAM 파일)과 동적 인덱스 방법(VSAM)으로 구분된다.
무결성 제약조건
데이터의 정확성,일관성 나타냄
1. 개체 무결성
각 릴레이션의 기본키를 구성하는 속성은 널(NULL)값이나 중복된 값을 가질 수 없습니다.
2. 참조 무결성
외래키 값은 NULL이거나 참조하는 릴레이션의 기본키 값과 동일해야 합니다.
즉, 각 릴레이션은 참조할 수 없는 외래키 값을 가질 수 없습니다.
3. 도메인 무결성
속성들의 값은 정의된 도메인에 속한 값이어야 한다.
- 성별이라는 속성에서 '남', '여'를 제외한 데이터는 제한되어야 한다.
4. 고유 무결성
특정 속성에 대해 고유한 값을 가지도록 조건이 주어진 경우, 리레이션의 각 튜플들이 가지는 속성값
- [학생] 릴레이션에서 ‘이름’, ‘나이’는 서로 같은 값을 가질 수 있지만 ‘학번’의 경우, 각 튜플은 서로 다른 값을 가져야 한다.
5. NULL 무결성
릴레이션의 특정 속성 값은 NULL될 수 없다.
6. 키 무결성
각 릴레이션은 최소한 한 개 이상의 키가 존재해야 한다.
갱신 손실 문제
동시성 제어가 부족할 떄 발생
여러 사용자 또는 시스템이 동시에 같은 데이터를 업데이트하려고 할 때, 한 사용자의 변경사항이 다른 사용자 또 는 시스템이 동시에 같은 데이터 업데이트하려고 할 떄 한 사용자의 변경사항이 다른 사용자에 의해 덮어짐
오손 읽기 문제
한 트랜잭션이 다른 트랜잭션에 의해 아직 확정되지 않은 변경사항 읽을 때 발생
한 트랜잭션이 데이터 수정 중이지만 아직 커밋하지 않을 떄 첫 번쨰 트랜잭션이 롤백을 하면 두 번째 트랜잭션의 결과는 무효
부정확한 요약 문제
집계 함수(COUNT,SUM)을 사용할 떄 동시성 문제로 인해 잘못된 결과가 반한
여러 사용자가 동시에 데이터를 수정하면서 집계 함수가 실행될 때, 일부 데이터는 갱신되지 않은 상태로 부정확한 요약정보 제공
반복할 수 없는 읽기 문제
한 트랜잭션 내에서 동일한 쿼리를 두 번 실행할 떄 다른 결과가 반환되는 상황
한 트랜잭션이 데이터를 읽은 후, 다른 트랜잭션이 그 데이터를 변경하고 커밋 => 처음 트랜잭션에서 동일한 쿼리를 다시 실행했을 때 변경된 결과 얻음
DBMS 캐시관리
steal/no -steal
no-steal: 지연, 트랜잭션이 완료되기 전까지 트랜잭션의 갱신한 캐쉬 페이지가 디스크에 기록하지 않는 방식
steal: 에잇 -> 즉시, 트랜잭션이 완료되기 전에 갱신된 페이지를 디스크에 기록할 수 있는 방식
force/no-force
force: 트랜잭션이 완료될 떄 트랜잭션이 갱신한 모든 페이지를 디스크에 반영
no-force: 트랜잭션이 완료될 떄 강제적으로 갱신된 모든페이지를 디스크에 반영하지 않는 방식
RAID
여러 개의 작은 디스크들을 배열 구조로 연결하고 하나의 unit 패키지 함으로서 액세스 속도를 크게 향상시킴
RAID 0
데이터의 빠른 입출력을 위해 데이터를 여러 디스크에 분산 저장
어느 한 디스크에서 장애가 발생하면 데이터는 모두 손실
RAID 1
최소 2개의 디스크로 구성할 수 있는데 디스크 장애를 대비하여 백업용으로 다른 디스크를 구성
디스크에 기록되는 모든 데이터를 다른 디스크에 복사하는 방법으로 복구 능력을 제공 -> 비쌈
RAID 2
ECC를 위한 드라이브가 손상될 경우는 문제가 발생할 수 있으며 패리티 정보를 하나의 하드 드라이브에 저장하는 RAID 4가 나오면 거의 사용되지 않는 방식
RAID 3
데이터를 바이트 단위로 나누어 디스크에 동등하게 분산기록
RAID 4
데이터를 블록다뉭로 기록
RAID 5
패리티 정보 디스크를 사용함으로써 발생하는 문제점을 보완하는 방식, 패리티 정보를 stripe로 구성된 디스크 내에서 처리
RAID 6
다른 드라이브들 간에 분포되어 있는 2차 패리티 정보를 넣어 2개의 하드 문제가 생겨도 데이터의 안정성 고려
뷰를 만들 떄 모든 컬럼과 모든 레코드를 가져와서 작성하면 뷰나 테이블에 insert
확장성 해싱
주소테이블(Address Table): 데이터 인덱스역할을 하며 버킷에 대한 주소 포인터 저장
디렉터리: 정수값 d (디렉터리 깊이)를 포함하는 헤더와 버킷들을 지시하는 2*d 개의 포인터 구성
버킷: 각 버킷은 지역깊이, p를 표시, 각 버킷을 위한 버킷 깊이 값은 디렉터리를 위한 디렉터리 깊이 값보다 작거나 같은 값을 가질 수 잇음, 레코드들을 실제로 저장하는 공간
모조키(pseudokey): 확장성 해싱 함수를 통해 레코드의 키를 일정 길이의 비트스트링으로 변환, 모조키의 처음 d비트를 디렉터리 접근에 사용