>데이터 베이스 >MySQL 튜토리얼 >데이터베이스 테이블 간의 관계를 설정하는 방법

데이터베이스 테이블 간의 관계를 설정하는 방법

青灯夜游
青灯夜游원래의
2021-01-28 11:44:3934077검색

데이터베이스 테이블은 기본 키와 외래 키를 통해 연결됩니다. 테이블에 기본 키 제약 조건이 지정된 경우 데이터베이스 엔진은 기본 키 열에 고유 인덱스를 자동으로 생성하여 데이터의 고유성을 적용합니다. 외래 키는 데이터 간의 연결을 설정하고 강화하는 데 사용되는 하나 이상의 열입니다. in two tables 외래 키 테이블에 저장될 수 있는 데이터를 제어하기 위한 의 조합입니다.

데이터베이스 테이블 간의 관계를 설정하는 방법

이 튜토리얼의 운영 환경: Windows 7 시스템, mysql 버전 5.8, Dell G3 컴퓨터.

데이터베이스 테이블은 기본 키와 외래 키를 통해 연결됩니다.

(권장 튜토리얼: mysql 비디오 튜토리얼)

기본 키 제약 조건

테이블에는 일반적으로 테이블의 각 행을 고유하게 식별하는 값을 포함하는 열 또는 열 집합이 있습니다. 이러한 열을 테이블의 기본 키(PK)라고 하며 테이블의 엔터티 무결성을 적용하는 데 사용됩니다. 기본 키 제약 조건은 데이터의 고유성을 보장하므로 종종 ID 열에 정의됩니다.

테이블에 기본 키 제약 조건이 지정된 경우 데이터베이스 엔진은 기본 키 열에 고유 인덱스를 자동으로 생성하여 데이터의 고유성을 적용합니다. 또한 이 인덱스를 사용하면 기본 키가 쿼리에 사용될 때 데이터에 빠르게 액세스할 수 있습니다. 기본 키 제약 조건이 여러 열에 정의된 경우 열의 값은 반복될 수 있지만 기본 키 제약 조건 정의에 있는 모든 열의 값 조합은 고유해야 합니다.

아래 그림에 표시된 것처럼 Purchasing.ProductVendor 테이블의 ProductID 및 VendorID 열은 이 테이블에 대한 복합 기본 키 제약 조건을 형성합니다. 이렇게 하면 ProductVendor 테이블의 각 행에 ProductID와 VendorID의 고유한 조합이 포함됩니다. 이렇게 하면 중복 행이 삽입되는 것을 방지할 수 있습니다.

데이터베이스 테이블 간의 관계를 설정하는 방법

  • 테이블에는 기본 키 제약 조건이 하나만 포함될 수 있습니다.

  • 기본 키는 16열을 초과할 수 없으며 총 키 길이는 900바이트를 초과할 수 없습니다.

  • 기본 키 제약 조건에 의해 생성된 인덱스는 비클러스터형 인덱스 999개와 클러스터형 인덱스 1개를 초과하여 테이블의 인덱스 수를 늘리지 않습니다.

  • 기본 키 제약 조건에 클러스터형 인덱스나 비클러스터형 인덱스가 지정되지 않고 테이블에 클러스터형 인덱스가 없는 경우 클러스터형 인덱스가 사용됩니다.

  • 기본 키 제약 조건에 정의된 모든 열은 Null이 되지 않도록 정의되어야 합니다. Null 허용 여부를 지정하지 않으면 기본 키 제약 조건에 참여하는 모든 열의 Null 허용 여부가 Null이 아닌 것으로 설정됩니다.

  • CLR 사용자 정의 유형의 열에 기본 키를 정의하는 경우 해당 유형의 구현은 이진 정렬을 지원해야 합니다.

외래 키 제약 조건

외래 키(FK)는 두 테이블의 데이터 간 링크를 설정하고 강화하는 데 사용되는 하나 이상의 열 조합으로, 외래 키 테이블에 저장할 수 있는 데이터를 제어합니다. . 외래 키 참조에서는 한 테이블의 기본 키 값을 포함하는 하나 이상의 열이 다른 테이블의 하나 이상의 열에서 참조될 때 두 테이블 사이에 링크가 생성됩니다. 이 열은 두 번째 테이블의 외래 키가 됩니다.

예를 들어 판매 주문과 영업사원 사이에는 논리적 관계가 있기 때문에 Sales.SalesOrderHeader 테이블에는 Sales.SalesPerson 테이블에 대한 외래 키 링크가 포함되어 있습니다. SalesOrderHeader 테이블의 SalesPersonID 열은 SalesPerson 테이블의 기본 키 열에 해당합니다. SalesOrderHeader 테이블의 SalesPersonID 열은 SalesPerson 테이블에 대한 외래 키입니다. SalesPerson 테이블의 기본 키에 SalesPersonID 값이 없으면 외래 키 관계를 생성하여 SalesPersonID 값을 SalesOrderHeader 테이블에 삽입할 수 없습니다.

테이블은 최대 253개의 다른 테이블과 열을 외래 키(보내는 참조)로 참조할 수 있습니다. SQL Server 2016(13.x)에서는 별도의 테이블에서 참조할 수 있는 다른 테이블 및 열(수신 참조) 수에 대한 제한을 253에서 10,000으로 늘립니다. (호환성 수준은 130 이상이어야 합니다.) 개수 제한을 늘리면 다음 제약 조건이 적용됩니다.

  • DELETE DML 작업만 253개 이상의 외래 키 참조를 지원합니다. UPDATE 및 MERGE 작업은 지원되지 않습니다.

  • 자신에 대한 외래 키 참조가 있는 테이블은 여전히 ​​253개의 외래 키 참조만 가질 수 있습니다.

  • Columnstore 인덱스, 메모리 최적화 테이블, Stretch Database 또는 분할된 외래 키 테이블은 현재 253개가 넘는 외래 키 참조를 지원하지 않습니다.

외래 키 제약 조건에 대한 인덱스

기본 키 제약 조건과 달리 외래 키 제약 조건을 생성해도 해당 인덱스가 자동으로 생성되지 않습니다. 그러나 다음과 같은 이유로 외래 키에 대한 인덱스를 수동으로 생성하는 것이 유용한 경우가 많습니다.

  • 쿼리에서 관련 테이블의 데이터를 결합할 때 한 테이블의 외래 키를 제한하여 조인 조건에 외래 키 열이 사용되는 경우가 많습니다. 하나 또는 의 더 많은 열이 다른 테이블의 기본 키 또는 고유 키 열과 일치합니다. 인덱스를 사용하면 데이터베이스 엔진이 외래 키 테이블에서 관련 데이터를 빠르게 찾을 수 있습니다. 그러나 이 인덱스를 생성할 필요는 없습니다. 두 테이블에 기본 키 또는 외래 키 제약 조건이 정의되지 않은 경우에도 두 관련 테이블의 데이터를 결합할 수 있지만, 두 테이블 간의 외래 키 관계는 해당 키를 쿼리로 결합하기 위한 조건으로 사용하여 최적화되었음을 나타냅니다.

  • 기본키 제약조건 변경 사항은 관련 테이블의 외래키 제약조건을 통해 확인할 수 있습니다.

더 많은 프로그래밍 관련 지식을 보려면 프로그래밍 비디오를 방문하세요! !

위 내용은 데이터베이스 테이블 간의 관계를 설정하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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