출처 : 박미진 컴퓨터 일반
전산직 필기 준비를 위해 박미진 컴퓨터 일반 이론 일부 정리 글입니다.
데이터베이스
데이터베이스 장점
- 데이터 중복과 불일치 감소
- 데이터 독립성 보장
- 질의어 통해 사용자가 쉽게 데이터를 접근할 수 있음
- 무결성 향상
- 보안성 향상
- 데이터의 공유와 동시접근 가능
- 종속성 유지 (X)
데이터베이스 특징
- DBMS로 외부, 내부, 개념 스키마로 계층적 데이터 독립성 제공. 종속성(X)
- 데이터베이스 내에 있는 데이터 레코드는 내용에 의해 참조됨. 주소에 의해 참조(X)
DBMS로 데이터 관리
- DBMS 필수 기능
- 정의 기능: 스키마 생성, 변경, 삭제
- 조작 기능: 검색, 삽입, 수정, 삭제
- 제어 기능: 보안, 무결성, 회복
- 보안 기능 (X)
- 사용자가 데이터베이스의 모든 데이터 자유롭게 액세스 (X) → 접근 권한 있는 부분에 대해 액세스임
- 데이터베이스는 데이터의 최소한의 중복을 허용함.
- → 회복에 의한 신뢰성과 데이터 접근 속도 향상을 꾀할 수 있음
- 너무 많은 중복은 무결성 침해 원인이 될 수도 있음
파일관리 시스템 문제 |
1. 중복 데이터와 독립성 문제 2. 무결성 유지 어려움 |
DBMS 장점 |
1. 중복의 최소화 2. 데이터의 일관성 및 무결성 유지 |
스키마
외부 스키마 |
데이터베이스의 개개 사용자나 응용 프로그래머가 접근하는 데이터베이스 정의 - 하나의 데이터베이스 시스템에 여러 개 외부 스키마 존재할 수 있음 |
개념 스키마 |
범 기관적 입장에서 데이터베이스 정의. 모든 응용 시스템들이나 사용자들이 필요로 하는 데이터를 통합한 조직 전체의 데이터베이스 - 하나만 존재함. - 개념 스키마와 외부 스키마 사이에 논리적 데이터 독립성 제공 - 개념 스키마와 내부 스키마 사이에 물리적 데이터 독립성 제공 |
내부 스키마 |
저장 장치 입장에서 데이터베이스 전체가 저장되는 방법 명세. 개념 스키마에 대한 저장 구조 |
데이터베이스 설계
요구조건 분석 단계 |
데이터 및 처리 요구 조건 |
개념적 설계 단계 |
DBMS 독립적 개념 스키마 설계, 트랜잭션 모델링 |
논리적 설계 단계 |
목표 DBMS에 맞는 스키마 설계, 트랜잭션 인터페이스 설계 |
물리적 설계 단계 |
목표 DBMS에 맞는 물리적 구조 설계, 트랜잭션 세부 설계 |
구현 단계 |
목표 DBMS DDL로 스키마 작성, 트랜잭션 작성 |
- ISAM: 색인 순차 접근 방법. 인덱스 영역 / 데이터 영역 / 오버플로 영역
- VSAM: B+ 트리 인덱스 구조 사용
- 히프 파일: 레코드들은 키 순서와 관계없이 저장 가능
인덱스
- 기본키의 경우 자동으로 인덱스 생성, 인덱스 구축 시에 두 개 이상의 칼럼 결합하여 인덱스 생성 가능
- SQL 명령문 검색 결과는 인덱스 사용 여부 관계없이 동일하며 인덱스는 검색 속도에 영향 미침
- 모든 칼럼에 인덱스 생성 (X)
- 데이터 순차적 접근 (X) 인덱스는 순차 접근 안 해서 빠른 검색인 거임
파일 구조
|
특징 |
장점 |
단점 |
순차 파일 |
파일 내용 순차 접근만 가능 |
- 모든 데이터 순서대로 기록 - 저장공간 낭비 없음 - 순서대로 데이터 읽거나 저장할 때 빠름 |
- 새로운 데이터 삽입 삭제에 많은 시간 - 검색 효율이 낮음 |
인덱스 순차 파일 |
인덱스 사용하여 순차적인 접근 방법 |
- 다양한 접근 가능 - 효율적 검색, 삽입, 삭제, 갱신 용이 |
- 접근 시간이 직접 파일보다 느림 - 인덱스 위한 기억공간 필요 |
직접 파일 |
구성하는 레코드를 임의의 물리적 저장 공간에 기록 |
- 데이터 접근 매우 빠르고 효율적 삽입 삭제 갱신 - 물리적 주소로 레코드 직접 접근 기록해서 순서에 제약 없음 |
- 해시 함수 선정이 중요 |
- 레코드 접근 시간 가장 빠른 것: DAM
- 계층 데이터 모델, 관계 데이터 모델, 네트워크 데이터 모델: 논리적 데이터 모델
- 개체 관계도(ERD): 개념적 데이터 모델
- 계층형, 망형, 관계형, 객체지향형, 객체관계형 DBMS: 논리적 데이터 모델
ERD
1 : N 관계
- 1 측이 기본키를 N측 릴레이션에 외래키로 추가해야 함.
- 판매처(N), 주문(속성), 공장(1)
- 주문을 별도의 릴레이션으로 할 경우: 양 옆의 기본키 모두 외래키로 포함시켜야 함. 기본키는 N측의 기본키로
- N측이 1측의 기본키를 외래키로 가짐. 관계에 있는 속성을 N측이 가져감
N : M 관계
- 속성은 양 옆의 기본키를 모두 기본키이면서 외래키 역할로 사용
관계 모델링
- 릴레이션: 정보 저장의 기본 형태가 2차원 구조의 테이블
- 튜플: 테이블의 한 행을 구성하는 속성들의 집합
- 속성: 테이블의 각 열
- 도메인: 속성이 취할 수 있는 값들의 집합
- 차수: 속성의 개수
- 기수: 투플의 개수
- 속성은 원자값으로 분해가 불가능함. (튜플은 원자값으로 분해 불가능(X))
후보키 |
모든 튜플 유일 식별 속성의 부분집합 - 유일성, 최소성 만족 |
슈퍼키 |
모든 튜플 유일 식별 속성의 부분집합 - 유일성 만족 |
기본키 |
후보키 중 튜플 식별 기준 |
대체키 |
후보키 중 기본키로 선택되지 않은 나머지 후보키 |
외래키 |
어떤 릴레이션의 기본키 참조하는 속성 |
무결성 제약 조건
개체 무결성 제약 조건 |
기본 릴레이션의 기본키를 구성하는 어떤 속성도 널일 수 없고 중복 입력되지 않음 |
참조 무결성 제약 조건 |
외래키 값은 널이거나 참조 릴레이션에 있는 기본키와 같아야 함. 외래키의 도메인은 참조되는 릴레이션의 기본키의 도메인과 같다 |
도메인 무결성 제약 조건 |
특정 속성의 값은 그 속성이 정의된 도메인에 속한 값이어야 한다 |
뷰
- 뷰 테이블 기반 만들어지는 가상 테이블로 뷰 기반으로 새로운 뷰 생성 가능
- 뷰 삭제는 DROP. 뷰 생성에 기반이 된 기존 테이블들 영향 미치지 않음
- 뷰 생성에 기본키 구성하는 속성이 포함되어 있지 않은 뷰는 데이터 변경 불가능
- 뷰 검색 연산 = 기본 테이블과 동일 / 삽입, 삭제, 갱신 제약이 있음
- 정의 변경 불가능. ALTER문 사용 불가능
- 정의하고 싶으면 뷰 DROP하고 다시 뷰 CREATE 해야 함
관계 대수
정규화
수정 이상 |
반복된 데이터 중에 일부만 수정하면 데이터 불일치가 발생 |
삽입 이상 |
불필요한 정보를 함께 저장하지 않고는 어떤 정보를 저장하는 것이 불가능 |
삭제 이상 |
유용한 정보를 함께 삭제하지 않고는 어떤 정보를 삭제하는 것이 불가능 |
- 스키마 변환 시 정보의 무손실, 자료 중복의 감소, 관련된 구조 간의 분리의 원칙을 준수하여야 한다.
- 정보의 무손실: 하나의 스키마에서 다른 스키마로 변환시킬 때 정보의 손실이 있어서는 안 됨
- 최소의 데이터 중복성: 중복으로 인한 여러 이상을 제거할 수 있다
- 분리의 원칙: 하나의 독립된 관계성은 별도의 릴레이션으로 분리시켜 표현한다.
- 관계 대수의 연산에서 피연산자는 모두 릴레이션이고 연산결과도 릴레이션이다.
- 튜플을 구성하는 속성 사이에 존재하는 종속관계를 고려하여 하나의 릴레이션을 여러 릴레이션으로 분해하면 이상을 해결할 수 있다.
1정규형 |
어떤 릴레이션 R에 속한 모든 도메인이 원자값만으로 되어 있다면, 1정규형에 속한다 |
2정규형 |
속성은 모두 기본키의 완전함수 종속일 때 |
3정규형 |
모든 속성들이 기본키에 이행적 함수 종속이 아닐 때 |
BCNF |
모든 결정자가 후보키 |
도부이결다조
트랜잭션
- 트랜잭션의 성질 (ACID)
- 원자성(Atomicity): 트랜잭션은 전부, 전무 실행만 있고 일부 실행으로 트랜잭션 기능 가질 수 없음
- 일관성(Consistency): 트랜잭션이 그 실행을 성공적으로 완료하면 언제나 일관된 데이터베이스 상태가 됨
- 격리성(Isolation): 연산의 중간결과에 다른 트랜잭션이 접근 불가능
- 영속성(Durability): 트랜잭션은 일단 그 실행 성공적으로 끝나면 그 결과를 어떠한 경우라도 보장받음
회복과 동시성 제어
- 지연 갱신(deferred update): 트랜잭션에 의해 갱신된 값은 트랜잭션이 커밋될 때 데이터베이스에 적용됨
- 커밋되지 않은 트랜잭션에 의한 갱신 값은 데이터베이스에 적용되지 않으므로 그 전의 값을 갖고 있음.
- 지연갱신에는 undo를 하지 않음
- 즉시 갱신: 트랜잭션이 데이터베이스를 갱신한 사항이 주기억장치의 버퍼에 유지되다가 트랜잭션이 완료되기 전이라도 디스크의 데이터베이스에 기록될 수 있다.
- checkpoint 기준으로 이전에 commit된 작업에 대해서는 아무런 회복의 조치 취할 필요 없이 저장 보장
- checkpoint 기준으로 이후 작업들은 커밋된 작업은 REDO, 커밋되지 않은 작업은 UNDO 수행한다.
- 로킹 기법
- lock은 하나의 트랜잭션이 데이터를 접근하는 동안 다른 트랜잭션이 그 데이터를 접근할 수 없도록 제어하는 데 쓰인다.
- 트랜잭션이 로크한 데이터에 대해서는 해당 트랜잭션이 종료되기 전에 해당 데이터에 대한 언로크를 실행하여야 한다.
- 로킹의 단위가 작아질수록 로크 수가 많아서 관리가 복잡해지지만 병행성 수준은 높아지는 장점
- 2단계 로킹 규약을 적용하면 트랜잭션 직렬 가능성을 보장할 수 있음. 교착상태 발생 막을 수는 없음
SQL
- DDL (데이터 정의어): CREATE, ALTER, DROP, RENAME
- DML (데이터 조작어): INSERT, UPDATE, DELETE, SELECT
- DCL: GRANT, REVOKE
- TCL: COMMIT, ROLLBACK, CHECKPOINT
질의 최적화
질의 최적화 시에 사용하는 경험적 규칙:
- 추출(project) 연산은 일찍 수행한다.
- 조인(join) 연산은 가능한 한 나중에 수행한다.
- 선택(select) 연산은 가능한 한 일찍 수행한다.
- 중간 결과를 적게 산출하면서 빠른 시간에 결과를 줄 수 있어야 한다.
분산 데이터베이스
- 네트워크로 연결된 여러 사이트에 데이터베이스 자체가 분산되어 있으며, 데이터베이스 시스템도 여러 컴퓨터 시스템에서 운영된다.
- 다른 사이트에 저장된 데이터베이스에 접근할 수 있다. 사용자에게 데이터베이스가 분산되지 않은 것처럼 인식하게 만드는 것이 필요하다.
- 위치 투명성과 중복성이 제공된다.
- 각 지역 사이트마다 분산 DBMS가 운영된다.
- 서로 다른 DBMS를 사용해도 ODBC를 이용하여 상호 호환이 가능하다.
데이터 마이닝
- 신뢰도(confidence) 값: 트랜잭션 내의 비율