데이터베이스의 제약 조건
- 테이블 단위에서 데이터의 무결성을 보장하는 규칙
- 테이블 수정 작업하는 경우에 잘못 된 트랜잭션 수행을 방지하는 역할을 한다.
- 테이블 간 제약 조건이 있어서 종속성이 있는 경우 테이블 삭제를 방지한다.
PK(Primary Key)
- 기본키라고 하며 중복이나 NULL이 불가능하다.(UNIQUE + NOT NULL)
- 테이블 생성 시 단 한 개의 기본키를 설정한다.
- 엔티티(Entity)를 식별하는 키이다.
- PK 지정 가능한 컬럼이 여러 개 있을 경우엔 많이 사용되는 간단한 컬럼을 사용한다.
- 고유 인덱스를 자동 설정한다.
- 고유 인덱스
한 테이블에 있는 두 개의 행 데이터가 동일한 키 값을 갖지 않도록 보장하여 데이터 무결성을 유지하는데 도움이 되는 인덱스이다.
- CREATE 문으로 PK 설정
CREATE TABLE 테이블명 ( 필드명 필드타입 PRIMARY KEY, --ex ) ID Strimg PRIMARY KEY 필드명 필드타입, 필드명 필드타입 );
- ALTER 문으로 PK 설정
테이블에 새로운 필드를 추가하거나 수정할 때 사용ALTER TABLE 테이블명 ( ADD 필드이름 필드 타입 PRIMARY KEY );
ALTER TABLE 테이블명 ( MODIFY COLUMN 필드이름 필드 타입 PRIMARY KEY ); -- 기존의 필드에 PK를 설정할 때
FK(Foreign Key)
- 외래키,참조키,외부키 등으로 부른다.
- 다른 테이블을 참조하는 기능을 하고 있다
- 외래키가 정의 된 테이블을 자식 테이블이라고 부른다.
- 참조하는 테이블의 컬럼과 외래키를 가지고 있는 컬럼의 데이터 타입이 일치해야 된다.
(중복값을 가지고 있지 않은 유일한 데이터를 가진 PK,UNIQUE를 가진 컬럼에만 참조가 가능하다.)- 참조 되어 있는 테이블을 삭제할 경우엔 참조 하고 있는 테이블을 먼저 삭제해야 된다.
- CREATE 문으로 FK 설정
CREATE TABLE 테이블명 ( FOREIGN KEY(필드 이름) REFERENCES 참조 테이블명(필드 이름) ); -- FK 문법 사용시에는 FOREIGN KEY 제약 조건을 설정해야 된다. -- 참조되는 테이블 명은 REFERENCES 뒤에 명시한다.
UK(Unique Key)
- 중복 된 값을 허용하지 않는다.
(항상 유일해야 된다.)- 고유 인덱스를 자동 생성한다.
- 여러개의 NULL값을 허용한다.
- CREATE 문으로 UK 설정
CREATE TABLE 테이블명 ( 필드명 필드타입 UNIQUE, 필드명 필드타입, 필드명 필드타입 );
- ALTER 문으로 PK 설정
ALTER TABLE 테이블명 MODIFY COLUMN 필드이름, 필드타입 UNIQUE
🙇 참고 사이트 🙇
https://itworldyo.tistory.com/entry/DB-%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4-%EC%A0%9C%EC%95%BD%EC%A1%B0%EA%B1%B4-PK-FK-UK-%EA%B0%9C%EB%85%90%EC%84%A4%EB%AA%85 https://silverkim.org/server-database/db-%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4-pk-fk-uk-ck-%EC%9D%98-%EC%9D%B4%ED%95%B4/ https://tcpschool.com/mysql/mysql_constraint_primaryKey