# 데이터 베이스 모델링
- 테이블들은 자식과 부모 관계를 가진다.
- 테이블들은 관계를 가지는데, 총 3가지가 있다.
## 관계 종류
1. 1:1 관계 (One to One) ex) 차 - 차량 번호 / 사람 - 주민 번호 ...
2. 1:N 관계 (One to Many) ex) 부서(1) - 사원(n) /축구 팀 - 축구 선수
3. N:M 관계 (Many to Many) : 테이블 3개 이상 ex) 과목 - 수강 신청 - 학생
## 모델링 TIP
1. 자주 조회하는 것들은 위에 조회해야 빠르게 조회할 수 있음
2. 테이블에 컬럼이 많으면 좋은 것이 아님. 그러니 테이블을 쪼개쟈!!
3. 역정규화 : 자주 사용하는 테이블(몇 백만 건)은 합치는 것이 좋음.
## DML vs DDL
- INSERT SELECT UPDATE DELETE : DML(Data Manipulation Language - 데이터 조작어)
- CREATE (테이블 생성), DROP (테이블 삭제), ALTER (테이블 수정) : DDL (Data Definition Language - 데이터 정의어)
- 상품 테이블 만들기
- productPrice = 카멜 표기법
- SQL에서는 카멜 표기법을 쓰면 안됨. SQL에서는 _(언더 바)를 쓰자
CREATE TABLE 테이블 이름(
필드 이름 int(4) AUTO_INCREMENT PRIMARY KEY,
필드 이름 int(4) comment '별칭',
필드 이름 varchar(30) comment '별칭',
FOREIGN KEY (필드 이름) REFERENCES 테이블 이름(필드 이름) ON DELETE CASCADE
);
* FK를 테이블에 만들려면 필드 이름을 추가한 다음 아래에 FK를 추가해야 한다.
* FK가 넣을 것이 많다면,
"
FOREIGN KEY (필드 이름) REFERENCES 테이블 이름(필드 이름) ON DELETE CASCADE ,
FOREIGN KEY (필드 이름) REFERENCES 테이블 이름(필드 이름) ON DELETE CASCADE
"
이렇게 추가해야 한다!
int(4) : 숫자 형식 (123456)
varchar(30) : 글자 형식( 2019-12/ 010-1234-4567 / 안녕)
* ON DELETE CASCADE : 부모 테이블에 있는 데이터를 지우면 자식 테이블에 있는 데이터도 삭제.
가장 많이 사용
* ON DELETE SET NULL : 부모 테이블에 잇는 데이터를 지우면 자식 테이블에 있는 데이터에 NULL.
* ON DELETE NO ACTION : 부모 테이블에 있는 데이터를 지워도 자식 테이블에 있는 데이터는 남아 있음.
* ON DELETE SET DEFAULT : 부모 테이블에 있는 데이터를 지우면 자식 테이블 데이터 DEFAULT 값으로 변경.
* ON DELETE RESTRICT(기본 값) : 자식 테이블에서 부모 테이블을 사용하고 있으면 삭제 불가능.
* 부모 테이블에서 자식 테이블 PK를 사용하고 있다면, 부모 테이블에 있는 PK는 지울 수 없다.
- 그럼에도 불구하고 지우고 싶다면, ON DELETE CASCADE.
댓글
댓글 쓰기