DB의 KEY

강준호·2024년 1월 29일
0

기술면접

목록 보기
6/9

DB의 KEY

Super key(슈퍼키)

Books Table (Extended):
+--------+----------------+-----------+-------------+
| BookID | Title          | AuthorID  | Publication |
+--------+----------------+-----------+-------------+
| 1      | "Great Gatsby" | 100       | 1925        |
| 2      | "1984"         | 101       | 1949        |
| 3      | "Moby Dick"    | 102       | 1851        |
+--------+----------------+-----------+-------------+

사전적 정의

  • 집합적으로 테이블의 행을 고유하게 식별할 수 있는 하나 이상의 열 집합

예시

  • 여기서는 BookID와 BookID + Title은 모두 슈퍼 키.

  • BookID + Title 을 묶어 하나의 속성으로 만들 수도 있다. 어떤 속성끼리 묶던 그중에서 중복만 되지 않고 구별만 가능하면 되기 때문!

  • Title 만으로는 중복 가능성이 있어서 슈퍼키가 될 수 없음.

특징

  • 모든 테이블에는 테이블의 모든 열 집합인 슈퍼 키가 하나 이상 있습니다.
  • 슈퍼 키에는 고유 식별에 필요하지 않은 추가 열이 포함될 수 있습니다.
  • 그러나 불필요한 열이 없는 가장 최소한의 슈퍼 키가 후보 키입니다. 기본 키는 최소 슈퍼 키의 특별한 경우입니다.

Candidate key(후보키)

Authors Table (Extended):
+----------+---------------+-----------------------+-----------+
| AuthorID | Name          | Email                 | SSN(사회보장번호)|
+----------+---------------+-----------------------+-----------+
| 100      | F. Scott      | f.scott@example.com   | 555-01-01 |
| 101      | George Orwell | george.o@example.com  | 555-02-02 |
| 102      | Herman Melvil | (NULL)                | 555-03-03 |
+----------+---------------+-----------------------+-----------+

사전적 정의

  • 후보 키는 모든 테이블 행을 고유하게 식별할 수 있고 기본 키가 될 후보인 열 또는 열 집합입니다.

예시

  • 여기서 후보키가 가능한것은 AuthorID와 SSN.
  • 모두 테이블에서 작성자를 고유하게 식별하여 후보 키가 될 수 있기 때문.
  • (그러나 단순성과 개인 정보 보호 문제를 위해 'AuthorID'가 기본 키로 선택됩니다.)

특징

  • 테이블에는 여러 후보 키가 있을 수 있으며 각 후보 키는 기본 키 역할을 할 수 있습니다.

  • 그러나 이러한 후보 키 중 하나만 기본 키로 선택됩니다.

  • 모든 후보 키는 기본 키 역할을 할 수 있지만! 실용적인 이유(예: 미니멀리즘 또는 명확성)에 따라 단일 기본 키를 선택해야 합니다.

  • 기본 키로 선택되지 않은 다른 후보 키(탈락한 놈들🥲) => 고유 키로 지정가능!

Primary key(기본키)

Books Table:
+--------+----------------+-----------+
| BookID | Title          | AuthorID  |
+--------+----------------+-----------+
| 1      | "Great Gatsby" | 100       |
| 2      | "1984"         | 101       |
| 3      | "Moby Dick"    | 102       |
+--------+----------------+-----------+

사전적 정의

-기본 키는 테이블의 각 행을 고유하게 식별하는 테이블의 열(또는 열 집합)입니다.

예시

  • BookID 가 Books 의 기본키!
  • 두 권의 책은 동일한 'BookID'를 가질 수 없으며 모든 책에는 'BookID'가 있어야 합니다.

특징

  • 두 행은 동일한 기본 키 값을 가질 수 없으며 기본 키는 NULL 값을 포함할 수 없습니다.
  • 기본 키 열에 중복 값이나 Null 값이 존재하지 않도록 하여 고유성과 무결성을 강화합니다.
  • 예를 들어, 직원 테이블에서는 각 직원 ID가 고유하므로 직원 ID 열이 기본 키 역할을 할 수 있습니다.
  • 속성 정리: 유니크 + not null

