빅데이터 부트캠프/MySQL

빅데이터 부트캠프 71일차

Mecodata 2022. 10. 19. 08:47

제약조건(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 더블 클릭 후 글씨체 맑은 고딕으로 수정 하면 해결됨