정처기 필기: 3과목 - 데이터베이스 구축

윤뿔소·2024년 2월 18일
0

정보처리기사

목록 보기
5/7

데이터베이스

설계 순서

개논물

  • 개념적 설계
    목표 DBMS에 독립적 개념 스키마 설계, E-R D트랜잭션 모델링 설계.
  • 논리적 설계
    목표 DBMS에 종속적 논리 스키마 설계, 논리적 데이터 모델 변환 및 트랜잭션 인터페이스 설계. 개념 스키마 평가.
  • 물리적 설계
    목표 DBMS에 종속적 물리 스키마 설계, 접근 경로 및 트랜잭션 세부 설계.

E-R 다이어그램

DB 모델 중 개념 데이터 모델에 해당. 현실 세계의 관계를 실제 도식으로 개체 타입 및 관계를 정의해줌.


정규화

데이터베이스 설계 과정에서 데이터 중복을 최소화하고, 데이터 무결성을 유지하기 위해 데이터를 구조화하는 프로세스.

목적

  • 데이터 구조 안정성 최대화
  • 데이터 중복 최소화
    중복 데이터를 줄여 저장 공간을 효율적으로 사용하고, 데이터 간의 불일치 가능성을 감소.
  • 데이터 무결성 보장
    데이터베이스 내의 데이터 정확성과 일관성을 유지.
  • 수정 및 삭제 등 업데이트 이상 방지 => Anomaly(이상 현상) 최소화
    • 삽입 이상(Insertion Anomaly) : 넣을 때
    • 삭제 이상(Deletion Anomaly) : 지울 때
    • 수정(갱신) 이상(Update Anomaly) : 바꿀 때

*정규화 수행 과정 (도 부 이 결 다 조)

제거 후 어떤 상태인지 문제가 나옴. 도부이결다조 = 두부이걸다줘? 앞글자만 따서 순서외우면 편함

  • 1차 정규화(1NF) : 원자값 아닌 도메인 분해(도)

  • 2차 정규화(2NF) : 부분 함수 종속 제거(부)

  • 3차 정규화(3NF) : 이행 함수 종속 제거(이)

  • 보이스-코드 정규화(BCNF) : 결정자가 후보키가 아닌 것 제거(결)

  • 4차 정규화(4NF) : 다치 종속 제거(다)

  • 5차 정규화(5NF) : 조인 종속 제거(조)

ex) 도메인이 원자값만 구성, 키의 부분 집합이 결정자가 되는 부분 종속이 존재X, 모든 함수적 종속에서 결정자이면서 후보키인 정규형은?
BCNF

DB 언어 종류(DDL, DML, DCL)

Chat GTP 가공함.

데이터베이스 관리 시스템(DBMS)에서 데이터 정의, 조작, 제어를 위해 사용되는 언어로, 주로 DDL(Data Definition Language), DML(Data Manipulation Language), DCL(Data Control Language)로 구분.
데이터베이스 시스템의 설계, 구현, 유지보수 역할을 함.

DDL (Data Definition Language) - 데이터 정의어

  • 목적: 데이터베이스 스키마를 정의하거나 변경하기 위한 명령어들의 집합입니다. 가상 및 인덱스(색인) 포함
  • 주요 명령어:
    • CREATE: 새로운 테이블, 뷰, 인덱스 등의 데이터베이스 객체를 생성합니다.
    • ALTER: 기존의 데이터베이스 객체(구조)를 수정합니다.
    • DROP: 데이터베이스 객체를 삭제합니다.
  • 특징: DDL 명령어는 데이터베이스의 구조를 정의하는데 사용되며, 실행 시 데이터베이스의 메타데이터가 변경됩니다.
  • CASCADE: 연쇄 작용이라는 뜻으로, DROP 문에서 사용되는 옵션이다. 스키마, 도메인, 테이블이 다른 테이블과 연결돼 있을 때 그 연결된 외부 데이터를 삭제할 수 있게 옵션 추가 가능, 삭제하지 않게 하려면 RESTRICT 쓰면 됨.

DML (Data Manipulation Language) - 데이터 조작어

  • 목적: 데이터를 저장, 검색, 수정, 삭제 등을 위한 명령어들의 집합입니다.
  • 주요 명령어:
    • SELECT: 데이터베이스에서 데이터를 조회합니다.
    • INSERT: 테이블에 새로운 데이터를 추가합니다.
    • UPDATE: 테이블의 데이터를 수정합니다.
    • DELETE: 테이블의 데이터를 삭제합니다.
  • 특징: DML은 데이터 자체를 조작하는 데 사용되며, 실제 데이터베이스 내의 데이터에 영향을 줍니다.

