Programming/Database

데이터 모델링 :: 2. PK 선정하기

WANJIN 2017. 4. 17. 23:40
반응형

2. PK(Primary Key, 주키) 선정하기

각 엔티티(테이블)의 속성(컬럼)들 중에 바뀔 염려가 없으며, 해당 엔티티를 식별할 수 있는(중복되지 않는) 것을 주키(PK)로 선정한다.

이 때, 주키로 사용할만한 속성이 없는 경우에는 임의의 인공 컬럼(속성)을 새로 만들어서 주키로 사용한다.


그렇다면 어떤 경우에 인공 컬럼을 만들어 주키로 선정하는 것이 좋을까?

  • 향후 변경 가능성이 있는 속성을 주키로 사용하는 것은 바람직하지 않다.
    예를 들어, '학생' 테이블에서 '이메일' 속성은 향후 변경 가능성있다.
     있으므로 주키로 선정하기에 바람직하지 않다.



  • 주키로 사용할 속성에 들어갈 내용이 길어지는 것 또한 바람직하지 않다.
    예를 들어, '과목' 테이블에서 '과목명' 컬럼은 문자열이 길어질 가능성이 있으므로 임의의 인공 컬럼을 만들어 사용하는 것이 좋다..

    (주키는 주로 검색에 많이 이용이 되는데, 담고 있는 내용이 길어지면 그 속도가 느려질 수 있기 때문인듯)


대부분의 경우 인공 컬럼을 만들어 번호를 붙여 사용한다.


어떤 테이블의 경우는 두 개의 컬럼을 합쳐서 PK로 사용하기도 한다. 

다 대 다 관계 해소를 위해 새로 테이블을 만들어주는 경우나, 제 1 ~ 3 정규화를 통해 테이블을 따로 떼주면서 테이블 새로 만들어주는 경우 등에 

두 컬럼을 합쳐서 PK가 생기는 일이 발생하곤 한다.


모델링 초반엔 일어날 일이 거의 없으므로 생략하고 넘어가겠당. 




반응형