정보처리기사 필기 준비하며 정리한 내용입니다.
데이터베이스
정의
- 공유 데이터
- 저장 데이터
- 통합 데이터
- 운영 데이터
특징
- 실시간 접근성 - 즉시 처리
- 계속적인 변화 - 항상 최신
- 동시 공유 - 동시에
- 내용에 의한 참조 - 주소가 아닌 내용!
- 데이터의 독립성 - 서로 영향X
데이터 언어
- DDL - 정의 → 스키마에 사용되는 제약 조건을
- DML - 조작 (검색, 삽입, 삭제, 갱신 연산)
- DCL - 제어
스키마
- 데이터베이스 구조와 제약조건에 관한 명세
- 데이터 사전에 저장된다 (사용자는 수정 불가)
- 3계층 스키마
- 외부 스키마 - 여러개. 사용자 뷰
- 개념 스키마 - 전체적인 뷰. 스키마 대표
- 내부 스키마 - 저장장치의 입장에서 본 데이터베이스 구조
데이터베이스 관리 시스템 DBMS
DB와 뗄 수 없는 관계
기능
- 데이터 정의
- 데이터 조작
- 데이터 제어
종류
- 계층형 - 트리구조, 다대다 불가
- 네트워크형 - 망 형, 다대다 가능, CODASYL이 제안
- 관계형 - 테이블 구조, SQL 사용
- RDBMS 관계형 데이터베이스 관리 시스템의 종류
- ORACLE
- MSSQL
- MYSQL
- DB2
- RDBMS 관계형 데이터베이스 관리 시스템의 종류
- 객체 지향형 - 객체
- 객체 관계형 - 관계형 데이터베이스 + 객체 지향 개념 도입
- NoSQL - Not only SQL. SQL뿐만 아니라 다양한 특성 지원한다. 비정형 데이터도 지원한다(영상같은것)
- NewSQL - RDBMS의 SQL + NoSQL
데이터베이스 설계
데이터베이스 설계 시 고려사항
- 제약조건
- 데이터베이스 무결성
- 일관성
- 회복
- 보안
- 효율성
- 데이터베이스 확장성
데이터베이스 설계 단계
- 요구조건 분석
- 모델링
- 개념적 설계
- ERD 만듦
- DBMS에 독립적으로 설계
- 트랜잭션 모델링 및 정의 ⭐
- 논리적 설계
- 특정 DBMS(계층형, 관계형, 객체지향형)의 논리적 자료 구조로 변환
- 정규화 수행
- 목표 DBMS에 맞는 스키마 설계
- 트랜잭션 인터페이스 설계 ⭐
- 물리적 설계
- 저장장치 입장에서
- 성능 향상
- 트랜잭션 세부 설계 ⭐
- 특정 DBMS(ex.관계형 중 특정해서 어떤것)
- 구현
데이터모델링 및 설계
종류
- 계층형 모델 → 트리
- 망형 데이터 모델 → 그래프
- 관계형 데이터 모델 → 표
- 객체 지향형 데이터 모델 → 객체
구분
- 개념적 데이터모델 - 대표적 ERD
- 논리적 데이터 모델 - 표
- 물리적 모델 - for 저장장치
데이터모델의 구조
- 개체 = 표 = 테이블 = 릴레이션
- 개체 타입 : 속성 집합
- 속성=attribute=필드=컬럼 : 데이터의 가장 작은 논리적 단위
- 카디널리티=개체 세트 : 개체 인스턴스(=행=튜플=레코드)의 집합
- 개체 인스턴스=행=튜플=레코드
- 관계 : 개체와 개체의 연관성
데이터모델 표시해야 할 요소 ⭐
- 구조
- 연산
- 제약조건
1️⃣개념적 데이터 모델링
개체-관계 모델 Entity Relation Model
특정 DBMS 및 하드웨어에 독립적
- 구성요소
- 개체 - 사각형
- 속성=애트리뷰트 - 원
- 단일 값 속성 - 값 하나
- 다중 값 속성 - 값 여러개
- 단순 속성 - 더는 분해 불가
- 복합 속성 - 분해 가능
- 유도 속성 - 유도/유추되어 결정됨
- 관계 - 마름모
- 1 : 1
- 1 : N
- N : M
- 세발 표기법
- ER다이어그램 기호
- 사각형 - 개체
- 마름모 - 관계
- 타원 - 속성
- 밑줄 타원 - 기본키 속성
- 이중 타원 - 복합 속성
- 선 - 개체와 속성 연결
2️⃣논리적 데이터 모델링
논리적 모델링
- 모든 데이터 정규화하여 모델링 → 표로 표현
- 특정 DBMS로부터 독립적
종류
- 관계형 - 표
- 계층형 - 트리
- 네트워크형 - 그래프
- 객체지향형 - 객체 다이어그램
📌데이터베이스 정규화
잘게 쪼개는 것. 중복 최소화. 무결성 유지. 저장용량 줄임
- 목적
- 중복 최소화
- 정보 무손실
- 독립적인 관계는 별개의 표로
- 검색 용이 BUT 느려짐
- 이상현상 최소화
- 장점
- 데이터 중복 최소화
- 저장 공간 효율적 사용
- 이상 현상 제거
- 단점
- 처리 명령 복잡
- JOIN 연산 필요
- 실행 속도 저하
- 참조 무결성 유지 필요
- 이상 현상
- 데이터 중복으로 인한 예상하지 못한 곤란한 현상
- 종류
- 삽입 이상 : 불필요 데이터 함께 삽입
- 삭제 이상 : 연쇄 삭제로 정보 손실
- 갱신 이상 : 일부 정보만 갱신되어 정보에 모순 발생
- 함수적 종속Y는 X에 함수적 종속 = X를 알면 Y를 알 수 있다
- 완전 함수적 종속
- 부분적 함수 종속
- 기본키가 여러 속성인 경우 그 중 일부에만 종속되는 경우
- 이행적 함수 종속
- X→Y, Y→Z 일 때 X→Z가 성립되어버리는 경우
- X → Y
- 정규화 과정
- 비정규 릴레이션
- 도메인이 원자값only
- 릴레이션을 분리하여 속성이 원자값으로만 구성되게 한다
- 도메인이 원자값only
- 1차 정규화
- 부분적 함수 종속 제거
- 릴레이션 분리
- 부분적 함수 종속 제거
- 2차 정규화
- 이행적 함수 종속 제거
- X→Y, Y→Z릴레이션 분리
- 이행적 함수 종속 제거
- 3차 정규화
- 결정자이면서 후보키가 아닌 것 제거
- BCMF
- 다치 종속 제거
- 4차 정규화
- 조인 종속성 이용/제거
- 5차 정규화
- 비정규 릴레이션
논리 데이터 모델의 품질 기준
- 정확성
- 완전성
- 준거성
- 최신성
- 일관성
- 활용성
📌관계 DB 모델
관계 데이터 릴레이션의 구조
- 속성
- 속성의 수 = 디그리degree = 차수
- 튜플 = 행 = 레코드 = 인스턴스
- 튜플의 수 = 커디널리티 = 기수
- 도메인 : 속성이 가질 수 있는 값의 범위
- 차수 : 속성의 전체 개수
- 카디널리티 : 튜플의 전체 개수
릴레이션
테이블
- 구성
- 릴레이션 스키마 = 구조
- 릴레이션 인스턴스=행=튜플 : 저장된 데이터 집합
- 특징
- 튜플의 유일성
- 튜플의 무순서성
- 속성의 무순서성
- 속성의 원자성
- 수시로 변한다
관계데이터 언어
관계대수와 관계해석은 동일한 능력
1) 관계 대수
피연산자와 결과 모두 표
절차적인 언어
- 순수 관계 연산자
- SELECT
- 조건 만족하는 튜플을 가지고 오는 것
- 시그마 기호
- PROJECT
- 내가 필요한 속성 값만 추출
- 파이 기호
- JOIN
- 튜플 결합
- 보타이 기호
- DIVISION
- S의 모든 튜플과 관련이 있는 R의 튜플을 반환한다
- S는 나오지 않는다
- S를 모두 만족시켜야 한다
- SELECT
- 일반 집합 연산자
- 합집합
- 교집합
- 차집합 : 중복 빼기
- 교차곱 : X
2) 관계해석
비절차적 특성
📌시스템 카탈로그
시스템 테이블 = 데이터 사전
개발자가 만드는 것이 아니라 DB가 자체적으로 생성한다.
접근만 가능하고 수정은 불가하다.
내용
- 릴레이션 관련 정보
- 인덱스 관련 정보
- 뷰 관련 정보
- 통계 관련 정보
- 사용자 관련 정보
특징
테이블로 구성되어 있어 사용자도 SQL 문을 이용하여 내용을 검색해볼 수 있다
갱신은 허용되지 않는다
DBMS가 생성하고 유지한다