[SQL 첫걸음] 8장: 데이터베이스 설계
[SQL 첫걸음] 8장: 데이터베이스 설계
8장: 데이터베이스 설계
34강. 데이터베이스 설계
1. 데이터베이스 설계
- 데이터베이스를 설계한다 = 데이터베이스의 스키마 내에 테이블, 인덱스, 뷰 등의 데이터베이스 객체를 정의하는 것
- 논리명과 물리명
- 논리명: 설계상의 이름
- 물리명: CREATE TABLE에 지정하는 테이블 이름이나 열 이름
- 자료형
- 수치형을 문자열형으로 변환하는 것은 문제가 되지 않지만 문자열형을 수치형으로 변환하는 경우에는 에러가 발생할 수도 있다.
- 고정길이와 가변길이
- 자리수가 이미 정해져 있는 경우 → 고정길이가 적합
- 입력되는 문자열의 길이의 변동폭이 클 경우 → 가변길이가 적합
- LOB(Large Object): 큰 데이터를 다루는 자료형. 인덱스를 지정할 수 없다.
2. ER다이어그램
- ER: E는 개체를 뜻하는 ‘Entity’의 약자이며 R은 ‘Relationship’의 약자이다.
- ER다이어그램: 개체 간의 관계를 표현한 것
- 카디널리티 or 다중도
- 일대일(1:1)
- 일대다(1:多)
- 다대다(多:多)
35강. 정규화
1. 정규화
- 정규화: 테이블을 올바른 형태로 변경하고 분할하는 것, 즉 데이터베이스의 테이블을 규정된 올바른 형태로 개선해나가는 것
- 데이터베이스의 설계 단계에서 행해진다.
2. 제1 정규형
- 반복되는 데이터를 가로(열 방향)가 아닌 세로(행 방향)로 늘리는 것이 제1 정규형의 제1단계
- 테이블 분할과 기본키 지정이 이루어진다.
3. 제2 정규형
- 데이터가 중복하는 부분을 찾아내어 테이블로 분할해 나간다.
- 이때 기본키에 의해 특정되는 열과 그렇지 않은 열로 나누는 것으로 정규화가 이루어진다.
- 즉, 부분 함수종속성을 찾아내서 테이블을 분할하는 것
- 함수종속성: 키 값을 이용해 데이터를 특정지을 수 있는 것
4. 제3 정규형
- 기본키 이외의 부분에서 중복이 있는지 조사하고 중복하는 부분을 찾아내어 테이블을 분할하는 수법
5. 정규화의 목적
- 정규화로 데이터 구조를 개선하는 것은 하나의 데이터가 한 곳에 저장되도록 하기 위함이다.
36강. 트랜잭션
1. 트랜잭션
트랜잭션의 제어
1 2 3
START TRANSACTION COMMIT ROLLBACK
- 정의: 여러 개의 작업들을 하나로 묶어, 전부 성공하거나 아니면 아예 아무것도 안 한 상태로 되돌리는 최소 작업 단위
- 핵심 원칙 (ACID)
- 원자성 (Atomicity): “All or Nothing.” 트랜잭션 내의 모든 작업이 완벽히 수행되거나, 하나라도 실패하면 모두 취소되어야 한다.
- 일관성 (Consistency): 트랜잭션 완료 후에도 데이터베이스는 미리 정해진 규칙(제약 조건 등)을 반드시 만족해야 한다.
- 격리성 (Isolation): 둘 이상의 트랜잭션이 동시에 실행될 때, 서로의 중간 작업 과정에 끼어들거나 영향을 주어서는 안 된다.
- 지속성 (Durability): 성공적으로 완료된 트랜잭션의 결과는 시스템 장애가 발생하더라도 영구적으로 기록되어야 한다.
2. 롤백과 커밋
- Rollback(롤백): 작업 중 오류가 발생하여 트랜잭션 시작 이전의 상태로 되돌리는 것.
- Commit(커밋): 모든 작업이 성공하여 데이터베이스에 영구적으로 반영하는 것.
- 트랜잭션을 롤백하면 변경한 내용이 적용되지 않는다.
- 트랜잭션을 사용해서 처리하는 것으로 간단히 데이터를 관리할 수 있다.
- 트랜잭션 시작:
START TRANSACTION - 트랜잭션 내에서 실행한 명령을 적용한 후 종료:
COMMIT - 트랜잭션 내에서 실행한 명령을 파기한 후 종료:
ROLLBACK
This post is licensed under CC BY 4.0 by the author.