SQL 데이터베이스의 외래 키는 무엇입니까?

SQL 데이터베이스의 외래 키는 무엇입니까?

외래 키를 사용하면 데이터베이스 관리자가 SQL 데이터베이스 관리 시스템 내에 존재하는 다양한 연결을 쉽게 식별할 수 있습니다.



SQL은 데이터베이스 관리 시스템 내의 데이터에 대해 수학 연산을 수행합니다. 이러한 데이터베이스에는 각각 특정 엔터티에 대한 데이터를 저장하는 서로 다른 테이블이 포함되어 있습니다. 자동차 렌탈 데이터베이스가 있는 경우 해당 데이터베이스의 엔터티(또는 테이블)는 고객(각 고객의 모든 개인 데이터를 저장함)이 됩니다.





이러한 데이터베이스 테이블에는 각 행이 레코드를 호스트하고 각 열이 속성별 데이터를 보유하는 행과 열이 포함됩니다.





데이터베이스 관리 시스템에서 각 레코드(또는 행)는 고유해야 합니다.

기본 키

테이블의 각 레코드는 구별되어야 한다는 규정이 있지만 항상 그런 것은 아닙니다. 자동차 렌탈 데이터베이스 예제를 계속 진행하면 데이터베이스에 각각 이름이 John Brown인 두 명의 고객이 포함되어 있는 경우 John Brown은 자신이 임대하지 않은 Mercedes-Benz를 반환할 것으로 예상할 수 있습니다.



기본 키를 생성하면 이러한 위험이 완화됩니다. SQL 데이터베이스 관리 시스템에서 기본 키는 한 레코드를 다른 레코드와 구별하는 고유 식별자입니다.

이메일과 연결된 모든 계정을 찾는 방법

따라서 SQL 데이터베이스 관리 시스템의 모든 레코드에는 기본 키가 있어야 합니다.





데이터베이스에서 기본 키 사용

SQL을 사용하는 데이터베이스 관리 시스템에 기본 키를 포함하려면 새 테이블을 생성할 때 기본 키를 일반 속성으로 추가하기만 하면 됩니다. 따라서 고객의 테이블에는 4개의 속성(또는 열)이 포함됩니다.

  • CarOwnerID(기본 키를 저장함)
  • 이름
  • 전화 번호

관련된: SQL에서 테이블을 만드는 방법





이제 데이터베이스에 입력되는 모든 고객 레코드에는 고유한 식별 번호와 이름, 성 및 전화 번호가 있습니다. 전화 번호는 기본 키가 될 만큼 고유하지 않습니다. 한 번에 한 사람에게만 고유하지만 한 사람이 쉽게 번호를 변경할 수 있으므로 이제 다른 사람에게 속하게 됩니다.

기본 키가 있는 레코드의 예

/* creates a new record in the customers table */
INSERT INTO Customers VALUES
('0004',
'John',
'Brown',
'111-999-5555');

위의 SQL 코드는 기존 레코드에 새 레코드를 추가합니다. 고객 테이블. 아래 표는 두 개의 John Brown 레코드가 있는 새 고객 테이블을 보여줍니다.

외래 키

이제 한 자동차 렌트카를 다른 렌트카와 고유하게 구별하는 기본 키가 있습니다. 유일한 문제는 데이터베이스에서 각 John Brown과 그가 임대한 자동차 사이에 실제 연결이 없다는 것입니다.

따라서 실수의 가능성은 여전히 ​​존재합니다. 이것은 외래 키가 작동하는 곳입니다. 소유권 모호성 문제를 해결하기 위해 기본 키를 사용하는 것은 기본 키가 외래 키로 이중인 경우에만 달성할 수 있습니다.

외래 키 란 무엇입니까?

SQL 데이터베이스 관리 시스템에서 외래 키는 데이터베이스에 있는 둘 이상의 테이블을 연결하는 고유 식별자 또는 고유 식별자의 조합입니다.

현존하는 4개의 SQL 데이터베이스 관리 시스템 중 관계형 데이터베이스 관리 시스템이 가장 많이 사용됩니다. 관계형 데이터베이스의 어떤 테이블에 외래 키가 있어야 하는지 결정할 때 먼저 어떤 테이블이 해당 관계의 주체이고 어떤 테이블이 객체인지 식별해야 합니다.

렌터카 데이터베이스로 돌아가서 각 고객을 올바른 자동차에 연결하려면 고객(주체)이 자동차(객체)를 임대한다는 사실을 이해해야 합니다. 따라서 외래 키는 cars 테이블에 있어야 합니다.

외래 키로 테이블을 생성하는 SQL 코드는 표준과 약간 다릅니다.

외래 키를 사용하여 테이블 만들기 예

/* creates a new cars table in the car rental database */
CREATE TABLE Cars
(
LicenseNumber varchar(30) NOT NULL PRIMARY KEY,
CarType varchar(30) NOT NULL,
CustomerID varchar(30) FOREIGN KEY REFERENCES Customers(CustomerID)
);

위의 코드에서 볼 수 있듯이 외래 키는 새 테이블에 연결되는 기본 키에 대한 참조와 함께 명시적으로 식별되어야 합니다.

Fitbit 반대로 시간을 변경하는 방법

관련된: 초보자를 위한 필수 SQL 명령 치트 시트

새 테이블에 레코드를 추가하려면 외래 키 필드의 값이 원래 테이블의 기본 키 필드 값과 일치하는지 확인해야 합니다.

외래 키가 있는 레코드 추가 예

/* creates a new record in the cars table */
INSERT INTO Cars VALUES
('100012',
'Mercedes-Benz',
'0004');

위의 코드는 새 레코드를 생성합니다. 자동차 테이블, 다음 결과를 생성합니다.

