[mysql] 기본 키와 고유 키의 차이점

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

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



답변

기본 키 :

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

고유 키 :

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

답변

고유 키 (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


답변

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

예상 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


답변

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

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

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


답변

기본 키와 고유 키의 차이점

+-----------------------------------------+-----------------------------------------------+
|                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 에서 확인할 수 있습니다
.


답변

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

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

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

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

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


답변

기본 키는 고유 키입니다.

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