DCL (Data Control Language) - 데이터 제어어

  • 목적: 데이터베이스 시스템에서 데이터 보안, 무결성 제어, 회복, 병행 수행을 관리하기 위한 명령어들의 집합입니다.
  • 주요 명령어:
    • COMMIT: 명령에 의해 수행된 결과를 실제 물리적 디스크로 저장하고, 데이터베이스 조작 작업이 정상적으로 완료되었음을 관리자에게 알림.
    • ROLLBACK: 데이터베이스 조작 작업이 비정상적으로 종료되었을 때 원래의 상태로 복구.
    • GRANT: 사용자에게 데이터베이스 객체에 대한 접근 권한을 부여합니다.
    • REVOKE: 사용자의 데이터베이스 객체 접근 권한을 제거/취소합니다.
  • 특징: DCL은 데이터베이스의 보안, 접근 권한과 관련된 명령어로 구성되어 있으며, 주로 데이터베이스 관리자에 의해 사용됩니다.

기본 테이블을 활용한 기능들: View, System Catalog

View: 가상 테이블

사용자에게 제한적인 데이터를 보여주거나 데이터 보호를 위해 기본 테이블에서 빼와 운영되는 가상의 테이블 같은 것.

  • 뷰의 생성 시 CREATE 문, 검색 시 SELECT 문을 사용한다.
  • 뷰의 정의 변경시 ALTER 문을 사용할 수 없고 DROP 문을 이용한다.
  • 뷰를 이용한 또 다른 뷰의 생성이 가능하다.
  • 하나의 뷰 제거 시 그 뷰를 기초로 정의된 다른 뷰도 함께 삭제된다.
  • 뷰 위에 또 다른 뷰를 정의할 수 있다.
  • DBA는 보안 측면에서 뷰를 활용할 수 있다.
  • 뷰는 물리적으로 존재하지 않는 가상화된 테이블이다.

System Catalog: 시스템 카탈로그 = 데이터 사전 : Data Dictionary

  • 시스템 자신이 필요로 하는 여러 가지 객체(기본 테이블, 뷰, 인덱스, 데이터베이스, 패키지, 접근 권한 등)에 관한 정보를 포함하고 있는 시스템 데이터베이스이다.
    => DBMS가 관리한다.
  • 사용자가 시스템 카탈로그를 직접 갱신할 수 없다.
  • 시스템 카탈로그(System Catalog) = 데이터 사전(Data Dictionary) = 메타 데이터(Meta Data)
  • 시스템 카탈로그 자체도 시스템 테이블로 구성되어 있어 SQL 문을 이용하여 내용 검색이 가능하다.
  • SQL 문으로 여러 가지 객체에 변화를 주면 시스템이 자동으로 갱신한다.

데이터 조작문(SELECT FROM, INSERT INTO... )

SELECT문 기본 구조

  • SELECT 속성명 [ALL | DISTINCT | …]
    • FROM 릴레이션명
    • WHERE 조건; : 어디에서 가져오느냐의 조건
      - IN (조건); : WHERE의 "어디에서"를 정할 수 있는 조건
    • [GROUP BY 속성명1, 속성명2,…]
    • [HAVING 조건] : 결과값을 거르는 조건 , HAVING을 쓰려면 GROUP BY 필수
    • [ORDER BY 속성명 [ASC | DESC]];
  • UNION: 각 쿼리 결과의 합집합을 나타냄(보통 ALL과 쓰임)
  • ALL : 모든 튜플을 검색 (생략가능, 기본값)
  • DISTINCT : 중복된 튜플 생략

예시 문제

1. 다음 테이블을 보고 강남지점의 판매량이 많은 제품부터 출력되도록 할 때 다음 중 가장 적절한 SQL구문은? (단, 출력은 제품명과 판매량이 출력되도록한다.)

① SELECT 제품명, 판매량 FROM 푸드 ORDER BY 판매량 ASC;
② SELECT 제품명, 판매량 FROM 푸드 ORDER BY 판매량 DESC;
③ SELECT 제품명, 판매량 FROM 푸드 WHERE 지점명 = '강남지점’ ORDER BY 판매량 ASC;
④ SELECT 제품명, 판매량 FROM 푸드 WHERE 지점명 = '강남지점' ORDER BY 판매량 DESC;

정답
4번: 매량이 많은 제품부터 출력되도록 하려면 내림차순 정렬을 적용해야 한다. SQL에서 정렬은 ORDER BY을 사용하며 내림차순은 DESC를 사용한다. 오름차순의 경우 생략이나 ASC를 사용한다.

