관계형 데이터베이스(RDBMS), 주식별자와 후보식별자
Programming/데이터베이스

관계형 데이터베이스(RDBMS), 주식별자와 후보식별자

1. 관계형 데이터베이스

  데이터베이스란 구조화된 데이터들의 집합이다.

  1) 관계형 데이터베이스 특징

  • 고유 식별자
    • 테이블은 각 행(레코드)를 식별하기 위해 고유 식별자를 정의할 수 있음
    • 고유 식별자는 Not NULL, UNIQUE 속성을 갖음
    • 고유 식별자는 하나 또는 여러 개의 컬럼들로 정의할 수 있음
  • 참조 무결성
    • 테이블에서 외래키를 선언
    • 외래키는 다른 테이블에 정의된 고유 식별자를 참조
    • 외래키의 값은 다른 테이블에 정의된 고유 식별자의 값의 범위를 넘을 수 없도록 제한됨

2. 주식별자와 후보식별자

  1) 키의 정의

  • 하나의 테이블에서 각 레코드를 고유하게 식별할 수 있는 컬럼 또는 컬럼의 조합
  • 키의 조건은 NOT NULL, UNIQUE(유일성)
  • 테이블 디자인 시 키를 정하고 테이블을 데이터베이스에 만들 때 명시적으로 키를 선언함
  • 키는 키에 대응하는 인덱스 테이블이 생성됨
    • 인덱스 테이블은 키값에의해서 정렬되어 있음 => 덕분에 몇백만건의 레코드도 단번에 찾아낼 수 있다.

  2) 주 식별자 (Primary Key)

  • 하나의 레코드를 고유하게 구분할 수 있는 것으로 하나의 컬럼 또는 여러개의 컬럼이 모여 Primary Key를 구성
  • NOT NULL & Unique
    • 식별자는 모두 Unique이다. 이 중 NOT NULL 속성을 갖는 것이 주식별자가 될 수 있다.
  • Primary Key는 테이블 등록시 명시해주어야함
  • 만일 ID가 Primary Key로 선언되지 않았으면 번호들이 중복으로 들어가는 것이 허용됨
  • 만일 ID가 Primary Key로 선언되면 중복된 값을 넣으려고 할 때 거부되며 오류가 발생

  3) 후보 식별자 (Candidate Identifier)

  • 주 식별자가 될 가능성이 있는 식별자
  • 모든 식별자는 주 식별자가 될 수 있는 후보이므로, 식별자와 후보식별자는 사실상 동일어 

Q1. 만약 이런 테이블이 있다면 이중 후보식별자가 될 수 있는 컬럼은 무엇일까?

후보식별자가 될 수 있는 컬럼은 주민번호, 폰번호, 이메일, 고객번호이다. 이 컬럼들은 모두 UNIQUE 속성을 갖기 때문이다.

 

Q2. 위 후보식별자 중 주식별자(Primary Key, PK)로 가장 적합한 컬럼은 무엇일까?

먼저, 폰번호와 이메일은 적합하지 않다. 핸드폰이나 이메일이 없는 사람도 있기 때문이다. 즉, NOT NULL 조건을 만족하지 않는다.

다음으로, 주민번호는 고객 측에서 제공한 데이터이기에 위험부담이 있다. 보통 고객 측에서 제공한 데이터는 주 식별자로 활용하지 않는다.

 > 고객번호는 우리가 직접 부여한 번호이고, UNIQUE, NOT NULL 속성을 만족하기에 주식별자로 가장 적합하다고 할 수 있다.

 

  • 결정자(Determinant) : 이 값을 알면 나머지 속성 값도 알 수 있는 속성

'Programming > 데이터베이스' 카테고리의 다른 글

[PostgreSQL] json, jsonb 타입과 연산자  (0) 2024.01.21
M:N 관계  (0) 2021.07.21
1:M 재귀적 관계  (0) 2021.07.20
1:M 관계  (0) 2021.07.20
주 식별자 (Primary Key) 설계  (0) 2021.07.20