primary key (이름, 번호) 로 할 때 0 6 115

by 류준영 [MySQL] [2018.02.12 11:21:17]


이름은 중복가능성이 있고 , 번호는 유니크 한데 , 

검색에 사용하는게 보통 이름으로 검색을 합니다. 

그래서 primary key를 테이블에서 번호로 하려다가 

 

primary key(이름, 번호) 로 하려고 하는데 

이러면 문제가 되는게 있을까요..?  (

 

아 또 아주 기본적인 예인데  다른테이블이지만 같은 애트리뷰트 이름을 쓰는 것에 대해서는 어떻게 생각하시나요..? 

모델링할때 같은이름을 쓰지않는것이 좋다고 들었는데.. 외래키로 참조해볼때 같은 이름이 나을지도 궁금합니다.! 

by 우리집아찌 [2018.02.12 11:24:36]

primary key 자체가 유일성이 보장되어야합니다. 

번호로 primary key를 잡으시고 이름은 INDEX를 추가하세요.


by 우리집아찌 [2018.02.12 11:25:12]

추가하자면 이름이 변경이 생길수도 있다면 식별자 후보에서 제외하시는것이 좋습니다.


by 류준영 [2018.02.12 11:30:17]

이름 변경은 없을꺼 같아요. 감사합니다.


by 우리집아찌 [2018.02.12 12:27:14]

아 중복도 되는건데 깜박했네요..

중복도 유일성이 보장되지않습니다.

이름변경은 거의 없지만 생길경우 PK로 잡히면 해당되는

모든테이블의 데이타가 변경되야하기 때문에 PK로 만드시면 안됩니다.

 


by 미스틱매니아 [2018.02.12 14:09:18]

번호가 유일하다면 (이름,번호) 조합도 당연히 이름중복과 상관없이 유일성을 띄기 때문에 PK 사용이 가능합니다...만 이러면 정작 더 효율적인 번호조회에 대한 인덱스 유니크 스캔을 태우기 위해 인덱스 하나 더 만드는 사태가 벌어지죠.

 

윗분 말대로 이름은 인덱스 별도 생성하고, PK는 조회조건 빈도수에 따라 번호 단독컬럼 혹은 (번호,이름) 컬럼으로 하는게 나을거 같습니다. 


by 마농 [2018.02.12 15:30:51]

(이름,번호) 로 PK 를 만들면 번호가 중복될 수 있습니다.
PK 는 번호로만 만드는게 맞습니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입