>데이터 베이스 >MySQL 튜토리얼 >mysql 복합 기본 키는 무엇을 의미합니까?

mysql 복합 기본 키는 무엇을 의미합니까?

青灯夜游
青灯夜游원래의
2023-03-30 10:15:294141검색

MySQL에서 복합 기본 키는 데이터베이스 테이블의 기본 키에 둘 이상의 필드가 포함되어 있음을 의미합니다. 즉, 다중 필드 기본 키는 기본 키 유형이며 동일한 기능을 갖습니다. 기본 키로 정의합니다. 복합 기본 키는 불필요한 중복 열을 포함할 수 없습니다. 복합 기본 키의 열이 삭제된 경우 나머지 열로 구성된 기본 키가 여전히 고유성 원칙을 충족하면 복합 기본 키가 올바르지 않습니다.

mysql 복합 기본 키는 무엇을 의미합니까?

이 튜토리얼의 운영 환경: windows7 시스템, mysql8 버전, Dell G3 컴퓨터.

데이터 테이블의 복합 기본 키는 무엇인가요?

복합 기본 키라고 불리는 것은 테이블의 기본 키에 둘 이상의 필드가 포함되어 있음을 의미합니다.

MySQL 다중 필드 기본 키는 복합 기본 키가 될 수도 있습니다. 복합 기본 키도 기본 키의 한 유형이며 기본 키와 동일한 기능 및 정의를 갖습니다.

기본 키 제약 조건은 테이블에 있는 각 데이터 행의 식별자를 고유하게 결정하기 위해 테이블에 기본 키를 정의하는 것입니다. 기본 키는 테이블의 특정 열일 수도 있고 여러 열로 구성된 기본 키를 복합 기본 키라고 합니다.

복합 기본 키에는 불필요한 중복 열을 포함할 수 없습니다. 복합 기본 키의 열이 삭제된 경우에도 나머지 열로 구성된 기본 키가 여전히 고유성 원칙을 만족하면 복합 기본 키가 올바르지 않은 것입니다. 이것이 최소화의 원칙이다.

예:

create table test
(
name varchar(19),
id number,
value varchar(10),
primary key (name,id)
)

위의 이름과 ID 필드의 조합은 테스트 테이블의 복합 기본 키입니다.

이름 필드에 중복된 이름이 있을 수 있기 때문에 나타나는 것이므로 이를 확인하려면 ID 필드를 추가해야 합니다. 레코드의 고유성

복합 기본 키가 나타나는 이유는 테이블 이름 필드에 중복된 이름이 있을 수 있기 때문입니다. 따라서 개발 시 레코드의 고유성을 보장하기 위해 id 필드를 추가해야 합니다. 키 필드 하나를 유지하는 것이 좋습니다. 두 개의 복합 기본 키를 생성해야 하는 경우 테이블을 생성할 때 개체를 고유하게 식별할 수 있는 필드를 찾아야 합니다.

그러면 다시 질문이 뜹니다. 테이블은 기본 키를 하나만 가질 수 있다는 뜻 아닌가요? 기본 키는 테이블의 유일한 인덱스인데, 테이블이 여러 개의 기본 키를 생성할 수 있는 이유는 무엇입니까?

사실 "기본 키가 유일한 인덱스"라는 말은 다소 모호합니다. 예를 들면 다음과 같습니다. 우리는 테이블에 자동 증가로 설정되고 기본 키로 설정되는 id 필드가 있는 데 익숙합니다. 이때, "기본키가 유일한 인덱스" "인덱스", 고유성을 보장하기 위해 id가 자동으로 커집니다. 이때 varchar(50)라는 필드 이름이 생성되면 기본 키로도 설정됩니다. 이때 id와 name은 복합 기본 키가 되며, 테이블의 name 필드에는 동일한 이름 값이 삽입될 수 있습니다. 이때 또 다른 문제가 있습니다. "기본 키가 고유 인덱스인데 어떻게 같은 값을 가질 수 있나요?"

