본문 바로가기
백엔드/SQL

SQL 8장

by dustnn 2025. 4. 14.
데이터베이스 설계

 

: 스키마 내에 테이블, 인덱스, 뷰 등의 데이터베이스 객체 정의하는 것

 

자료형

: 테이블의 열에 지정, 데이터의 특성에 알맞게 지정

 

고정길이와 가변길이

- 고정길이: 자리수가 이미 정해져 있는 경우 ex. 제조번호

- 가변길이: 자주 입력되지도 않고 문자열 길이 변동폭 큰 경우 ex. 비고란

- LOB(Large Object): 큰 데이터 다룰 경우. (단, 인덱스 지정 불가)

 

기본키

: 자동증가(AUTO_INCREMENT)로 지정한 열은 기본키/UNIQUE 로 유일성 지정 필요

 

정규화

 

테이블을 올바른 형태로 변경/분할

 

ex. 쇼핑사이트의 주문처리 시스템

제1정규형

 

: 하나의 셀에 하나의 값만 저장 & 반복되는 부분을 세로 방향으로 늘려나감

=> 주문상품에 나열된 데이터를 정리

 

1. 중복 제거하는 테이블 분할

- '주문' 테이블

- '주문 상품' 테이블: 주문번호 열 추가 -> 주문 테이블과 결합 가능

=> 두 테이블을 '주문번호'로 연계 가능

 

(+) 수정 용이(데이터 변경되더라도 한 군데만 수정 가능)

 

2. 기본키 지정

- '주문': 중복된 값 x -> 기본키 가능

- '주문 상품' 테이블: 주문번호+상품코드 -> 기본키

 

제2정규형

 

: 기본키 중에 특정 컬럼에만 종속된 컬럼이 존재할 경우

 -> 컬럼 간 종속성 없애주기

 

<정규화 전>

 

기본 키 = 주문번호+상품코드=> 기본키가 결정되면 개수 열 특정 가능 -> 개수 열은 기본키에 종속

 

<정규화 과정>

 

제3정규형

 

: 기본키 이외의 부분에서 중복이 없는지 조사

 

<정규화 전>

같은 사람이 여러 번 주문 -> 중복

-> 주문 테이블에서 이름을 기준으로 연락처 특정 가능

 

<정규화 과정>

 

분할하여 새로운 테이블 "고객" 생성 -> 기본키: 고객번호

 

트랜잭션

 

: INSERT / UPDATE 명령으로 데이터 추가, 갱신할 때 사용

START TRANSACTION //트랜잭션 시작
COMMIT //트랜잭션 내에서 실행한 명령을 적용 후 종료
ROLLBACK //트랜잭션 내에서 실행한 명령 파기 후 종료

 

-> 세트로 실행하고 싶은 SQL 명령은 트랜잭션 내에서 실행

'백엔드 > SQL' 카테고리의 다른 글

JOIN  (0) 2025.04.17
DML: SQL 연산자와 내장함수(2)  (0) 2025.04.15
SQL 7장  (0) 2025.04.14
DML: SQL 연산자와 내장 함수(1)  (0) 2025.04.13
DML: SELECT(데이터 조회)  (0) 2025.04.11