기본 키와 고유 키의 차이점


252

mysql 데이터베이스를 사용하고 있습니다. 기본 키와 고유 키가 혼동됩니다.

기본 및 고유 키를 어디에서 만들어야합니까? 어떤 상황에서 우리는 고유 키 또는 기본 키를 만듭니다.


9
wrt null-ability는 그들을 구별하는 좋은 방법입니다 PRIMARY KEY = UNIQUE KEY + Not Null CONSTRAINT
KNU

답변:


233

기본 키 :

  • 테이블에는 기본 키가 하나만있을 수 있습니다
  • 일부 DBMS에서는 불가능합니다 NULL-예를 들어 MySQL 추가NOT NULL
  • 기본 키는 레코드의 고유 키 식별자입니다.

고유 키 :

  • 하나의 테이블에서 둘 이상의 고유 키일 수 있음
  • 고유 키는 NULL값 을 가질 수 있습니다
  • 후보 키가 될 수 있습니다
  • 고유 키는 NULL; 여러 행은 NULL값 을 가질 수 있으므로 "고유 한"것으로 간주되지 않을 수 있습니다

11
또한 기본 키 (CustomerID, ProductID)와 같은 여러 열에 기본 키를 추가 할 수 있습니다. 이를 복합 기본 키라고합니다. 이것은 sql에 대한 새로운 사용자에 의해 (하나의 키 => 하나의 열을 읽음) 수행 할 수 있기 때문에 첫 번째 요점을 분명히하는 것입니다.)
ken

1
'후보 키가 될 수있다'는 당신의 의미는 무엇입니까?

1
"단일 null 만 허용됩니다"– 이것은 MySQL에는 해당되지 않습니다.
Jānis Elmeris

69
고유 키는 null이 될 수 있으며, 고유하지 않을 수 있습니다 수단을 ??
Pratik

20
@PratikCJoshi 그는 아마도 다른 고유 키에서 null을 가진 여러 행이 될 수 있음을 의미합니다.
John

77

고유 키 (UK) : 행의 고유성을 식별 할 수있는 열 또는 열 그룹입니다.

기본 키 (PK) : 행의 고유성을 식별 할 수있는 열 또는 열 그룹 이기도 합니다.

따라서 기본 키는 고유 키의 또 다른 이름이지만 SQL Server의 기본 구현은 기본 및 고유 키와 다릅니다.

기본적으로:

  1. PK는 클러스터형 인덱스를 생성하고 UK는 비 클러스터형 인덱스를 생성합니다.
  2. PK는 null이 아니지만 영국에서는 null을 허용합니다 (참고 : 기본적으로)
  3. 테이블에는 하나의 PK 만있을 수 있지만 여러 개의 영국인이있을 수 있습니다
  4. 필요에 따라 기본 구현을 무시할 수 있습니다.

영국 또는 PK를 만들지 여부를 결정할 때 실제로 목표에 달려 있습니다. "3 명으로 구성된 팀이 있으면 모두 동료이지만 PK와 영국은 비슷한 관계를 가진 동료가 될 것입니다."와 같은 비유를 따릅니다. 이 기사를 읽는 것이 좋습니다 : 저자가 제시 한 예는 적합하지 않을 수도 있지만 전반적인 아이디어를 얻으려고 노력하십시오.

http://tsqltips.blogspot.com/2012/06/difference-between-unique-key-and.html


PK에 둘 이상의 열이 포함될 수있는 약 10 개의 웹 페이지를 읽습니다. 그렇다면 어떻게 테이블에 하나의 PK 만있을 수 있습니까?

@android 둘 이상의 열이있는 PK는 고유성과 관련하여 단일 열로 작동합니다. PostgreSQL에서 최소한 이것은 새로운 열 (기본 이름 [table_name]_pkey)이 테이블에 추가됨을 의미합니다 (이것은 대리 키라고 들었습니다). 출처 : postgresqltutorial.com/postgresql-primary-key 이 모든 것을 처음 했기 때문에 내가 놓친 뉘앙스를 지적하는 더 지식이 풍부한 포스터에 감사드립니다.
Poik

좋아요, 열이 아닙니다. 나는 잘못 읽었다. 열이 아닌 금기 사항입니다. 여전히 클러스터형 인덱스가 있지만 하나가 아닌 두 개가 넘는 열입니다. 그리고 열의 각 열은 기본 키가 아니라 전체 세트가 기본 키입니다. 따라서 이러한 경우에는 PK가 두 개 이상 없습니다.
Poik

