Post

[SQL 첫걸음] 8장: 데이터베이스 설계

[SQL 첫걸음] 8장: 데이터베이스 설계

“SQL 첫걸음” 도서 바로가기

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.