제 1장 데이터베이스
1. 파일처리 방식
1.1 파일처리 방식의 개념
1.2 파일처리 방식의 문제점 : 데이터 중복, 표준화된 관리 불가능, 유연성 부족으로 통합된 정보취득 어려움, 응용프로그램 관리와 개발 부담
2. 데이터베이스 방식
2.1 데이터베이스 방식의 개념
2.2 데이터베이스 방식의 이점 : 효율적인 데이터 접근, 관리 효율적, 무결성 보장, 독립성 보장, 동시 접근과 손상복구, 개발시간 단축
2.3 데이터베이스의 구성 : 하드웨어, 소프트웨어, 사용자(데이터 관리자, 데이터베이스 관리자, 애플리케이션 관리자, 최종 사용자), 데이터, 메타데이터(속성 기술 데이터)
3. 데이터 모델 : 한눈에 구조 쉽게 보여주기 위한 모형
3.1 데이터 모델의 분류
1) 상위 데이터 모델 : 개체관계성도 (개체, 관계성, 속성으로 구분해 표현)
2) 실행 데이터 모델 : 상위를 바탕으로 보다 구체적으로 표현
3) 하위 데이터 모델 : 저장되는 방법, 형태 등에 대한 명세
3.2 스키마 : 데이터 정보를 표현한 논리적 구조, 데이터베이스에 존재하는 모든 자료의 내용, 특징, 정보를 포함한다.
1) 외부단계 (외부 스키마) : 상위 or 실행 데이터 모델로 표현됨. 사용자 관점 (전체 데이터베이스에서 사용자가 원하는 일부분만 추출)
2) 개념단계 (개념적 스키마) : 상위 or 실행 데이터 모델로 표현됨. 전체 데이터베이스의 논리적 구조를 하나의 개념적 스키마로 기술 (DB 관리자만 접근 가능)
3) 내부단계 (내부 스키마) : 하위 데이터 모델로 표현됨. 물리적 저장구조, 하드디스크 상 저장 위치 정보
제 2장 개체관계성 모델
1. 개체관계성 모델 : 개체와 관계성을 이용해 기업데이터를 구체적으로 설계. 개체관계성도를 이용해 도식화
2. 개체 : DB에서 표현하고자 하는 유무형의 대상
2.1 개체의 개념 : [고객 (개체) - 고객번호, 고객성명, 고객주소, 고객나이 등 (속성)] = 개체집합 , [고객1 - 1006, 안뭉도, 서울시 성동구, 24 등] = 개체 인스턴스
2.2 속성의 개념 : 식별자속성, 합성식별자속성, 유도속성, 단일값속성, 다중값속성, 원자속성, 합성속성, 공값속성, 필수:선택속성
2.3 종속개체집합의 개념 : [직원: 직원id, 직원이름, 성별]-<[부양가족: 부양가족 이름, 나이] : 식별관계성집합
3. 관계성 : 개체간의 관계
3.1 관계성의 성질
1) 대응비(1:1, 1:다, 다:다)
2) 참여도(완전참여, 부분참여 : 관계성 맺고있는 상대 개체 집합과 얼만큼 연관되어 있는지 표현)
3) 차수(일원관계성집합, 이원관계성집합, 삼원관계성집합)
4) 사상수 제약(연결될 수 있는 개수 : 최소사상수 0 또는 1)
5) 결합 개체 : 하나 이상의 속성을 가지는 관계성집합을 개체집합으로 변환
4. 개체관계성 모델의 확장
4.1 일반화(유전성)와 상세화
4.2 개체관계성 모델의 기타 확장 성질 :
1) 완전성 : 완전참여와 부분참여(추가적으로 참여할 수 있음)
2) 배타성 : 배타적과 비배타적(중복된 성질 일부 있음)
5. 개체관계성도
제 3장 관계형 모델
1. 관계형 모델 : 실행 데이터 모델 표현 (하위DM 생략)
1.1 특징 : 가장 많이 사용되는 데이터 모델, 테이블 형태로 저장돼 직관적 이해 가능, SQL 질의어 사용(조작 가능), 데이터 중복 배제(조인 연산에 오버헤드 발생 가능)
1.2 구성요소 : 데이터 구조, 데이터 조작, 데이터 무결성
2. 관계
2.1 관계의 개념 : 필드(속성)를 열로, 이에 해당하는 레코드(인스턴스)를 행(한줄=튜플)으로 저장해 관리
2.2 관계의 특성 : 관계와 속성은 고유의 이름을 가진다. 하나의 관계 내 모든 튜플은 유일하다. 열과 행 순서 무의미하다. 다중값 속성은 존재할 수 없다.
2.3 관계의 추가 개념 : [원소수 = 속성수], [차수 = 튜플 수]
2.4 관계 스키마 : 관계형 데이터베이스에 존재하는 관계를 표현하기 위함
예) 고객(고객번호, 고객명, 고객주소, 고객전화, 고객등급) -<
주문(고객번호, 상품코드, 주문일자, 주문금액, 주문조건) >-
상품(상품코드, 상품명, 상품내역, 상품단가, 재고량)
2.5 영역 : 속성들의 허용 가능한 속성 값에 대한 명세
3. 무결성
3.1 무결성 제약 : 관계형 모델에 저장되는 모든 데이터들이 반드시 지켜야할 규칙. 일관성, 정확성 유지 신뢰성 보장. 데이터 연산 시 발생 가능한 여러 오류 방지
1) 보장 방법 (1) 명시적 제약 : 응용 프로그램 단위에서 무결성 검증 코드를 통한 보장, (2) 내제적 제약 : 데이터 베이스 내의 제약 조건 설정을 통한 보장, (3) 본질적 제약 : 데이터 모델의 기본 가정으로 구조적 특성으로 인한 제약
2) 무결성의 종류 (1) 트랜잭션 무결성 : 하나의 작업 단위 안 데이터 연산들이 정상적으로 처리되어 작업결과의 정확성, 데이터의 일관성을 보장
(2) 데이터 무결성 : 개체 무결성(모든 관계 주키 소유), 영역 무결성(하나의 속성에 해당하는 모든 인스턴스들의 속성값 형태 동일), 참조 무결성(데이터 간 상호관계에서 데이터 무결성 파악, 연관된 관계에 일관성 보증)
3.2 개체 무결성 제약 : 주키는 null값을 가지지 않는다. 유일성과 최소성을 만족해야 한다.
3.3 영역제약 : 데이터 유형이나 길이 범위에 대해 제약을 받음.
3.4 참조 무결성 제약 : 외래키를 통해 연관성을 정의. 하나의 관계에 외래키가 있다면 그건 다른 관계의 주키 값과 일치하거나 null 값이여야 함.
1) 단순 참조 무결성 제약 : 외부키 제약, 교차참조키 제약
2) 갱신 참조 무결성 제약 : 입력, 삭제, 수정 시 제약 : 주키 먼저 조정하기
제 4장 정규화
1. 정규화
1.1 정규화의 배경 : 관계형 모델의 조인으로 인한 입력,삭제,수정의 단점을 극복하기 위해 등장.
1.2 정규화의 개념 : 비구조적 관계(중복성 있으며 이상현상 발생) -> 구조적 단계(중복 X, 이상 X)
목적) 데이터 중복성 최소화, 이상현상 발생 회피, 참조 무결성 제약을 단순화, 향후 데이터 확장에 대한 기반
1.3 데이터의 이상 현상 : 입력 이상, 삭제 이상, 수정 이상
2. 정규형 전환
2.1 함수적 종속의 개념 : X=>Y, 다:1, 직원ID => (이름, 성별)
2.2 정규형 전환
1) 0차 정규형 (다중값 속성을 가지는 관계) -> 다중값 제거, 원자성 제거, 유일성과 최소성을 만족시키는 주키 선정 ->
2) 1차 정규형 (입력/삭제/수정 이상 존재) -> 부분 종속을 제거하고 모든 속성이 주키에 완전히 종속되도록 관계를 분리, 새로운 관계로 분리(테이블 분리) ->
3) 2차 정규형 (각각의 테이블 혹은 하나의 테이블에서 주키 아닌 모든 속성들이 주키 속성에 함수적으로 종속) -> 전이적 종속(하나의 관계 안에서 2개 이상의 키가 아닌 속성들 간에 함수적 종속)이 없도록 만들기 ->
4) 3차 정규형 (두 관계를 연결하기 위한 외래키 역할로 속성을 남겨둠. )
3. 정규화 주의사항 : 이상 현상 발생 확률 감소와 동시에 DB 실행 성능을 저하(많은 조인연산으로)시킬 수 있음. 지나친 참조 무결성을 야기. 목적에 따라 데이터의 중복을 허용하는 역정규화를 허용할 수 있음.
제 5장 데이터베이스 설계
1. 정보시스템 설계 방법론 : 기업이 보유한 자원(사람, 데이터, 프로세스, 네트워크, 이벤트, 동기=규칙)으로부터 유의미한 정보를 얻기 위한 시스템.
1) 폭포수 모델 : 순차적. 아래로 떨어지는 모형. 직관적이고 작은단위에 유용. / 이전 단계 못돌아감. 불확실성. 요구사항 자주 바뀌는 프로젝트에는 부적합
2) 프로토타이핑 모델 : 기본형을 바탕으로 개선해나가며 개발. 초기 개발 비용 감소. 주기적으로 사용자 요구사항 반영. / 최종 시스템이 초기에 목적한 시스템과 다를 수 있음. 기반 구조에 대한 이해가 결여된 상태로 개발 이뤄질 수 있음
3) 나선형 모델 : 프로토타이핑 모델에서 초기 요구 분석 후 프로토타입 개발 전에 위험 분석 단계 수행. 위험 요소 대비 가능. 주기적으로 사용자 요구사항 반영. / 위험분석 전문가 필요. 반복횟수 증가로 비용 증가
4) 점증적 모델 : 초기버전 배포 후 다음버전 개발하며 배포. 증분형 모델(서브시스템 하나씩 구현)과 진화형 모델(프로토타입 개발 기능 추가 방식)으로 나뉨
5) 고속개발 모델 : 자동화 이용. 양질의 시스템 개발과 위험 제어에 강점. / 개발 과정 전반에 사용자 참여로 개발 어려움 유발. 대단위 시스템에 적합하지 않음
2. 데이터베이스 설계 방법론
2.1 데이터베이스 설계 주요 단계 : 요구사항 분석 -> 설계 -> 개발 -> 운영 및 유지보수
2.2 데이터베이스 설계 전 : 데이터베이스 사용자 파악, 데이터베이스 범위 결정, 데이터 요구사항 파악, 데이터 수집
2.3 데이터베이스 설계 : 3-스키마 구조를 이용해 구현. 외부단계 : 개념적 데이터베이스 설계 / 개념단계 : 논리적 데이터베이스 설계 / 내부단계 : 물리적 데이터베이스 설계
2.4 데이터베이스 설계 후
1) 데이터베이스 구축 : 데이터 정의어 이용해 구조 정의. 데이터 조작어 이용해 데이터 탑재. 기존 데이터베이스를 데이터 마이그레이션 기법을 이용해 이전.
2) 데이터베이스 운영 : 지속적 유지보수 노력
제 6장 SQL 개념
1. 데이터베이스 질의어 : 질의란 사용자가 DBMS를 통해 DB에 저장된 데이터에 대한 조회, 수정과 같은 일련의 데이터 처리를 요청하는 것을 말한다.
1) 관계형 질의어 : 관계형 데이터베이스에서 사용하는 질의어.
(1) 형식적 질의어 : 개념적 질의어. 상업적 질의어의 유용성 검증 : 관계형 대수와 관계형 해석 (2) 상업적 질의어 : SQL
2) 관계형 대수
(1) 일반 집합 연산자 : 합집합, 차집합, 교집합, 카티션 프로덕트(R1 X R2)
(2) 순수 관계 연산자
-1- 셀렉트 : ∂조건식(관계), 비교연산자(<,>,=) 논리 연산자(∨,∧)
-2- 프로젝트 : π속성리스트(관계)
-3- 조인 : 자연조인(⋈), 새타조인, 세미조인, 외부조인
-4- 디비전
(3) 복합 질의
2. SQL 언어 : SQL 문법에 맞게 질의어 작성하면 세부 수행 과정 처리해줘서 원하는 데이터 연산에 집중, 대화식과 내장식으로 분류.
1) 데이터 정의어 : 스키마 생성/삭제, 관계 정의/수정/삭제, 뷰 생성/삭제 등 데이터 구조에 대한 언어
2) 데이터 조작어 : 데이터 (튜플) 삽입/삭제/수정 등 데이터 처리 연산 기능
3) 데이터 제어어 : 접근, 사용 권한 부여, 트랜잭션 실행/취소 등
* 실습 *
1) 데이터 정의어
- 데이터베이스 생성 : CREATE DATABASE (IF NOT EXISTS) DB_NAME;
- 데이터베이스 삭제 : DROP DATABASE (IF EXISTS) DB_NAME;
- 테이블(관계) 생성 : CREATE TABLE (IF NOT EXISTS) DB_NAME.Table_NAME (
Column_Name1 Data_Type(Size) [NULL | Not NULL],
Column_Name2 Data_Type(Size) [NULL | Not NULL], ...
- 참조 무결성 제약 조건 : 테이블 생성절에 적용
= ON DELETE (UPDATE) NO ACTION : 외래 키가 참조하는 키가 있는 행을 삭제하려고 할때 한줄만
= ON DELETE (UPDATE) CASCADE : 외래 키가 참조하는 키가 있는 행을 삭제할 때 모든 행 삭제
- 테이블(관계) 삭제 : DROP TABLE (IF EXISTS) DB_NAME.Table_NAME RESTRICT(참조하는 관계가 있을 때 수행하지 않는다)/CASCADE(참조하는 관계 까지 다 지워버린다);
2) DML (레코드 기본 검색 : Select)
Select <항목명 / 항목명 AS 별명>
From <관계명>
[Where <조건식>];
3) 데이터 정의어
- 데이터베이스 생성 : CREATE DATABASE (IF NOT EXISTS) DB_NAME;
- 데이터베이스 삭제 : DROP DATABASE (IF EXISTS) DB_NAME;
- 테이블(관계) 생성 : CREATE TABLE (IF NOT EXISTS) DB_NAME.Table_NAME (
Column_Name1 Data_Type(Size) [NULL | Not NULL],
Column_Name2 Data_Type(Size) [NULL | Not NULL], ...
- 참조 무결성 제약 조건 : 테이블 생성절에 적용
= ON DELETE (UPDATE) NO ACTION : 외래 키가 참조하는 키가 있는 행을 삭제하려고 할때 한줄만
= ON DELETE (UPDATE) CASCADE : 외래 키가 참조하는 키가 있는 행을 삭제할 때 모든 행 삭제
- 테이블(관계) 삭제 : DROP TABLE (IF EXISTS) DB_NAME.Table_NAME RESTRICT(참조하는 관계가 있을 때 수행하지 않는다)/CASCADE(참조하는 관계 까지 다 지워버린다);
4) DML
- INSERT INTO DB_NAME.TABLE_NAME (속성1, … 속성n) VALUES ('속성1의 값, … 속성n의 값)
- Select <항목명 / 항목명 AS 별명>
From <관계명>
[Where <조건식>];
5) SQL 문 확장
- Select 문의 기본 문법에 추가적인 기능 제공
Select <항목명 or 항목명 as 별명>
From <관계명>
Where <조건식> + Like, In, Between
Order by
- Like : ~처럼(유사한), 유사 검색 (문자)
김% / %철% / %민
- In : 여러 항목 중 특정 항목 값만 검색
"Where (카테고리) In (카테고리1,2)"
- Between : 특정 항목 값의 범위 (주로 날짜나 숫자값)
"Where order_date between '2019-08-01' and '2019-12-31'"
- Order by : 질의 결과 튜플들을 정렬
Order by 항목명 ASC(오름차순)/DESC(내림차순) [limit 0(시작튜플), 5(개수)]
- 집계(집단) 함수 : Avg(평균) / sum(합계) / count(개수) / first, last / min, max / std(표준편차) / var(분산)
5. Group by 문 (동일한 속성 값을 가지는 튜플들을 하나의 그룹으로 묶어주는 명령문)
Select 항목명 / 집계함수(항목명)
From 관계명
Where 조건식
Group by 항목명
6. Having 절
Select 항목명 / 집계함수(항목명)
From 관계명
Where 조건식
Group by 항목명
Having (group의) 조건식
7. Join : 두개 이상 연관된 관계로 부터 정보 조회하는 연산
Select 항목명 / 집계함수(항목명)
From 관계_1 <조인 연산자(inner_join, outer_join> 관계_2
On 조인 조건(>,<,= 등 비교연산자)
- Inner_join
From 관계_1 (inner) join, 관계_2
On 관계_1.공통 속성 = 관계_2.공통 속성
8. 외부 조인 (outer join) : 왼쪽 외부 조인 (left join) / 오른쪽 외부 조인 (right join)
9. 내포문 : select 문 안에 또다른 select / SQL문 ( SQL문 )
- Select
From
On
Where 조건식 ( select
From
On ~ );
- Select
From ( from
Where
Group by
Having ~ );
'코딩 어쩌구 > Data' 카테고리의 다른 글
[시험 준비] SQLD 일정 및 내용 (0) | 2021.01.15 |
---|---|
[생활코딩] 관계형 데이터 모델링 (0) | 2020.12.23 |
[생활코딩] SQL Join (0) | 2020.12.22 |
[생활코딩] DATABASE1 (0) | 2020.12.21 |
<ADsP> (0) | 2020.11.24 |