UNIQUE 제약 조건은 특정 컬럼에서 중복된 값이 허용되지 않도록 설정하는 조건이다.
예를 들면 사용자가 로그인을 시도할 때 이메일이나 아이디 중복을 허용할 경우 이름, 나이 , 닉네임 같은 추가 정보를 입력받아야 사용자를 특정할 수 있을 것이다.
CREATE TABLE Users
(
userId int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
name varchar(255) NOT NULL UNIQUE
);
이런식으로 name이라는 컬럼에 중복된 값이 허용되지 않도록 UNIQUE라는 키를 설정 해준다.
INSERT INTO Users (name) VALUES ('홍길동');
INSERT INTO Users (name) VALUES ('홍길동');
이런 식으로 같은 값의 name 컬럼을 추가한다고 한다면 이런 오류가 나오게 될것이다.
Error: ER_DUP_ENTRY: Duplicate entry ' 홍길동 ' for key 'Users.name'
이처럼 UNIQUE는 고유 제약 조건으로 중복된 데이터를 삽입시키지 않도록 설정할 수 있다.
그리고 마지막으로 기본 키 (PRIMARY)를 적용한 컬럼은 고유 제약 조건이 자종으로 적용되어 있다.
Foreign Key (외래 키)제약 조건
Foreign Key는 테이블간의 연관 관계(Relation Ship)를 표현할 때 사용한다.
연관 관계는 대표적으로 3가지 형태로 표현할 수 있다.
1:1 - 1명의 사용자(User)는 1개의 사용자 정보(UserInfo)를 가질 수 있다.
1:N - 1명의 사용자는 여러개의 주문(Order)을 할 수 있다.
N:M - 여러명의 학생(Student)은 여러개의 학원(School)을 등록할 수 있다.
CREATE TABLE Garden
(
gardenId INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL,
address VARCHAR(255) NOT NULL
);
CREATE TABLE GardenPlants
( gardenPlantsId INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
gardenId INT(11) NOT NULL,
name VARCHAR(255) NOT NULL,
FOREIGN KEY (gardenId) REFERENCES Garden (gardenId)
);
위 구문으로 테이블을 생성하게 된다면 gardenId는 GardenPlants 테이블에서 Garden테이블을 참조한는 외래키가 되는 것이다. 이것은 GardenPlants 테이블의 각 행이 실제로 존재하는 Garden 테이블의 행을 참조하도록 보장하는 것이다.
이렇게 외래키를 사용하여 GardenPlants 테이블의 행이 어떤 Garden에 속해 있는지 알 수 있게 된다.
'TIL' 카테고리의 다른 글
| 24.10.11 TIL (1) | 2024.10.11 |
|---|---|
| 24.10.01 TIL (1) | 2024.10.01 |
| 24.09.25 TIL (3) | 2024.09.25 |
| 24.09.24 TIL (1) | 2024.09.24 |
| 24.09.23 TIL (0) | 2024.09.23 |