46

조직이나 비즈니스의 경우 물리적 개체 (사람, 리소스, 시스템 등)와 가상 개체 (작업, 트랜잭션, 활동)가 너무 많습니다. 일반적으로 비즈니스는 해당 비즈니스 엔터티의 정보를 기록하고 처리해야합니다. 이러한 비즈니스 항목은 전체 비즈니스 도메인 내에서 키로 식별됩니다.

예상 RDBMS에 따라 키 (일명 후보 키)는 엔터티를 고유하게 식별하는 값 또는 값 집합입니다.

DB-Table의 경우 너무 많은 키가 존재하며 기본 키를 사용할 수 있습니다. 모든 키, 기본 키, 고유 키 등을 총칭하여 후보 키라고합니다. 그러나 DBA는 레코드 검색을 위해 후보 키에서 키를 선택한 것을 기본 키라고합니다.

기본 키와 고유 키의 차이점

1. 동작 : 기본 키는 테이블에서 행 (레코드)을 식별하는 데 사용되는 반면 고유 키는 열의 중복 값을 방지합니다 (널 항목 제외).

2. 인덱싱 : 기본적으로 SQL 엔진은 존재하지 않는 경우 기본 키에 클러스터형 인덱스를 만들고 고유 키에는 비 클러스터형 인덱스를 만듭니다.

3. Nullability : 기본 키에는 Null 값이 포함되지 않지만 Unique 키는 포함됩니다.

4. 존재 : 테이블은 최대 하나의 기본 키를 가질 수 있지만 고유 키는 여러 개있을 수 있습니다.

5. 수정 가능성 : 기본 값을 변경하거나 삭제할 수 없지만 고유 키 값은 가능합니다.

자세한 정보 및 예 :

http://dotnetauthorities.blogspot.in/2013/11/Microsoft-SQL-Server-Training-Online-Learning-Classes-Integrity-Constraints-PrimaryKey-Unique-Key_27.html


7
5 단계에서는 기본 값을 변경하거나 삭제할 수 없습니다. update 문을 사용하여 테이블의 기본 값을 변경할 수 있습니다.
Kapil

3
@Kapil은 기본 키를 사용하는 전체 목적을 능가합니다.
Gokigooooks

2
클러스터형 인덱스 : 행은 인덱스와 동일한 순서로 디스크에 물리적으로 저장됩니다.
Duy Đặng

26

기본 키는 고유해야합니다.

고유 키가 기본 키일 필요는 없습니다 ( 후보 키 참조) .

즉, 행을 고유하게 식별 할 수있는 테이블에 둘 이상의 열 조합이있을 수 있습니다.이 중 하나만 기본 키로 선택할 수 있습니다. 다른 하나는 고유하지만 후보 키입니다.


17

기본 키와 고유 키의 차이점

+-----------------------------------------+-----------------------------------------------+
|                Primary Key              |                    Unique Key                 |
+-----------------------------------------+-----------------------------------------------+
| Primary Key can't accept null values.   | Unique key can accept only one null value.    |
+-----------------------------------------+-----------------------------------------------+
| By default, Primary key is clustered    | By default, Unique key is a unique            |
| index and data in the database table is | non-clustered index.                          |
| physically organized in the sequence of |                                               |
| clustered index.                        |                                               |
+-----------------------------------------+-----------------------------------------------+
| We can have only one Primary key in a   | We can have more than one unique key in a     |
| table.                                  | table.                                        |
+-----------------------------------------+-----------------------------------------------+
| Primary key can be made foreign key     | In SQL Server, Unique key can be made foreign |
| into another table.                     | key into another table.                       |
+-----------------------------------------+-----------------------------------------------+

자세한 정보는 http://www.dotnet-tricks.com/Tutorial/sqlserver/V2bS260912-Difference-between-Primary-Key-and-Unique-Key.html 에서 확인할 수 있습니다
.


16

기본 키에는 데이터베이스 행을 식별하는 의미가 있습니다. 따라서 주어진 테이블에 대해 하나의 기본 키만있을 수 있지만 많은 고유 키가있을 수 있습니다.

