TIL

24.10.10 TIL

skyteer0 2024. 10. 10. 21:07

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