2. R2 테이블에서 과목이름별 점수가 90점 이상인 학생이 1명 이상 인 과목이름을 검색하시오.

  • SELECT 과목이름, COUNT(*) AS 학생수
    • FROM R2
    • WHERE 점수 〉= 90
    • GROUP BY 과목이름
    • HAVING COUNT(*) >= 1;

HAVING을 쓰려면 GROUP BY 필수

3. 다음과 같은 조건을 검색하는 SQL 명령문은?

  • 부서번호가 D1, D2, D3인 사원의 사원명을 검색하시오(IN연산자를 반드시 사용하시오).
  • 사원 테이블(TBL)은 사원명(ENAME) 속성과 부서번호(DNO) 속성으로 구성되어 있다.

① SELECT ENAME, DNO FROM TBL WHERE DNO IN (‘D1’, ‘D2’, ‘D3’);
② SELECT ENAME FROM TBL WHERE DNO IN (‘D1’, ‘D2’, ‘D3’);
③ SELECT ENAME WHERE DNO IN (‘D1’, ‘D2’, ‘D3’);
④ SELECT ENAME FROM DNO WHERE DNO IN (‘D1’, ‘D2’, ‘D3’);

정답
2번

관계형 DB

용어

  • 릴레이션(Relation) : 데이터들을 표 형태로 표현한 것.
  • 릴레이션 스키마 : 구조를 나타내는 릴레이션.
  • 릴레이션 인스턴스 : 실제 값들.
  • 튜플(Tuple) : 릴레이션을 구성하는 행(가로).
  • 속성(Attribute) : 릴레이션을 구성하는 열(세로).
  • 도메인(Domain) : 하나의 속성이 취할 수 있는 같은 타입의 원자 수, 성별 속성의 도메인은 남,여.
  • 카디널리티(Cardinality) : 튜플의 수(기수)
  • 디그리(Degree) : 속성의 수(차수)
    => 튜카애디, 튜기애차
  • 카티션 프로덕트(Cartesian product) : 두 릴레이션의 튜플을 교차 곱함 집합 연산자.
    => 릴레이션의 R의 차수가 3이고 카디널리티가 3이며, 릴레이션의 S의 차수가 4이고 카디널리티가 4일 때, 두 개의 릴레이션을 카티션 프로덕트한 결과의 새로운 릴레이션의 차수와 카디널리티는 얼마?
    RS 릴레이션 : 차수(Degree) = 3 + 4 = 7, Cardinality(기수) = 3 * 4 = 12

관계형 DB 릴레이션 예시

관계 대수, 순수 관계 연산자

  • 절차적 언어
  • 순수 관계 연산자, 기호랑 뭐가 있는지만 확인, 프로젝트는 파이(π)다! 시그마(Σ,σ)는 수평적 부분집합임.

해싱

해시(HASH) 암호화 방식

  • 임의의 길이의 메시지를 입력으로 하여 고정된 길이의 출력값으로 변환하는 기법

해싱 함수의 종류

=> 개방주소(방)법은 절대 아님!! 개방주소법은 해싱으로 인해 생긴 오버플로 해결법임.

  • 제산 방법(Division Method) : 나머지 연산자(%)를 사용하여 테이블 주소를 계산 하는방법
  • 중간 제곱 방법(Mid-Square Method) : 레코드 키 값을 제곱한 후에 결과 값의 중간 부분에 있는 몇 비트를 선택하여 해시 테이블의 홈 주소로 사용하는 방법
  • 중첩 방법(폴딩, Folding Method) : 해싱함수 중 레코드 키를 여러 부분으로 나누고, 나눈 부분의 각 숫자를 더하거나 XOR한 값을 홈 주소로 삼는 방식
  • 기수 변환 방법(Radix Conversion Method) : 레코드 키를 구성하는 수들이 모든 키들 내에서 각 자리별로 어떤 분포인지를 조사하여 비교적 고른 분포를 나타내는 자릿수를 필요한 만큼 선택, 레코드의 홈 주소로 사용하는 방법
  • 무작위 방법(Random Method) : 난수를 발생시킨 후 그 난수를 이용해 각 키의 홈 주소를 산출하는 방법
  • 계수 분석 방법(Digit Analysis Method) : 레코드 키를 구성하는 수들이 모든 키들 내에서 각 자리별로 어떤 분포인지를 조사하여 비교적 고른 분포를 나타내는 자릿수를 필요한 만큼 선택, 레코드의 홈 주소로 사용하는 방법

트랜잭션(Transaction)