또한 같은 이유로 기본 키는 NULL이 될 수 없습니다 (적어도 Oracle에서는 다른 데이터베이스에 대해서는 확실하지 않음)

행을 식별하므로 절대로 변경해서는 안됩니다. 기본 키를 변경하면 심각한 통증과 아마도 영원한 저주가 발생할 수 있습니다.

따라서 대부분의 경우 테이블에서 단일 행을 식별하는 것 외에는 사용되지 않는 기본 키에 대한 인공 ID를 원합니다.

반면에 고유 키는 원하는만큼 변경 될 수 있습니다.


22
영원한 저주의 위험에 대해 +1 이제 관계형 데이터베이스 이론에 신학을 소개 할 차례입니다.
Neville Kuyt

SQL Server에서도 PK가 NULL 일 수 없음
mrd3650

7

기본 키는 고유 키입니다.

각 테이블에는 최대 하나의 기본 키가 있어야하지만 여러 개의 고유 키가있을 수 있습니다. 기본 키는 테이블 행을 고유하게 식별하는 데 사용됩니다. 기본 키는 될 수 없습니다 NULL때문에 NULL값이 아닙니다.


6
  • 테이블 이름을 사용한다고 생각하십시오.
  • 기본 키
  • 기본 키는 널값을 승인 할 수 없습니다. 기본 키는 열의 고유성을 강화합니다. 테이블에는 기본 키가 하나만있을 수 있습니다.
  • 고유 키
  • 고유 키는 널값을 승인 할 수 있습니다. 고유 키는 또한 열의 고유성을 강제합니다. 고유 키에 null 값이 포함되어 있으면 왜 고유 할 수 있습니까? 예, 널값을 승인 할 수 있지만 열의 고유성을 강제합니다. Emp_ID는 기본이고 Citizen ID는 고유합니다. 이해하시기 바랍니다. 테이블에서 여러 개의 고유 키를 사용할 수 있습니다. 여기에 이미지 설명을 입력하십시오

1
고유 키에 둘 이상의 null 값을 삽입 할 수 없으며 중복도 허용되지 않습니다.
Masum

@ mahedi-hasan 고유 키 열에 NULL 값이 하나만 있어야합니까? 시민 ID NULL에서 마지막 두 행은 어떻게됩니까? 여기에 뭔가 빠졌습니까?
초신성

위의 내 의견에 대한 답변을 받았습니다. MySQL이 여러 NULL을 고유하게 허용하는 것처럼 보이므로 @Mahedi_Hasan이 MySQL을 사용한 것처럼 보입니다. stackoverflow.com/questions/3712222/…
초신성

6

나는이 질문이 몇 살이라는 것을 알고 있지만 어떻게 설명 하기보다는 왜 설명 하는가에 대한 답변을 드리고자 합니다

기본 키의 목적 : 데이터베이스에서 행을 고유하게 식별하려면 => 행은 테이블에 의해 모델링 된 엔티티 유형의 단일 인스턴스를 나타냅니다. 기본 키는 엔터티 (AKA Entity Integrity)의 무결성을 강화합니다. 기본 키는 클러스터 된 인덱스입니다. 즉, 테이블에 데이터가 실제로 저장되는 순서를 정의합니다.

고유 키의 목적 : 좋습니다. 기본 키를 사용하여 행을 고유하게 식별 할 수 있습니다. 그러나 비즈니스 요구 사항이 있으므로 다른 열 / 열 집합에 고유 한 값이 있어야합니다. 기술적으로이 열이 고유하다는 점을 감안할 때 엔터티 무결성을 강화할 수 있습니다. 그러나 우리가 아는 한,이 칼럼에는 외부 조직에서 비롯된 데이터가 포함될 수 있습니다. 엔티티 무결성을 제공한다고 믿지 않을 수 있습니다. 비즈니스 요구 사항을 충족시키는 유일한 열쇠입니다.

당신은 간다!


1

데이터베이스 디자인이 외래 키가 필요하지 않은 경우 고유 키를 사용할 수 있지만 고유 키는 단일 null 값 허용을 기억하십시오 .

데이터베이스에 외래 키가 필요한 경우 기본 키로 이동해야합니다.

고유 키 방문과 기본 키 방문의 차이점을 보려면 여기를 클릭하십시오.


1

