* 공부 정리일자 (2022년 8월 ~ 12월)
- 책 : 데이터베이스 배움터 (ORACLE을 기반으로 하는), 데이터베이스 개론 (2판), 데이터베이스 시스템 (해외서적 6판)
- 개인적으로 공부 및 복습하면서 정리한 내용입니다. (사진 제외)
* 목차
0강. 데이터베이스 소개
1강. 데이터베이스 시스템
1.1 데이터베이스 시스템 개요
1.1.1 데이터베이스 스키마와 상태
1.1.2 데이터베이스 시스템의 구성요소
1.1.3 데이터베이스 시스템의 요구사항
1.1.4 데이터베이스 시스템을 공부해야 하는 이유
1.2 화일 시스템 vs. DBMS
1.2.1 화일 시스템을 사용한 기존의 데이터 관리
1.2.2 화일 시스템의 단점
1.2.3 DBMS를 사용한 데이터베이스 관리
1.2.4 DBMS의 장점
1.2.5 DBMS의 단점
1.3 DBMS 발전 과정
1.3.1 데이터 모델 (계층, 네트워크, 관계, 객체지향 모델)
1.3.2 DBMS의 발전 과정
1.3.3 새로운 데이터베이스 응용과 DBMS의 분류
1.4 DBMS 언어
1.4.1 데이터 정의어 (DDL)
1.4.2 데이터 조작어 (DML)
1.4.3 데이터 제어어 (DCL)
1.5 DBMS 사용자 (DBA)
1.6 ANSI/SPARC 아키텍처와 데이터 독립성
1.6.1 ANSI/SPARC 아키텍처
- 외부 / 개념 / 내부 단계
1.6.2 데이터 독립성
- 논리적 / 물리적 데이터 독립성
1.7 데이터베이스 시스템 아키텍처
- 데이터베이스 API
- 중앙집중식 데이터베이스 시스템
- 분산 데이터베이스 시스템
- 클라이언트-서버 데이터베이스 시스템
제2장 관계 데이터 모델과 제약조건
2.1 관계 데이터 모델의 개념
2.1.1 기본적인 용어 (릴레이션)
2.1.2 스키마와 인스턴스
2.2 릴레이션의 특성
2.3 릴레이션의 키
- 수퍼, 후보, 기본, 대체, 외래 키 등
2.4 무결성 제약조건 – 데이터 무결성
2.4.1 도메인 제약조건 (domain constraint)
2.4.2 키 제약조건 (key constraint)
2.4.3 기본 키와 엔티티 무결성 제약조건 (entity integrity constraint)
2.4.4 외래 키와 참조 무결성 제약조건 (referential integrity constraint)
2.4.5 무결성 제약조건의 유지
- 삽입, 삭제, 제한, 연쇄, 널값, 디폴트값, 수정
제4장 관계 대수와 SQL (3장은 오라클 설치 파트, 생략)
4.1 관계 대수 (관계 해석, 관계형 대수, 관계 대수, SQL) - 질의를 관계 대수식으로 표현하기
4.1.1 필수적인 연산자 - 실렉션 연산자, 선택 연산 (Selection Operation)
4.1.2 필수적인 연산자 – 프로젝션 연산자, 추출 연산 (Projection Operation)
4.1.3 필수적인 연산자 – 집합 연산자 - 합집합 연산 (Union Operation) -- 두 결과값 합집합 (A이거나 B 검색)
4.1.4 필수적인 연산자 – 집합 연산자 – 교집합 연산자 (intersection) -- 두 결과값 교집합 (A이면서 B 검색)
필수적인 연산자 – 집합 연산자 – 차집합 연산자 (Set Difference Operation) - (R에는 속하지만 S에는 없는 값 검색)
필수적인 연산자 - 카티션 곱 연산자 (Cartesian-Product Operation) / 관계 대수의 완전성
편의유도 연산자 – 복삽 연산 / 재명명 연산 / 형식적 정의 / 조인 연산자 – 자연 조인 / 배정 연산
- 세타 조인(theta join), 동등 조인(equijoin), 자연 조인(natural join), 외부 조인(outer join), 세미 조인(semijoin) 등
4.1.5 디비전 연산자 (Division Operation)
4.1.6 관계 대수 질의의 예 / 4.1.7 관계 대수의 한계
4.1.8 추가된 관계 대수 연산자
(1) 외부 조인 (Outer Join)
(1) 왼쪽 외부 조인(left outer join), 오른쪽 외부 조인(right outer join), 완전 외부 조인(full outer join)
(2) 그룹화 / (3) 일반화 추출 / (4) 집단 함수
4.2 SQL 개요
4.3 데이터 정의어와 무결성 제약조건
4.3.1 데이터 정의어 (DDL)
4.3.2 제약조건
- 데이터 조작어 (DML) -
4.4 SELECT문 (일반 질의어 (Querying))
4.4.1 기본적인 SELECT문
4.4.2 조인
4.4.3 중첩 질의(nested query)
- 데이터베이스 수정 (modification)
4.5 INSERT, DELETE, UPDATE문
4.5.1 INSERT문
4.5.2 DELETE문
4.5.3 UPDATE문
4.6 트리거(trigger)와 주장(assertion)
4.6.1 트리거
4.6.2 주장
4.7 내포된 SQL
- Pro*C, 호스트 변수
- 불일치 문제와 커서, SQL 통신 SQLCA
4.4.1 기본적인 SELECT문
(1.1) 별칭(alias) - 재명명
(1.2) 릴레이션의 모든 애트리뷰트나 일부 애트리뷰트들 검색 *
(1.3) 상이한 값들을 검색 - (중복 값 정리, DISTINCT 절)
(1.4) 특정한 투플들의 검색 (검색 조건 명시 WHERE 절)
(1.5) 문자열 비교 ( % )
(1.6) 다수의 검색 조건 ( AND )
(1.7) 부정 검색 조건 ( 속하지 않는, DNO <> 1 )
(1.8) 범위를 사용한 검색 (범위, BETWEEN )
(1.9) 리스트를 사용한 검색 (소속, IN )
(1.10) SELECT절에서 산술 연산자 (+, -, *, /) 사용
(1.11) 널 값
(1.12) 검색 결과 정렬 - ( ORDER BY 절 )
(1.13) 집단 함수 ( count, sum, avg, max, min )
(1.14) 그룹화 ( GROUP MY 절 )
(1.15) 조건 만족 여부 ( HAVING 절 )
(1.16) 집합 연산
4.4.2 조인
(1) 조인 ( = )
(2) 자체 조인(self join)
4.4.3 중첩 질의(nested query)
- 하나의 투플, 다수의 투플, 상관 중첩 질의
제5장 데이터베이스 설계와 ER 모델
5.1 데이터베이스 설계의 개요
5.2 ER 모델 <- 엔티티-관계 (ER: Entity-Relationship) 모델
5.2.1 엔티티 (Entity, 개체)
5.2.2 엔티티 타입
- 엔티티 타입 (내포), 엔티티 집합 (외연)
- 강한 엔티티 타입 (키) / 약한 엔티티 타입 (소유)
5.2.3 애트리뷰트 (257p)
(1) 애트리뷰트 (attribute)
* 애트리뷰트의 도메인 / 키 애트리뷰트 (밑줄)
- 애트리뷰트(타원형)와 엔티티 타입(직사각형) -- 실선 연결
(2) 단순 (실선 타원)
- 더 이상 다른 애트리뷰트로 나눌 수 없는 애트리뷰트
(3) 복합
- 두 개 이상의 애트리뷰트로 이루어진 애트리뷰트
(4) 단일 값 <- 학생번호
- 각 엔티티마다 정확하게 하나의 값을 갖는 애트리뷰트
(5) 다치 (이중선 타원)
- 각 엔티티마다 여러 개의 값을 가질 수 있는 애트리뷰트
(6) 저장된 <- 학생이름, 급여
- 다른 애트리뷰트와 독립적으로 존재하는 애트리뷰트
(7) 유도된 (점선 타원)
- 다른 애트리뷰트의 값으로부터 얻어진 애트리뷰트
5.2.4 약한 엔티티 타입
* 약한 엔티티 타입 (이중선 직사각형)
- 키를 형성하기에 충분한 애트리뷰트들을 갖지 못한 타입
- 약한 엔티티타입의 부분 키 (점선 밑줄)
* 강 엔티티 타입 : ‘소유 엔티티 타입&식별 엔티티 타입’
5.2.5 관계와 관계 타입 (Relationship type)
(1) 관계와 관계 타입 (동사, 다이아몬드 표기)
(2) 관계의 애트리뷰트 – 설명속성 / (3) 차수 (degree)
(4) 카디낼리티 비율 (mapping cardinality)
- 1 : 1, / 1 : 다 / 다 : 다
- 최소값과 최대값 (min, max, min=0, max=*)
(5) 역할 (role) - 관계에서의 역할 (반드시 표시)
(6) 전체 참여 (=) / 부분 참여 (-) <-- 관계타입 연결선
- 약한 엔터티 타입은 항상 관계에 전체 참여 (이중 실선)
(7) 다중관계, 순환관계
5.2.6 ER 스키마를 작성하기 위한 지침
5.2.7 데이터베이스 설계 과정
* 데이터베이스 설계 과정 (자세한 내용 정리본 참고!)
* ER 표기법 요약
5.2.8 ER 모델의 또 다른 표기법
- 새발 표기법 있음.
5.3 데이터베이스 설계 사례 (데이터 요구분석서)
* 데이터베이스 설계의 주요 단계 (6가지)
1. 요구사항 수집 및 분석 => (데이터)요구 분석서 : 개체 별 설명 문장 (명사 + 동사 )
2. 개념적 설계 => ER-Model (E+ att , R + 매핑수 + …) <-- 개념적 스키마, ER 다이어그램 기반.
3. DBMS의 선정 => DBMS S/W
4. 논리적 설계, 스키마 정제 => R-Model (릴레이션 스키마 + 외래키) <-- 관계 데이터베이스 스키마, 정규화 과정
5. 물리적 설계 => 인덱스, 해시 설계
6. 트랜잭션 설계, 구현 및 튜닝 => DDL(create) + DML(insert)
<일반적으로, 데이터베이스 설계의 완성도를 높이기 위해서 각 단계/작업들을 앞뒤로 반복할 필요가 있음>
5.4 논리적 설계: ER 스키마를 관계 모델의 릴레이션들로 사상
* ER 스키마를 관계 모델의 릴레이션으로 사상
5.4.1 ER-릴레이션 사상 알고리즘 (mapping)
* ER - 관계 사상 알고리즘
* 단계 1 : 정규 엔티티 타입과 단일 값 애트리뷰트
* 단계 2 : 약한 엔티티 타입과 단일 값 애트리뷰트
* 단계 3 : 2진 1 : 1 관계 타입
* 단계 4 : 정규 2진 1 : N 관계 타입
* 단계 5 : 2진 M : N 관계 타입
* 단계 6 : 3진 이상의 관계 타입
* 단계 7 : 다치 애트리뷰트
5.4.2 데이터베이스 설계 사례에 알고리즘 적용
제7장 릴레이션 정규화
7.1 정규화 개요
(0) 좋은 관계 데이터베이스 스키마를 설계하는 목적
(1) 수정 이상 (정보의 중복)
(1.1) 갱신 이상
- 반복된 데이터 중에 일부만 수정하면 데이터의 불일치가 발생 (여러 번 수정 필요)
(1.2) 삽입 이상
- 불필요한 정보를 함께 저장하지 않고는 어떤 정보를 저장하는 것이 불가능
(1.3) 삭제 이상
- 유용한 정보를 함께 삭제하지 않고는 어떤 정보를 삭제하는 것이 불가능
(2) 릴레이션 분해
(3) 정규형(normal form)의 종류 <- 제1정규형, 제2정규형, 제3정규형, BCNF
(4) 관계 데이터베이스 설계의 비공식적인 지침 (지침 4가지)
7.2 함수적 종속성
(1) 함수적 종속성의 개요
(2) 결정자 (A → B) <- A is B / 사원번호 -> 사원이름
(3) 함수적 종속성
(4) 완전 함수적 종속성 (FFD)
(5) 이행적 함수적 종속성 (transitive FD, A→B ∧ B→C )
7.3 릴레이션 분해(decomposition)
(1) 릴레이션 분해
(2) 무손실 분해 (lossless decomposition)
7.4 제1정규형, 제2정규형, 제3정규형, BCNF
7.4.1 제1정규형
- 반복 그룹 애트리뷰트에 나타나는 집합에 속한 각 값마다 하나의 투플로 표현
- 모든 반복 그룹 애트리뷰트들을 분리해서 새로운 릴레이션에 넣음.
-- 원래 릴레이션의 기본 키를 새로운 릴레이션에 애트리뷰트로 추가함
7.4.2 제2정규형 - 부분 함수적 종속성 문제 해결
- 릴레이션 R이 제1정규형을 만족하면서,
- 어떤 후보 키에도 속하지 않는 모든 애트리뷰트들이 R의 기본 키에 완전하게 함수적으로 종속하는 것
7.4.3 제3정규형 - 수정 이상 / 갱신 이상, 삽입 이상, 삭제 이상 확인!
- 릴레이션 R이 제2정규형을 만족하면서,
- 키가 아닌 모든 애트리뷰트가 릴레이션 R의 기본 키에 이행적으로 종속하지 않는 것
7.4.4 BCNF - 수정 이상 / 갱신 이상, 삽입 이상, 삭제 이상 확인!
-- 릴레이션 R이 제3정규형을 만족하고,
-- 모든 결정자가 후보 키이어야 함
7.4.5 여러 정규형의 요약
7.4.6 ER 다이어그램과 정규화
7.5 역정규화
- 역정규화는 보다 낮은 정규형으로 되돌아가는 것
'프로그래밍 공부 > DataBase (DB)' 카테고리의 다른 글
[ 데이터베이스 이론 ] 공부 정리 - 4강. SQL INSERT, DELETE, UPDATE문 (0) | 2023.05.19 |
---|---|
[ 데이터베이스 이론 ] 공부 정리 - 4강. SQL SELECT문 (1) | 2023.05.19 |
[ 데이터베이스 이론 ] 공부 정리 - 3강. 관계 대수 (관계 데이터 모델) (0) | 2023.05.19 |
[ 데이터베이스 이론 ] 공부 정리 - 2강. 관계 데이터 모델과 제약조건 (0) | 2023.05.17 |
[ 데이터베이스 이론 ] 공부 정리 - 1강. 데이터베이스 시스템 (1) | 2023.05.17 |