정규화의 목적: 이상현상을 제거하기 위해
이상현상 3가지
- 삽입 이상: 잘못된 데이터가 들어옴
- 갱신 이상: 의도치 않은 다른 데이터도 수정되어 버림
- 삭제 이상: 다른 데이터도 연쇄적으로 삭제되어 버림
개념 -> ERD
논리 -> 정규화, 트랜잭션
물리 -> 성능 향상
반정규화: 성능 향상
1정규형
- 테이블 R에 속한 모든 도메인이 원자값만으로 구성되어 있다
2정규형, 3정규형
- 테이블 R에서 키가 아닌 모든 필드가 키에 대해 함수적으로 종속됨
- 키의 부분 집합이 결정자가 되는 부분 종속이 존재하지 않는다
BCNF
- 테이블 R에 존재하는 모든 함수적 종속에서 결정자가 후보키이다
비정규 Relation -> 제1정규형: 도메인(필드)이 원자값
제1정규형 -> 제2정규형: 부분 함수적 종속 제거
제2정규형 -> 제3정규형: 이행적 함수 종속 제거하여 완전한 함수적 종속
제3정규형 -> BCNF: 결정자이면서 후보키가 아닌 것 제거
BCNF -> 제4정규형: 다치 종속 제거
제4정규형 -> 제5정규형: 조인 종속성 이용
트랜잭션 - 하나의 일처리 단위
특성 4가지
- 원자성(Atomicity): 모두 반영되거나(commit) 모두 반영되지 말아야 한다(rollback)
- 일관성(Consistency): 데이터가 일관적이어야 한다
- 격리성=독립성(Isolation): 하나의 트랜잭션이 다른 트랜잭션에 영향을 미치면 안
- 영속성(Durability): 트랜잭션의 결과는 영구히 보존되어야 한다
트랜잭션 상태
분산 데이터베이스 구성요소
- 분산 처리기: 자체적으로 처리 능력을 가지며, 지리적으로 분산되어 있는 컴퓨터 시스템
- 분산 데이터베이스: 지리적으로 분산되어 있는 데이터베이스. 해당지역의 특성에 맞게 데이터베이스 구성
- 통신 네트워크: 분산 처리기들을 통신망으로 연결하여 논리적으로 하나의 시스템처럼 작동할 수 있도록
분산 투명성: 데이터베이스가 분산되어 있음을 사용자가 인식할 수 없어야 함
위치 투명성, 중복 투명성, 병행 투명성, 장애 투명성 지향
데이터베이스 언어(SQL)
- DDL(정의어): CREATE, DROP, ALTER(view는 ALTER 없음) -> 기본 테이블, 뷰 테이블, 인덱스 등에 대해
- DML(조작어): SELECT, INSERT, UPDATE, DELETE
- DCL(제어어): COMMIT, ROLLBACK, GRANT (to), REVOKE (from) -> 트랜잭션을 제어하거나, 권한을 부여
CREATE
- 속성의 NOT NULL 여부 지정
- 기본키를 구성하는 속성 지정
- CHECK 제약조건 정의
ALTER
- 열 이름 다시 부여 가능
DELETE
- 테이블의 행을 삭제
- DELETE FROM 테이블 [WHERE 조건];
DISTINCT
- 중복값 제거 가능
UNION
- 중복 제거 O
UNION ALL
- 중복 제거 X
<푸드> 테이블에서 강남지점의 제품명과 판매량을 출력하는데, 판매량이 많은 순으로 나열
SELECT 제품명, 판매량
FROM 푸드
WHERE 지점명 = 강남지점
ORDER BY 판매량 DESC
인덱스
- CREATE, DROP 으로 생성, 삭제
- 테이블 삭제 시 인덱스 테이블도 삭제됨
물리적 데이터베이스 구조의 기본 데이터 단위인 저장 레코드 양식 설계 시 고려사항
- 데이터 타입
- 데이터 값의 분포
- 접근 빈도
데이터 사전=시스템 카탈로그=시스템 데이터베이스
- 데이터베이스에 저장된 모든 개체에 대한 정의, 명세 정보 저장
- 메타 데이터를 저장
- 사용자, 데이터베이스 관리 시스템 접근 가능
- 사용자가 생성, 유지, 수정은 불가 (접근만 가능)
릴레이션
- 모든 튜플(필드)은 서로 다른 값을 가짐
- 튜플은 무순서성
- 각 속성(컬럼)은 릴레이션 내에서 유일한 이름 가짐
- 모든 속성 값은 원자값을 가짐 (원론적으로..)
view
- 가상의 테이블
- 다른 뷰(혹은 테이블)를 기반으로 새로운 뷰 만들 수 있음
- 업데이에 제약 있음 (ALTER 불가, DROP 후 새로 CREATE 해야 함)
- create view 사용하여 만듬
- 물리적으로 존재X
슈퍼키: 유일성만 만족
후보키, 기본키(Primary), 대체키: 유일성+최소성 만족
- 후보키 중 대표성 높은것이 기본키, 나머지는 대체
기본키(개체 무결성 제약 조건)
- NOT NULL
- 중복 금지
- 외래키로 참조 가능
제약조건
- 도메인 무결성: 릴레이션 내의 튜플들이 각 속성의 도메인에 정해진 값만을 가져야 함
- 참조 무결성: 자식 릴레이션의 외래키는 부모 릴레이션의 기본키와 도메인 동일해야 함
자식 릴레이션의 값이 변경될 때 부모 릴레이션의 제약 받음
cascade: 연쇄 삭제
restrict: 삭제 시도 시 제한
개념적 설계: 현실세계를 데이터 관점으로 추상화하는 단계
- ERD 만들기
논리적 설계: 특정 데이터 모델(계층, 관계, 객체지향)을 적용한 설계
- 사용할 DBMS 특성을 고려한 설계
- 릴레이션 스키마(테이블), 트랜잭션 인터페이스 만들기
- 스키마 정제
- 정규화 수행 (이상현상 제거)
물리적 설계: 물리적 구조, 저장 구조, 분산 형태, 데이터 특징, 인덱스
- 성능 향상 (인덱싱, 파티션, 클러스터링, 반정규화)
- 오브젝트, 접근 방법, 트랜잭션 분석, 인덱스, 뷰, 용량 설계
- 응답 시간, 저장 공간 효율화, 트랜잭션 처리량 고려
- 물리적 스키마
- 특정 DB(오라클, MySQL.. )에 맞게 만들기
- DDL 문 사용
Cardinality: 튜플(행)의 수
Degree: 속성(열)의 수
관계해석
관계 대수식을 SQL문으로 바꾸기
SQL문
SELECT 이름
FROM 학생
WHERE 학과='교육'
병행제어
목적
- 데이터베이스 일관성, 무결성 유지