※ DB는 UI상에서도 작성할 수 있지만 쿼리로도 작성할 수 있다.
※ 데이터베이스 = 스키마, 테이블 = 객체
- DB
- CREATE DATABASE [DB 명]
- DROP DATABASE [DB 명]
- TABLE
- CREATE TABLE [테이블 명] (열 명, 자료형, DEFAULT, [NULL | NOT NULL], ...)
- DROP TABLE [테이블 명]
- ALTER TABLE [테이블 명] ADD / DROP / ALTER CULUMN [열 명, 자료형, ...]
※ 테이블 DROP시, 게임처럼 삭제 확인창이 뜨지 않으니 주의할 것. (자주 사용하지 않음)
- 제약
- NULL, NOT NULL, UNIQUE, PRIMARY KEY, FOREIGN KEY가 있다.
- CREATE TABLE로 테이블 작설할 때 제약을 같이 정의한다. ('()'의 내용)
- ALTER TABLE로 제약을 지정하거나 변경 가능.
- 위와 같은 열에 대해 정의하는 제약을 '열 제약'이라고 한다.
- CONSTRAINT : 제약에 이름을 부여할 수 있다. (이름을 붙이면 관리가 용이하다.)
- ex) ALTER TABLE [테이블 명] ADD CONSTRAINT [제약 명] PRIMARY KEY (열 명)
- 정규화
- DB의 테이블을 규정된 형태로 개선해나가는 것.
- 정규화를 통해 DB가 효율적으로 동작하도록 만들 수 있다.
- 정규화 예시 DB
id | name | class | level | inventory |
1 | a | knight | 3 | itemA 1개, itemB 3개 |
2 | b | wizard | 2 | itemA 5개, itemB 2개 |
1. 반복되는 데이터를 세로(행 방향)로 늘려준다.
id | name | class | level | item | itemCode | count |
1 | a | knight | 3 | itemA | 01 | 1 |
1 | a | knight | 3 | itemB | 02 | 3 |
2 | b | wizard | 2 | itemA | 01 | 5 |
2 | b | wizard | 2 | itemB | 02 | 2 |
2. 데이터 분할, 키 처리
- name, class, level과 item을 다른 테이블로 옮긴다.
2-1) 플레이어 테이블
id | name | class | level |
1 | a | knight | 3 |
2 | b | wizard | 2 |
2-2) 아이템 테이블
itemCode | item |
01 | itemA |
02 | itemB |
2-3) 인벤토리 정보 테이블
id | itemCode | count |
1 | 01 | 1 |
1 | 02 | 3 |
2 | 01 | 5 |
2 | 02 | 2 |
위와 같이 정규화가 가능하다.
'Develoment > DB' 카테고리의 다른 글
[Database] 문법 정리 (0) | 2021.06.10 |
---|---|
[Database] 프로그램 (0) | 2021.06.09 |