하나의 논리적 기능을 수행하기 위한 작업 단위. DB 연산 집합.
사용자의 시스템에 대한 서비스 요구 시 시스템의 상태변환 과정의 작업 단위.

트랜잭션의 특성(ACID)

  • 원자성(Atomicity) : 완전하게 수행 완료되지 않으면 전혀 수행되지 않아야 한다.
  • 일관성(Consistency) : 시스템의 고정 요소는 트랜잭션 수행 전후에 같아야 한다.
  • 격리성(Isolation, 고립성) : 트랜잭션 실행 시 다른 트랜잭션의 간섭을 받지 않아야 한다.
  • 지속성(Durability, 영속성) : 트랜잭션의 완료 결과가 데이터베이스에 영구히 기억된다.

그 외 짜잘

n개의 노드로 구성된 무방향 그래프의 최대 간선 수는?

등차수열의 합 공식을 사용하여 계산

  1. n-1
  2. n/2
  3. n(n-1)/2
  4. n(n+1)

파일 편성 방법

  • 순차 파일 : 물리적으로 연속된 위치에 순차적으로 기록
  • 색인(Index) 파일 : 데이터 레코드를 지정해 색인(인덱스)를 지정해 기록
    • 인덱스 구역은 트랙, 실린더, 마스터 인덱스로 구성됨.
    • 당연히 여기도 인덱스를 저장하거나 오버플로 처리할 수 있는 공간이 필요하다.
    • 기본 영역과 오버플로 영역 구분 X.

OLAP(on-line analytical processing) 연산 종류

translate 아님!!

roll-up, drill-down, dicing, slicing

Honeypot

비정상적인 접근을 탐지하기 위해 의도적으로 설치해 둔 시스템을 의미
=> 보안 쪽

테이블 키 무결성

키란 데이터베이스에서 조건에 만족하는 튜플을 찾거나 순서대로 정렬할 때, 기준이 되는 속성.

  • 기본키(Primary Key) : 중복된 값을 가질 수 없고, NULL 값을 가질 수 없다.
    => 학번이나 주민번호 등 없는 학생이 없기 때문에 가능
  • 외래키(Foreign Key) : 다른 릴레이션의 기본키를 참조하는 속성 또는 속성들의 집합을 의미.
  • 슈퍼키(유일성은 만족하지만, 최소성은 만족하지 못함.), 대체키 등등
  • 개체 무결성
    기본 테이블의 기본키를 구성하는 어떤 속성도 NULL 값이나 중복값을 가질수 없다는 규정.
    => 학번이나 주민번호 등 없는 학생이 없음.
  • 참조 무결성
    외래키 값은 NULL이거나 참조 릴레이션의 기본키 값과 동일해야 함. 즉, 릴레이션은 참조할 수 없는 외래키 값을 가질 수 없다는 규정.
    => 다른 관계에 존재하는 튜플을 참조하기 위해 사용되는 속성의 값은 참조되는 테이블의 튜플 중에 해당 속성에 대해 같은 값을 갖는 튜플이 존재해야 한다는 제약.

로킹(Locking)

  • 한꺼번에 로킹할 수 있는 크기를 로킹 단위라고 한다.
  • 데이터베이스, 파일, 필드, 레코드 등은 로킹 단위가 될 수 있다.
  • 로킹의 단위가 작아지면, 데이터베이스 공유도가 증가한다.
  • 로킹의 단위가 작아지면, 로킹 오버헤드가 증가한다.

분산 데이터베이스의 목표

  1. Location Transparency (위치 투명성)
    데이터베이스의 실제 위치를 알 필요 없이 단지 데이터베이스의 논리적 명칭만으로 액세스할 수 있음
  2. Replication Transparency (중복 투명성; 복제 투명성)
    동일 데이터가 여러 곳에 중복되어 있더라도 사용자는 마치 하나의 데이터만 존재하는 것처럼 사용하고, 시스템은 자동으로 여러 자료에 대한 작업을 수행
  3. Failure Transparency (장애 투명성)
    장애가 발생해도 트랜잭션을 정확하게 처리하고 데이터 무결성을 보장함
  4. Concurrency Transparency (병행 투명성)
    다수의 트랜잭션들이 동시에 실현되더라도 그 트랜잭션의 결과는 영향을 받지 않음
  5. Division Transparency (분할 투명성)
    하나의 논리적 릴레이션이 여러 단편으로 분할되어 각 단편의 사본이 여러 시스템에 저장되어 있음을 인식할 필요가 없음
profile
코뿔소처럼 저돌적으로

0개의 댓글