Unieque key(고유 키) = (대체키)

Authors Table:
+----------+---------------+-----------------------+
| AuthorID | Name          | Email                 |
+----------+---------------+-----------------------+
| 100      | F. Scott      | f.scott@example.com   |
| 101      | George Orwell | george.o@example.com  |
| 102      | Herman Melvil | (NULL)                |
+----------+---------------+-----------------------+

사전적 정의

  • 고유 키는 기본 키와 유사하게 자신이 정의된 열 또는 열 집합에 고유성을 적용합니다.

예시

  • 기본 키는 'AuthorID', 'Email' 열은 고유 키

  • 작성자가 잠재적으로 파일에 이메일 주소를 갖고 있지 않더라도 테이블의 두 작성자가 동일한 이메일 주소를 가질 수 없습니다(고유키로 지정하면 두 명의 직원이 동일한 이메일 주소를 가지지 않도록 할 수 있다.)

  • 예시)2. 각 책에는 ISBN 번호가 있는데, 이는 각 제목마다 고유하지만 책의 각 사본에는 고유하지 않습니다. => 기본키로 지정하기 애매..

  • 또 ISBN이 없는 책도 있음 => 고유키는 null 값 허용해서 괜춘!

특징

  • 기본 키와 달리 고유 키는 NULL 값을 허용할 수 있습니다(그러나 데이터베이스 시스템에서 Null이 고유한 것으로 간주되지 않는 경우 하나의 NULL 값만 허용됩니다).

  • 테이블에는 기본 키 외에도 여러 개의 고유 키가 있을 수 있습니다.

Foreign key(외래키)

Books Table:
+--------+----------------+-----------+
| BookID | Title          | AuthorID  |
+--------+----------------+-----------+
| 1      | "Great Gatsby" | 100       |
| 2      | "1984"         | 101       |
| 3      | "Moby Dick"    | 102       |
+--------+----------------+-----------+

사전적 정의

  • 외래 키는 다른 테이블의 기본 키를 참조하는 한 테이블의 열 또는 열 집합입니다.

예시

  • Books 테이블에는 Authors 테이블의 AuthorID와 일치하는 AuthorID 가 있음.
  • Books 테이블의 이 AuthorID는 외래 키

특징

  • 외래 키의 목적은 데이터베이스 내에서 참조 무결성을 강화하는 것입니다.
  • 외래 키 열의 값이 다른 테이블의 기본 키 값과 일치하는지 확인하여 두 테이블 간의 관계를 설정합니다.
  • 예를 들어 직원 테이블에서 department_id라는 열은 departments 테이블에 연결되는 외래 키일 수 있습니다.

카디널리티와 인덱싱.
인덱스가 될 수 있는 우선순위


Primary Key(기본키) VS Unique Key(고유 키)

비교

Null 값

  • 기본 키는 NULL 값 X
  • 고유 키는 일반적으로 단일 NULL 값 O

다중성 여부

  • 테이블에는 기본 키가 하나만
  • 고유 키는 여러 개 가능

(목적)

  • 기본 키와 고유 키 모두 고유성을 적용하기 위해 사용!

  • 기본 키는 테이블 내 레코드의 기본 식별자 역할

  • 고유 키는 기본 키가 아닌 특정 열의 고유성을 보장합니다.

외래 키 참조 여부

  • 기본 키는 다른 테이블의 외래 키에 의해 참조되는 경우가 많다.
  • 고유 키는 외래 키에 의해 참조될 수 있지만 이러한 목적으로 덜 사용

Quiz?

1. 테이블에는 행의 고유성을 보장하기 위해 여러 개의 기본 키가 있다?

2. 모든 후보 키는 슈퍼 키가 될 수 있는가?


답변: X O

0개의 댓글