본문 바로가기

Database/DB Modeling

[DB Modeling] 데이터 베이스 중급 - Primary Key 설계

✅  고려사항

  • 유일하고, 모든 레코드에 NOT NULL일 수 있는 컬럼을 찾는다
  • 후보 식별자가 없는 경우 임의의 식별자를 만들어 부여한다(인조 식별자)
  • PK의 데이터 타입 결정
    1. 레코드의 발생 가능한 최대 수를 예측한다.
      예 ) 1년에 몇 개 정도 발생하는가? 한달에 몇 개 정도 발생하는가?
      예 ) 처리해야 하는 대상이 대략 몇 개정도 되는가?

    2. 만일 대상 레코드가 수십 만개 정도라면 999,999로 커버할 수 있다.
      따라서 32bit int(2, 147,483,647)를 사용할 수 있다.
      varchar(6)을 사용해서 '999999'까지 처리할 수 있다.
    3. PK의 데이터 타입 후보를 대상으로 다음을 고려한다.
      int 등 숫자를 PK로 채택할 경우 자동 증분 속성을 사용할 수 있다 (편리성)
      String을 사용하면 숫자가 아닌 문자를 섞어서 PK값에 의미를 부여할 수 있다.
      특별한 의미를 부여할 필요가 없을 경우 정수형을 사용하는 것이 바람직하다.

    4. PK는 고유 식별자 기능으로 충분
      PK값에 어떤 의미를 부여하는 것은 부담

 

✏️ 공부한 내용

  • 컬럼에서 사용하는게 아니라 인조식별자 PK값으로 사용할 값을 사용해서 사용하는경우가 더 많다. 
  • 설계하려는 데이터 크기에 따라서 해당 하는 값을 생각해서 데이터타입을 설정해야된다. ( 확실히 데이터타입을 어떨때 어떤게 써야되고 어떤게 적합한지는 알아야될거같다)
  • PK를 INT로하면 자동증분기능을 이용해서 편한다 ( 편한거뿐만 아니라 동시에 만약 INSERT할 경우 100명 1000명이면 넣기가 어렵다 여러명이 동시에 넣을경우 )