테스트 사이트 - 개발 중인 베타 버전입니다

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

amkorDB 7년 전 조회 3,187

 

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개

채택된 답변
+20 포인트

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개까지만 들어갈것 같아요

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

a
amkorDB
7년 전
선배님
option_id는 중복으로 오는 경우가 있습니다.
음 무슨말씀이신지ㅠㅠ

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인