자동차 테이블

위의 표에서 레코드의 외래 키로 Mercedes-Benz를 임대한 정확한 John Brown을 식별할 수 있습니다.

고급 외래 키

데이터베이스에서 외래 키를 사용하는 다른 두 가지 방법이 있습니다.

위의 외래 키 정의를 다시 살펴보면 외래 키가 고유 식별자 또는 고유 식별자의 조합일 수 있다는 것을 알 수 있습니다.

자동차 렌탈 데이터베이스 예제로 돌아가서 고객이 해당 자동차를 렌트할 때마다 (동일한 자동차에 대한) 새 레코드를 생성하는 것은 자동차 테이블. 자동차가 판매용이고 단일 고객에게 한 번 판매되는 경우 기존 데이터베이스가 완벽합니다. 그러나 자동차가 렌탈품이라는 점을 감안할 때 이 데이터를 나타내는 더 좋은 방법이 있습니다.

복합 키

복합 키에는 둘 이상의 고유 식별자가 있습니다. 관계형 데이터베이스에서는 단일 외래 키의 사용이 해당 데이터베이스 내에 존재하는 관계를 충분히 나타내지 못하는 경우가 있습니다.

렌터카 예에서 가장 실용적인 접근 방식은 임대 세부 정보를 저장하는 새 테이블을 만드는 것입니다. 렌터카 테이블의 정보가 유용하려면 자동차와 고객 테이블 모두에 연결되어야 합니다.

복합 외래 키를 사용하여 테이블 만들기

/* creates a CarRental table in the car rental database */
CREATE TABLE CarRental
(
DateRented DATE NOT NULL,
LicenseNumber varchar(30) NOT NULL FOREIGN KEY REFERENCES Cars(LicenseNumber),
CustomerID varchar(30) NOT NULL FOREIGN KEY REFERENCES Customers(CustomerID),
PRIMARY KEY (DateRented, LicenseNumber, CustomerID)
);

위의 코드는 중요한 점을 보여줍니다. SQL 데이터베이스의 테이블은 둘 이상의 외래 키를 가질 수 있지만 단일 기본 키만 가질 수 있습니다. 레코드를 식별하는 고유한 방법이 하나만 있어야 하기 때문입니다.

고유 키를 가지려면 테이블의 세 가지 속성을 모두 결합해야 합니다. 고객은 같은 날에 두 대 이상의 자동차를 빌릴 수 있습니다. 고객 ID 그리고 날짜대여 좋은 조합이 아님) 한 명 이상의 고객이 같은 날 같은 차를 빌릴 수도 있습니다. 면허 번호 그리고 날짜대여 좋은 조합이 아닙니다.)

그러나 어떤 고객, 어떤 차, 어떤 요일에 알려주는 복합 키를 생성하면 탁월한 고유 키가 됩니다. 이 고유 키는 복합 외래 키와 복합 기본 키를 모두 나타냅니다.

iPhone 캘린더에서 이벤트를 삭제하는 방법

외래 기본 키

예, 외래 기본 키는 종료됩니다. 공식적인 이름은 없지만 외래 키는 동일한 테이블의 기본 키일 수도 있습니다. 이는 기존 엔터티(또는 다른 테이블의 레코드)에 대한 특수 데이터가 포함된 새 테이블을 만들 때 발생합니다.

렌터카 회사에서 일하는 Fred가 직원 테이블 아래 회사 데이터베이스에 있다고 가정해 보겠습니다. 몇 년 후 그는 수퍼바이저가 되어 수퍼바이저 테이블에 추가됩니다.

Fred는 여전히 직원이고 동일한 ID 번호를 가질 것입니다. 따라서 Fred의 직원 ID는 이제 외부 키로 수퍼바이저 테이블에 있으며 이 테이블의 기본 키도 됩니다(Fred가 수퍼바이저이기 때문에 Fred의 새 ID 번호를 만드는 것은 의미가 없기 때문입니다).

이제 SQL 데이터베이스에서 외래 키를 식별할 수 있습니다.

외래 키는 SQL 데이터베이스 내의 다른 테이블을 연결합니다. 이 기사에서 외래 키가 무엇인지, 어떻게 작동하는지, 데이터베이스에 외래 키를 보유하는 것이 왜 중요한지 알 수 있습니다. 또한 기본적이고 훨씬 더 복잡한 외래 키 형식을 이해합니다.

외래 키가 흥미롭다고 생각한다면 프로젝트 및 선택 작업을 사용하여 SQL 데이터베이스를 쿼리하기 시작할 때 필드 데이를 갖게 될 것입니다.

공유하다 공유하다 트위터 이메일 SQL에서 프로젝트 및 선택 작업을 사용하는 방법 알아보기

이러한 예를 통해 프로젝트 및 선택 작업을 이해하여 SQL 관계형 데이터베이스를 파악하십시오.

다음 읽기
관련 항목
  • 프로그램 작성
  • 프로그램 작성
  • SQL
  • 데이터 베이스
저자 소개 카데이샤 킨(21편 게재)

Kadeisha Kean은 전체 스택 소프트웨어 개발자이자 기술/기술 작가입니다. 그녀는 가장 복잡한 기술 개념 중 일부를 단순화하는 독특한 능력을 가지고 있습니다. 기술 초보자라면 누구나 쉽게 이해할 수 있는 소재를 생산합니다. 그녀는 글쓰기, 흥미로운 소프트웨어 개발 및 세계 여행(다큐멘터리를 통해)에 열정적입니다.

카데이샤 킨이 참여한 작품 더보기

뉴스레터 구독

기술 팁, 리뷰, 무료 전자책 및 독점 거래에 대한 뉴스레터에 가입하십시오!

구독하려면 여기를 클릭하세요.