[MYSQL] 특정 유니크값 지정 관련 질문 있습니다!

[MYSQL] 특정 유니크값 지정 관련 질문 있습니다!

QA

[MYSQL] 특정 유니크값 지정 관련 질문 있습니다!

답변 2

본문

 

OPTION

id subject
1 안녕
2 우리집

 

OPTION_DEVICE

id option_id type      
1 1 korea      
2 1 usa      
3 2 usa      
4 2 uk      

 

type => enum('korea', 'usa', 'uk');

 

 

안녕하세요 선배님

 

우선 저위에 2개 테이블 option, option_device이 있습니다.

 

option 테이블이 부모고 option_device이 자식 테이블입니다.

option 테이블 id값이 option_device테이블의 option_id값으로 매칭되고

ONE TO MANY 구조로 되어 있습니다.

 

option_device의 enum으로 'korea', 'usa', 'uk' 3개가 있습니다.

 

 

 

여기서 조건이 있습니다.

 

만약 option을 등록시 type( 'korea', 'usa', 'uk' )을 원하는 타입을 선택한다면

 

 

option 테이블에 row가 추가되고 서로 매칭 되면서 option_device 테이블에 선택한 타입에 각각 insert가 되는 구조 입니다.

 

조건이 이라면

 

1. 해당 option의 id값이 즉 option_device테이블에 option_id값들이 type 갯수 만큼 3개 이상 추가가 되면 안되고

 

2. 해당 option의 id값이 즉 option_device테이블에 option_id값들이 중복 type 값들이 있으면 안됩니다.

 

MYSQL에서는 이런 기능이 있는건가요?

 

만약 있다면 어떻게 구현을 해야 할까요?

 

소스상으로는 INSERT시 이 2가지 유효성 검사를 분명히 하고 있습니다.

 

제가 원하는 것은 자체적으로 MYSQL에서 INSERT시 에러를 나타날수 있도록 옵션값 추가 입니다 ㅠ,ㅠ

 

선배님들 조언 부탁드립니다.

 

감사합니다.

 

 

 

이 질문에 댓글 쓰기 :

답변 2

OPTION_DEVICE 테이블에 option_id, type을 UNIQUE KEY 로 잡으면

(option_id와 type를 합해서 UNIQUE KEY로 잡는다는 말임)

 

option_id 가 1이라고 가정할 떄

1 korea 정상입력

1 usa 정상입력

1 uk 정상입력

1 usa 키오류로 입력되지 않음

1 korea 키오류로 입력되지 안음

1 uk 키오류로 입력되지 않음

맥시멈 3줄까지만 입력된다는 말입니다.

 

일단 OPTION_DEVICE 테이블에
option_id 와 type을 UNIQUE KEY 로 잡으시면 되지 않나요??

type의 갯수만큼만 row가 들어가겠네요
만약에 타입이 4가지라면 4개까지만 들어갈것 같아요

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 29
© SIRSOFT
현재 페이지 제일 처음으로