ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Primary Key, Unique Index 에 대하여
    Technique/RDBMS 2015. 12. 23. 23:04
    반응형

    Primary Key를 아무생각없이 넣거나,

    단순히 개발의 용이성과, 유지보수의 편의성때문에 Unique Index를 당연시 여기거나 하는가?



    항목

    Primary key

    Unique Index

     목적

    Constraint + Index

    Index

     공통점

     유일성 보장

    유일성 보장

     참조 무결성

    PK/FK에 의해 지정가능

    지정 불가능

     테이블당 개수

     1개만 가능

    여러개 가능

     인덱스 생성

     Unique Index 생성

    Unique Index 생성

     역공학 적용 시

     PK 인식가능

    PK 인식 불가능

     Null 허용

     허용 안됨

    허용됨


    PK와 UI가 비슷한 것 같지만 세부적인 애용에 잉서서는 차이가 분명히 있다.


    Unique Index만을 이용하였을 때 장단점


    장점

    단점

    - PK/FK가 존재하지 않아 DBA가 데이터베이스를 관리하기 쉽다/

    - 데이터의 무결성이 깨어질 수 있다.

    - 데이터의 무결성이 깨지므로 데이터전환작업 시 데이터 정리 작업이 필요하다

     - 개발 시점에 데이터 제약이 없으므로 개발이 용이하다

    - 데이터 모델과 테이블의 관계가 일치하지 않는다.

     - PK/FK 를 이용하지 않기 때문에 성능이 좋아질 수도 있다.

    - Unique Index 는 한 테이블에 여러 개 만들 수 있으므로 테이블만을 보고는 PK가 무엇인지 구분 할 수 없다.


    Primary Key 의 장점


    장점

    - 전체 데이터베이스에 대한 PK/FK 관계를 설정할 수 있어 참조 무결성 제약 조건 지정이 가능하다.

    - 따라서 참조 무결성을 깨트리는 무결성 오류를 방지할 수 있다.

    - 유일성을 보장할 수 있다.

    - PK 속성에 대해서 NULL을 허용하지 않는다.

    - 테이블에 한 개의 PK만 허용이 되므로 향후 데이터베이스에서 역공학을 적용하여 데이터 모델을 생성해도 명확하게 PK가 무엇인지 구분이 가능하다.

    - FK를 설정하지 않는다면 UI만을 사용하는 것에 비해 성능 저하가 나타나지 않는다.

    - FK를 사용해도 FK 인덱스만 적절하게 설정해 준다면 염려할 만큼 과도한 성능 저하 현상은 유발되지 않는다.


    UI가 PK에 비해 장점이 있다고 하면 개발과 유지보수에 있어서 약간의 편리함을 제공한다는 것이다.

    데이터 모델링을 할 때 데이터 무결성, 데이터베이스 성능, 데이터베이스 관리의 용이성, 개발자 편의성 이라는 4가지 기준에 의해 판단을 해야한다.


    ■ 성능저하 소문의 정체란?

    서버의 환경이 열악하던 시절 PK/FK를 제공한 DBMS의 문제가 어느정도 존재하던 시절이 있엇다. 심각한 문제는 FK가 설정된 테이블에 인덱스가 제대로 설정되어 있지 않아 내부적으로 Full Scan을 유발하는 경우가 많았다는 것.




    위에 말한 것 처럼 무작정 PK만을 고집하진 않는가??

    어떠한 장점이 있고, UI에 비해 어떠한점이 더 뛰어 나기에 PK를 당연시 하는지 잘 알고 넘어 가는 마음에 정리해 보았다.

    반응형

    댓글

Designed by Tistory.