mysql 고유 테이블에 기본 키가 필요하지 않을 때?



mysql 고유 값 (3)

달려있어.

기본 키 / 고유 키 란 무엇입니까?

관계형 데이터베이스 디자인에서 고유 한 키는 테이블의 각 행을 고유하게 식별 할 수 있으며 Superkey 개념과 밀접한 관련이 있습니다. 고유 한 키는 단일 열 또는 열 집합으로 구성됩니다. NULL 값을 사용하지 않으면 테이블의 두 개의 별개의 행에서 동일한 값 (또는 값 조합)을 가질 수 없습니다. 디자인에 따라 테이블에는 임의로 많은 고유 키가 있지만 최대 하나의 기본 키가있을 수 있습니다.

따라서 각 행을 구별 할 필요가 없을 때 (고유하게 식별 할 때)
기본 키를 사용할 필요가 없습니다.

예를 들어, 로그를위한 큰 테이블,
기본 키를 사용하지 않고도 데이터 크기가 상당히 작고 삽입 속도가 빠릅니다.

https://ffff65535.com

기본 키가 필요없는 테이블을 디자인 할 수 있습니까?


아니.

기본 키는 응용 프로그램에서 사용하지 않더라도 많은 비하인드 스토리를 처리합니다.

예를 들어, clustering 은 효율성을 향상시킵니다 ( 힙 테이블 이 엉망이기 때문에).

말할 필요도없이 누군가가 테이블에서 특정 행을 가져와야하고 기본 키를 가지고 있지 않은 무언가를해야한다면, 당신은 나쁜 사람입니다.


기본 키는 아니지만 기본 키가없는 테이블을 만드는 것은 좋지 않습니다. DBMS는 PK에 자동 색인을 작성하지만 고유 한 열을 만들어 색인을 생성 할 수 있습니다. 예를 들어 users 테이블의 user_name 열은 일반적으로 고유하고 색인화되어 있으므로 여기에서 PK를 건너 뛸 수 있습니다. 그러나 PK가 참조 무결성을위한 외래 키로 사용될 수 있기 때문에 여전히 나쁜 생각 입니다.

일반적으로 PK가없는 것을 정당화 할 강력한 이유가 없으면 거의 항상 테이블에 PK가 있어야합니다.

많은 관계에있는 링크 테이블에는 기본 키가 없을 수 있습니다. 그러나, 나는 개인적으로 그러한 테이블에도 PK를 갖고 싶어합니다.





primary-key