그래서 "기본 키가 고유 인덱스입니다"라는 것은 모호합니다. 기본 키가 고유 인덱스라는 전제는 "테이블에 기본 키가 하나만 있으면 유일한 인덱스이고, 테이블에 기본 키가 여러 개인 경우 복합 기본 키라고 합니다. 복합 기본 키의 조합은 고유 인덱스를 보장하며, 이는 복합 기본 키의 조합이 테이블의 고유 인덱스(기본 키)가 되는 것으로 이해될 수 있습니다. 자체 증가 ID가 이미 고유 식별을 위한 기본 키로 사용되는 이유는 무엇입니까? 복합 기본 키가 여전히 필요한 이유는 무엇입니까? 모든 테이블에 ID 필드가 있어야 하는 것은 아니기 때문입니다. 예를 들어 학생 테이블을 구축했는데 학생을 식별할 수 있는 고유 ID가 없다면 어떻게 해야 할까요? 학생의 이름, 나이, 학급은 모두 반복될 수 있으며 단일 필드를 사용하여 고유하게 식별할 수 없습니다. 이 경우 여러 필드를 기본 키로 설정하여 이러한 여러 필드를 공동으로 식별할 수 있습니다. , 확실 여러 레코드의 기본 키 값이 모두 동일하면 중복으로 간주되지 않습니다.

요약: 개발 시 기본 키 필드 수를 1개로 유지하는 것이 가장 좋습니다. 두 개의 복합 기본 키를 생성해야 한다면 테이블을 생성할 때 개체를 고유하게 식별할 수 있는 필드를 찾아야 합니다. 즉, 복합 기본 키를 덜 사용하십시오.

복합 기본 키를 추가하는 방법은 무엇입니까?

테이블 생성 시 복합 기본 키를 추가할 수 있습니다. 이때 기본 키는 여러 필드로 구성됩니다. 구문 규칙은 다음과 같습니다.

PRIMARY KEY [字段1,字段2,…,字段n]

예: 데이터 테이블 tb_emp가 있다고 가정합니다. 테이블에 기본 키 ID가 없습니다. 직원을 고유하게 식별하려면 이름과 부서 ID를 기본 키로 결합하면 됩니다.

mysql> CREATE TABLE tb_emp
    -> (
    -> name VARCHAR(25),
    -> deptId INT(11),
    -> salary FLOAT,
    -> PRIMARY KEY(id,deptId)
    -> );
Query OK, 0 rows affected (0.37 sec)

mysql 복합 기본 키는 무엇을 의미합니까?

공동 기본 키

공동 기본 키와 복합 기본 키의 차이점 핵심은 공동 기본 키가 여러 테이블에 반영되고, 복합 기본 키가 하나의 테이블 필드에 여러 테이블에 반영된다는 것입니다.

学生表:student
create table student(
id int auto_increment comment '主键id',
name varchar(30) comment '姓名',
age smallint comment '年龄',
primary key(id)
);

课程表:course
create table course(
id int auto_increment comment '主键id',
name varchar(30) comment '课程名称',
primary key(id)
);

学生课程表:stu_course
create table IF NOT EXISTS stu_cour(
id int  auto_increment comment '主键id',
stu_id mediumint comment '学生表id',
cour_id mediumint comment '课程表id',
primary key(id)
);

이때, stu_course의 id는 공동기본키를 의미하며, id를 통해 학생 및 강좌의 기록을 얻을 수 있습니다

그래서 결합된 기본 키는 이름에서 알 수 있듯이 여러 기본 키를 조합하여 하나의 기본 키 조합을 형성하는 것이며, 이는 공용체에 반영됩니다. (기본 키는 원칙적으로 고유하므로 고유한 값으로 인해 문제가 발생하지 않습니다.) 인덱스는 데이터 쿼리 속도를 크게 향상시킬 수 있지만 테이블 삽입, 삭제 및 업데이트 속도가 느려집니다. 인덱스를 운영해야 합니다. 간단한 예: 기본 키 A와 기본 키 B는 공동 기본 키 C를 형성합니다. 기본 키 A와 기본 키 B의 데이터는 정확히 동일할 수 있습니다. 결합은 기본 키 A와 기본 키로 구성된 공동 기본 키 C입니다. B는 독특해요.

【관련 추천: mysql 비디오 튜토리얼

위 내용은 mysql 복합 기본 키는 무엇을 의미합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.