728x90
관계형 데이터베이스에서 핵심은 테이블 간 적절히 관계를 맺어주면서 데이터 중복을 최소화하여 구조를 짜임새 있게 만드는 것이다.
Primary Key
- 모든 레코드가 서로 다른 값을 가지고 있어 각 레코드를 식별할 수 있다.
- NULL값이 존재할 수 없다.
- 레코드의 값은 중복이 불가능하다.
- 테이블에는 하나의 기본키만 가질 수 있지만 경우에 따라 1개 이상의 기본키를 정의할 수도 있다. (다수 열 기본 키, 복합 기본 키)
PK 생성
CREATE TABLE user {
id int PRIMARY KEY
}
- PK로 사용하기를 원하는 컬럼에 PRIMARY KEY 붙여준다.
단, 이 때 기본키의 값을 가진 컬럼은 중복값과 NULL값이 없어야 한다. - 기본키를 설정해두면 해당 컬럼에 중복값을 INSERT하려고 할때 작동하지 않는다.
- AUTO_INCREMENT 의 사용
- PRIMARY KEY의 속성 중 하나
- 삽입되는 레코드에 유니크한 값을 자동적으로 부여한다.
- 일반적으로 1부터 증가하며 값을 부여하지만, 별도의 다른 값을 부여할 수도 있다.
Foreign Key
데이터베이스를 설계할 때, 하나의 테이블 만으로는 해당 테이블이 대표하는 데이터를 하나로 정리하기 힘들 수 있다.
이 때 Foreign Key는 데이터가 일관될 수 있도록 돕는 역할을 한다. 보통은 두 개의 데이터베이스 테이블을 잇고자 기본 키와 함께 사용된다. 일종의 테이블을 연결하는 가상의 다리 역할을 한다.
- 외부 키는 한 테이블의 필드로, 다른 테이블의 기본 를 나타낸다.
- 외래 키를 가지고 있는 테이블을 하위 테이블, 기본 키를 가지고 있는 테이블을 참조 이블 또는 상위 테이블이라고 한다.
- 각 외부 키와 기본 키는 1:1관계로 매칭되어야 하며, 기본 키에 존재하지 않는 값이 외부키에 존재할 수 없다. -> 외래 키 제한 표현으로 데이터베이스에게 두 테이블 간의 관계를 알려주어야 한다.
FK의 제한 표현
- 두 테이블 간의 관계를 정의한다.
- 기본 키의 존재하지 않는 값을 외래 키에 존재하게 되는 일을 막아준다.
- ON DELETE CASCADE, RESTRICT, NO ACTIONS, SET NULL 등의 옵션이 있다.
'Computer Science > 데이터베이스' 카테고리의 다른 글
CQRS 개요 (0) | 2024.04.23 |
---|---|
리더-팔로워 구조 (0) | 2024.04.22 |
데이터베이스란? (0) | 2023.07.27 |