유니크
만약 회원가입을 위한 데이터들을 입력했다고 하자
insert into user
(email, password, nickname)
values
('abc@naver.com', '1234', '홍길동');
그런데 시간이 흘러 어떤 유저가 내가 이걸 가입을 했었는지
기억을 못하고
다시 했다고 해보자
닉네임과 비밀번호는 다르게 했다고 치고
이메일을 중복으로 했다고 하자
insert into user
(email, password, nickname)
values
('abc@naver.com', '4567', '길동이');
그랬을때 아무런 문제 없이 이게 등록이 되면
문제가 있다
버그가 발생할 수도 있고
취약점이 생길 수도 있고
아무튼
그렇다면 이런 일을 방지해야 한다
테이블 설정으로 들어가서
UQ - Unique 버튼을 체크해주고 어플라이를 한뒤에
다시 같은 이메일로 가입을 하려고 한다면
에러가 뜨면서
해당 이메일은 유니크하기때문에 불가능하다는 메세지가 나오게 되고
중복 가입을 막게 된다
이중 유니크
위의 경우에선 한 가지의 유니크함이 있었다
아래의 경우에선
101번 id가 1번의 id에게 팔로우를 했다고 하자
insert into follow
(followerId, followeeId)
values
(101, 1) ;
근데 한번 더 팔로우를 했다고 한다면
이렇게 계속 추가적으로 팔로우가 되게 된다
이는 어뷰징이며 거짓 팔로우 숫자가 되게 된다
그렇다면 이것을 막아야하고
2번 하면 취소가 되게끔 해야겠다
이번에도 테이블 설정으로 들어가는데
이번 경우처럼 단일설정의 유니크가 아니라
두개의 데이터가 연관되어지는 유니크함은
테이블 설정 하단의 인덱스로 들어가야한다
인덱스를 클릭하고
이름은 보기 편하게 알아서 짓고
인덱스 버튼을 눌러 아래의 UNIQUE 버튼을 클릭하자
그러면 우측화면의 새로운 화면이 나오는데
이 때 연결되어 유니크함이 생겨야 하는 데이터를 더블 체크 해주자
그리고 다시 팔로우를 하려고 한다고 하면
insert into follow
(followerId, followeeId)
values
(101, 1) ;
그 값들은 중복데이터라 안된다는 에러메세지가 나오게 된다
'MYSQL' 카테고리의 다른 글
MYSQL - like 문자열컬럼 fulltext (0) | 2024.05.20 |
---|---|
MYSQL - 이중 조건 처리 (0) | 2024.05.17 |
MYSQL - 다중테이블 (0) | 2024.05.16 |
MYSQL - 이중테이블, foreign key, join( ) -left,right, cascade (0) | 2024.05.16 |
MYSQL - createdAt now( ) 작성시간, updateAt on update now( )수정시간 (0) | 2024.05.16 |