제약 조건은 테이블에 저장되는 데이터를 제약하는 특정 규칙으로
컬럼에 데이터를 넣을 경우 특정한 조건을 만족시켜야 할 경우에 사용한다.
즉, 지정된 조건에 맞지않으면 데이터 입력이 안되기 때문에 데이터의 정확성이 유지된다.
기본 키 제약 조건 ( PK ) - primary key
NOT NULL
참조 제약 조건 (외래키, 참조키 , FK) - foreign key references
연계 참조 무결성 제약 조건 - on delete cascade
유니크 제약 조건 ( 유니크 키, 후보 키) - unique
체크 제약 조건 - check
1. 참조 제약 조건
- 외래 키, 참조 키 라고도 부른다. FOREIGN KEY (FK)
- 외래 키로 연결되어 있으면 부모 - 자식 관계가 된다.
- 따라서 부모 테이블이 있어야 관계 설정이 가능하다.
테이블을 만들 때 생성하는 방법
테이블을 만든 후 생성하는 방법
위의 경우는 부모의 키를 자식이 기본 키로 사용하고 있지 않기 때문에 '비식별 관계'
아래의 경우는 부모로부터 가져온 외래 키를 자식이 기본 키로 사용하기 때문에 '식별 관계'
(식별,비식별 - ERD 글 링크)
2. 연계 참조 무결성 제약조건
- 연계 참조 : 부모 자식 관계
- 무결성 : 논리적으로 앞뒤가 맞는 것을 의미
- 부모 자식 간에 논리적으로 말이 맞지 않는 상황을 제약하는 것
- 부모 없는 자식이 발생했을 경우, 이를 해결하는 것
이 때 부모테이블을 지우려고 하면 지울 수 없다.
-- 해결방법 1) 자식을 먼저 지우고 부모를 지우는 방법(부모 자식 관계가 복잡하면 힘들다)
-- 해결 방법 2) 연계 참조 무결성 제약조건을 활용(ON DELETE CASCADE)
=> 부모 데이터를 지우면 연관된 자식 데이터도 함께 지운다.
3. 유니크 제약조건
- 유니크 키, 후보 키
- 중복을 허용하지 않는다.
- 따라서 기본키(PK)가 될 잠재력이 있다. 그래서 후보키 라고도 부른다.
- 유니크 키 + not null = primary key
- 테이블에 무제한으로 들어간다.
ALTER TABLE [테이블 명] ADD CONSTRAINT [제약조건 종류]([적용 컬럼]);
여기에 만약 값을 insert 하려고 한다면
이런 에러가 날 것이다.
유니크 제약조건은 중복을 허용하지 않기 때문에 중복되는 값을 넣으면 에러가 난다.
4. 체크 제약 조건
정해진 조건을 만족하지 않으면 DB에 받지 않는다.
ALTER TABLE [테이블 명] ADD CONSTRAINT [제약조건 종류]([적용 컬럼] [조건])
ex) products의 products_price가 5000과 10000원 사이만 받는다.
그런데 이 조건은 거의 사용하지 않는 조건이다.
- 체크 제약 조건을 사용하지 않는 이유 -
1) 수정이 어렵다.
2) 어떤 조건인지 확인이 어렵다.
- 어떤 조건을 적용시켜놨는지 확인 할 수 없다.
그래서 이런 조건들은 프로그래밍 단에서 처리하는 것이 일반적이다.
'Data > MariaDB' 카테고리의 다른 글
DB] IN / EXSITS / ANY / ALL / limit (0) | 2022.05.06 |
---|---|
DB] 서브쿼리 , 상하관계쿼리 (0) | 2022.05.06 |
DB] 트랜젝션(TRANSACTION) (0) | 2022.05.02 |
DB] 제약 조건(constraint) 1 - 기본 키 제약 조건 / NOT NULL (0) | 2022.04.28 |
DB] DML 2 - SELECT (0) | 2022.04.28 |