빅데이터 부트캠프 71일차
제약조건(constraint)
- 데이터의 무결성을 지키기 위해, 데이터를 입력받을 때 실행되는 검사 규칙
※ 데이터의 무결성 = 데이터의 정확성과 일관성, 유효성을 유지하고 보증하는 것
- CREATE 문으로 테이블을 생성할 때나 ALTER 문으로 컬럼을 추가할 때 설정 가능
종류
1. NOT NULL = 지정한 컬럼이 NULL 데이터를 가질 수 없게 설정
2. UNIQUE = 지정한 컬럼에서 데이터 중복 입력 불가능하게 설정
3. DEFAULT = 데이터가 입력되지 않을 시 NULL 대신에 입력할 기본값 설정
4. PRIMARY KEY = 기본키 설정 (UNIQUE, NOT NULL 자동 적용)
5. FOREIGN KEY = 외래키 설정
기본키(Primary Key)
- 데이터 구분을 위한 핵심 데이터(데이터 중복 불가(UNIQUE), NULL 불가(NOT NULL))
- 기본키로 설정되어 있는 데이터는 수정, 삭제 불가
- 기본키는 컬럼들 중 하나만 선택 가능
- 테이블 생성시 기본키 설정
ex) depnto INT PRIMARY KEY
- 기본키 추가
ex) ALTER TABLE B ADD deptno INT PRIMARY KEY
- 기본키 변경
ex) ALTER TABLE B MODIFY deptno INT PRIMARY KEY
- 기본키 삭제
ex) ALTER TABLE B DROP PRIMARY KEY
외래키(Foreign Key)
- 두 테이블의 컬럼을 서로 연결하는 데 사용되는 키
- 두 테이블에 똑같은 데이터를 입력할 필요없이 데이터가 입력되어 있는 하나의 테이블의 컬럼을 참조하여 그대로 적용하기 위해 사용
- 외래키를 통해 value를 제공해주는 테이블 = 부모 테이블, 외래키를 통해 value를 제공받는 테이블 = 자식 테이블
- 부모 테이블에 자식 테이블의 기본키 데이터가 일부만 존재하면 외래키 적용 불가
- 테이블 생성시 외래키 설정
ex) FOREIGN KEY (deptno) REFERENCES C (deptno);
- 외래키 추가
ex) ALTER TABLE B ADD CONSTRAINT FOREIGN KEY (deptno) REFERENCES C (deptno);
-> C 테이블(부모)의 deptno를 참고하여 B 테이블(자식)의 deptno에 외래키 적용
- 외래키 삭제
ex) ALTER TABLE B DROP FOREIGN KEY deptno
ON UPDATE/DELETE
- 기본적으로는 부모 테이블의 외래키 컬럼 데이터의 변경/삭제가 불가능하지만 외래키 설정시 제약조건으로 [ON UPDATE/DELETE 인자]를 입력해주면 가능 (자식 테이블은 다른 설정없이도 데이터 변경/삭제 가능)
- ON UPATE/ON DELETE 설정 변경은 외래키 설정 삭제후 재생성할때 설정해주어야 변경 가능 제약조건 자체만을 변경하는 것은 불가능
※ 인자 종류
- CASCADE = 부모 테이블에서 데이터 수정 -> 자식 테이블에게도 수정된 데이터 반영
- SET NULL = 부모 테이블에서 데이터 수정 -> 자식 테이블에서 해당 데이터 NULL 처리
- NO ACTION = 부모 테이블에서 데이터 수정 -> 자식 테이블 그대로
- SET DEFAULT = 부모 테이블에서 데이터 수정 -> 자식 테이블에서 설정한 컬럼 기본값으로 데이터 변경
- RESTRICT = 부모 테이블에 데이터가 남아있으면 자식 테이블 데이터 수정/삭제 불가
DB 모델링
- 개념 모델링 = 주제 영역을 도출하고 해당 주제 영역의 핵심 엔터티를 추출, 엔터티들 간의 관계를 정의하는 데이터 모델의 골격을 정의하는 단계
- 논리 모델링 = 비즈니스 정보의 구조를 명확히 표현하는 단계로 물리 데이터 모델과는 다르게 비즈니스의 정보 흐름에 따라 설계하는 모델링 단계 (엔터티, 식별자 확정, 정규화, 무결성을 보장한 ERD 형태)
- 물리 모델링 = 논리 데이터 모델을 데이터 베이스 특성에 맞게 정의하여 물리 Table로 변환하는 단계
(논리 모델링 시 정의한 모델을 기반으로 DBMS의 특성, 성능, 기능에 따라 구조 변경 가능)
Workbench GUI로 DB 관리
- MySQL Wokrbench에서는 GUI를 이용하여 DB관리가 가능함
- Workbench의 왼쪽 SCHEMAS에서 테이블 우클릭 후 select rows를 클릭하면 데이터가 출력되는 동시에 테이블을 클릭하여 엑셀처럼 직접 데이터를 수정할 수 있음
- 테이블 생성은 5번째 아이콘
- Database창의 Reverse Engineer 선택하여 진행시 EER 다이어그램으로 DB간 관계 시각화 가능
- EER 다이어그램으로 시각화시 한글이 깨질 경우 EDIT-Preferences-Appearance-Table Figure Title 더블 클릭 후 글씨체 맑은 고딕으로 수정 하면 해결됨