Primary Key(기본 키)
SQL 데이터베이스에서 특정 레코드를 유일하게 식별하기 위해 사용되는 필드 또는 필드의 집합
테이블에서 각 레코드를 식별하는 데 사용되며, 테이블의 각 레코드에는 Primary Key 값이 반드시 있어야 한다.
특징
- 각 레코드에 대해 고유하기 때문에 중복이 불가능하다.
- NULL 값이 허용되지 않는다.
- 레코드를 식별하는 데 사용, 테이블 당 하나의 기본키만 가질 수 있지만 경우에 따라 1개 이상의 기본키를 정의할 수도 있다. (다수 열 기본 키, 복합 기본 키)
생성
// 방법 1
CREATE TABLE USER (
id INT PRIMARY KEY,
name VARCHAR,
password VARCHAR
);
// 방법 2
CREATE TABLE USER (
id INT NOT NULL,
name VARCHAR,
password VARCHAR,
PRIMARY KEY (id)
);
AUTO_INCREMENT
- PRIMARY KEY의 속성 중 하나
- 삽입되는 레코드에 유니크한 값을 자동적으로 부여한다.
- 일반적으로 1부터 증가하며 값을 부여하지만, 별도의 다른 값을 부여할 수도 있다.
CREATE TABLE USER (
id int PRIMARY KEY AUTO_INCREMENT
)
Foreign Key(외래 키)
하나의 테이블에서 다른 테이블의 기본키를 참조하는 키다.
두 개의 데이터베이스 테이블을 잇고자 기본 키와 함께 사용된다. 테이블을 연결하는 가상의 다리 역할을 한다.
데이터베이스에서 데이터 무결성을 유지하는 데 중요한 역할을 한다.
특징
- 데이터 무결성 유지
- 외래키를 사용하면 데이터베이스에서 참조 무결성을 유지할 수 있다.
- 자식 테이블의 레코드를 삭제하거나 업데이트할 때 부모 테이블의 기본키를 참조하지 않으면 데이터베이스에서 오류를 발생시킨다.
- 데이터 일관성 유지
- 외래키를 사용하면 부모 테이블에서 레코드를 삭제하거나 업데이트할 때 자식 테이블에서도 일관성을 유지할 수 있다.
- 관계 정의
- 외래 키를 사용하면 데이터베이스에서 테이블 간의 관계를 정의할 수 있다.
- 이를 통해 두 개 이상의 테이블에서 데이터를 쉽게 검색하고 JOIN 할 수 있다.
생성
CREATE TABLE DEPARTMENT (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR NOT NULL,
)
CREATE TABLE EMPLOYEE (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR NOT NULL,
dept_id INT,
FOREIGN KEY (dept_id) REFERENCES DEPARTMENT(id) ## dept_id를 DEPARTMENT 테이블의 기본키인 id를 외래키로 지정
);
옵션
1. On Delete
- Cascade : 부모 데이터 삭제 시 자식 데이터도 삭제
- Set null : 부모 데이터 삭제 시 자식 테이블의 참조 칼럼을 NULL로 업데이트
- Set default : 부모 데이터 삭제 시 자식 테이블의 참조 칼럼을 Default 값으로 업데이트
- Restrict : 자식 테이블이 참조하고 있을 경우, 데이터 삭제 불가
- No Action : Restrict와 동일, 옵션을 지정하지 않았을 경우 자동으로 선택된다.
2. On Update
- Cascade : 부모 데이터 업데이트 시 자식 데이터도 업데이트
- Set null : 부모 데이터 업데이트 시 자식 테이블의 참조 칼럼을 NULL로 업데이트
- Set default : 부모 데이터 업데이트 시 자식 테이블의 참조 칼럼을 Default 값으로 업데이트
- Restrict : 자식 테이블이 참조하고 있을 경우, 업데이트 불가
- No Action : Restrict와 동일, 옵션을 지정하지 않았을 경우 자동으로 선택된다.
실전
Q. 기본키, 외래키에 대해 설명해 주세요.
A. 기본키와 외래키는 관계형 데이터베이스에서 사용되는 중요한 개념으로, 데이터베이스 테이블 간의 관계를 설정하고 데이터 무결성을 유지하기 위해 사용됩니다.
기본 키는 Primary Key로 각 레코드를 고유하게 식별하는 역할로서 중복이 허용되지 않으며 NULL값을 가질 수 없습니다. 모든 레코드는 무조건 기본키를 가져야 하며, 대부분의 데이터베이스에서 자동으로 인덱싱이 되어 신속하게 검색하는 데 사용됩니다.
외래 키는 Foreign Key로 한 테이블에서 다른 테이블의 기본키를 참조하는 키입니다. 외래키를 통해 테이블 간의 관계를 형성할 수 있고, 두 개 이상의 테이블에서 데이터를 검색하고 JOIN 할 수 있습니다. 또한 외래키로 인해 데이터의 무결성이 유지되는 데에 중요한 역할을 하며, 일관성 또한 유지됩니다.
참조
https://boring9.tistory.com/54
https://velog.io/@hiy7030/DB-Primary-key%EC%99%80-foreign-key
'멋진 개발자 > DB' 카테고리의 다른 글
개발자 성장 기록 47 - DELETE, TRUNCATE, DROP (0) | 2024.04.12 |
---|---|
개발자 성장 기록 40 - Redis (0) | 2024.04.04 |
개발자 취준 기록 29 - DDL, DML, DCL (0) | 2024.03.25 |
[항해 취업 코스] 개발자 취준 기록 28 - 쿼리 최적화, DB 로직 최소화 (0) | 2024.03.22 |
[항해 취업코스] 개발자 취준 기록 21 - RDBMS의 정규화 (3) | 2024.03.14 |