MySQL

MySQL) Instargram - 유니크와 이중유니크 : 클라이언트가 동일 인물을 중복 팔로우 하면 오류 뜨게 하기

567Rabbit 2024. 5. 20. 10:35

1. 유니크

 

- 단일 컬럼의 값이 중복되지 않도록 하는 것이다

 

 

username은 그 자체로 UQ(unique) 해야한다.

 

 

username에 UQ를 체크하면, 동일한 username은 존재할 수 없고,

 

같은 username으로 회원가입하려고 하면, 오류메세지를 띄워 다른 username으로 가입하게 할 수 있다.

 

 

 

 

2. 이중유니크

 

- 두 개 이상의 컬럼 조합의 값이 중복되지 않도록 하는 것이다.

 

팔로우와 팔로잉하는 사람은 여러명이 발생할 수 있다.

 

예를 들면 'abcd' 라는 사람은 'ef'와 'gh'라는 사람을 동시에 팔로우 할 수 있다.

 

followerId   followeeId

   'abcd'            'ef'

   'abcd'            'gh'

 

그러므로 followerId는 그 자체로는 중복되어도 상관없다.

 

예제로는 나타내지 않았지만, followeeId 컬럼도 그 자체로는 중복되어도 상관 없다.

 

 

그러나 아래와 같이 중복되어 같은 사람을  또 팔로우한다면 문제가 발생한다.

insert into follow
(followerId, followeeId)
values
(101, 1) ;

insert into follow
(followerId, followeeId)
values
(101, 1) ;

 

같은사람이 같은사람을 두번 이상 팔로우 할 수 있다면 문제가 발생할 것이므로

 

(followerId, followeeId) 두 값이 동시에 같은값이 된다면 안된다.

 

 

따라서 이중유니크를 설정하기 위해서는 아래에 위치한 Index로 이동해서,

 

 

 

 

인덱스 이름은 자유롭게 설정하고, Type을 UNIQUE로 바꿔준다음,

 

Index Columns에서 중복되지 않게 할 컬럼을 체크해준다.

 

 

 

 

 

 

APPLY 하여 적용하면 이중유니크를 설정할 수 있다.