고유 키 :-고유 값을 제공해야 할 때 사용해야합니다. 고유 키의 경우 null 값도 허용됩니다. 독특한 키는 예를 들어 애완 동물 이름과 같이 해당 열에서 고유하고 유사하지 않은 키입니다. .it는 null과 같을 수 없으며 데이터베이스의 맥락에서 묻는다면 모든 null이 데이터베이스의 다른 null과 다르다는 점에 유의해야합니다. null = null이 true 인 EXCEPT-SQL 서버


primary key :-행을 고유하게 식별해야 할 때 사용해야합니다 .primary는 데이터베이스 제약 조건의 모든 행에 대해 고유 한 키로 null을 허용하지 않는다는 것입니다. 따라서 데이터베이스가 자동 증분 열이 있으며 테이블의 기본 키입니다. 플러스가 될 수있는 다른 table.example에서 외래 키로 사용할 수있는 질서 표에 OrderID를 , 법안의 표 billId .

이제 그것을 사용할 때 상황으로 돌아옵니다.

1) 테이블에서 널이 될 수없는 열의 기본 키이며 관계를 만들기 위해 다른 테이블에서 외래 키로 사용하고 있습니다.

2) 레스토랑에서 간식과 같이 특정 열에 대해 null을 가져 가도 테이블이나 전체 데이터베이스에 영향을 미치지 않는 테이블의 고유 키 레스토랑에서 간식을 섭취하지 않을 수 있습니다


1

기본 키와 고유 키의 차이점

모두 Primary keyUnique Key고유 테이블의 행의 정의하는 데 사용됩니다. Primary Keya clustered index의 열을 만듭니다 Unique creates an unclustered index of the column.

A Primary Key허용하지 않는 NULL value, 그러나 a Unique Key수 않습니다 one NULL value.


0

단순히 기본 키는 고유하며 null 일 수 없으며 unique는 null 일 수 있으며 고유하지 않을 수 있습니다.


"unique는 null 일 수 있고 고유하지 않을 수 있습니다". 여기서 무엇을 may not be unique의미합니까?
Yusuf Hassan

0

기본 키

기본 키의 주요 목적은 테이블의 각 레코드를 식별하는 수단을 제공하는 것입니다.

기본 키는 행 내의 데이터를 사용하여 행을 식별하는 수단을 제공합니다. 기본 키는 이름 및 성과 같은 하나 이상의 열을 기반으로 할 수 있습니다. 그러나 많은 설계에서 기본 키는 ID 열에서 자동 생성 된 숫자입니다.

기본 키에는 다음과 같은 특징이 있습니다.

  1. 테이블에는 기본 키가 하나만있을 수 있습니다.
  2. 기본 키는 하나 이상의 열로 구성됩니다.
  3. 기본 키는 테이블의 엔티티 무결성을 강제합니다.
  4. 정의 된 모든 열은 NOT NULL로 정의해야합니다.
  5. 기본 키는 행을 고유하게 식별합니다.
  6. 기본 키는 기본적으로 CLUSTERED 고유 인덱스를 생성합니다.

고유 키

고유 키는 고유 제한 조건이라고도합니다. 데이터베이스 내에서 행이 고유하도록 고유 제한 조건을 사용할 수 있습니다.

기본 키로 이미 수행하지 않습니까? 그렇습니다.하지만 테이블에는 고유 한 여러 열 집합이있을 수 있습니다.

SQL Server에서 고유 키는 다음과 같은 특징이 있습니다.

  1. 테이블에는 여러 개의 고유 키가 정의 될 수 있습니다.
  2. 고유 키는 기본적으로 NONCLUSTERED 고유 인덱스를 생성합니다.
  3. 하나 이상의 열이 고유 키를 구성합니다.
  4. 열은 NULL 일 수 있지만 열당 하나의 NULL이 허용됩니다.
  5. 외래 키 제약 조건으로 고유 제약 조건을 참조 할 수 있습니다.

출처 : 여기


0

기본 키의 주요 기능은 다음과 같습니다.

각 데이터 행에 대해 고유 한 값을 포함해야합니다. 널값을 포함 할 수 없습니다. 테이블에는 하나의 기본 키만 있습니다.

고유 키의 주요 기능은 다음과 같습니다.

각 데이터 행에 대해 고유 한 값을 포함 할 수도 있습니다.

널값을 포함 할 수도 있습니다.

테이블에 여러 개의 고유 키가 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.