데이터베이스 설계
: 스키마 내에 테이블, 인덱스, 뷰 등의 데이터베이스 객체 정의하는 것
자료형
: 테이블의 열에 지정, 데이터의 특성에 알맞게 지정
고정길이와 가변길이
- 고정길이: 자리수가 이미 정해져 있는 경우 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 |