데이터베이스 관계

데이터베이스 관계는 모든 관계형 데이터베이스의 백본입니다.

한 테이블에 다른 테이블의 기본 키를 참조하는 외래 키가있는 경우 두 데이터베이스 테이블 간에 관계가 설정됩니다. 이것은 관계형 데이터베이스라는 용어의 기본 개념입니다.

관계를 수립하기 위해 외래 키가 어떻게 작동 하는가?

기본 키와 외래 키의 기본 사항을 살펴 보겠습니다. 기본 키 는 테이블의 각 레코드를 고유하게 식별합니다. 일반적으로 테이블의 첫 번째 열인 후보 키 유형이며 고유 한 키인지를 확인하기 위해 데이터베이스에서 자동으로 생성 할 수 있습니다.

외래 키는 레코드를 다른 테이블의 데이터에 연결하는 데 사용되는 다른 후보 키 (기본 키가 아님)입니다.

예를 들어, 어느 두 교사가 어떤 과목을 가르치는 지 알 수있는 두 표를 생각해보십시오.

여기서 코스 테이블의 기본 키는 Course_ID입니다. 외래 키는 Teacher_ID입니다.

행동
Course_ID Course_Name 교사 _ID
Course_001 생물학 Teacher_001
Course_002 수학 Teacher_001
Course_003 영어 Teacher_003

과정의 외래 키가 교사의 기본 키와 일치한다는 것을 알 수 있습니다.

교사들
교사 _ID 선생님 성함
Teacher_001 카르멘
Teacher_002 베로니카
Teacher_003 호르헤

Teacher_ID 외래 키가 코스와 교사 테이블간에 관계 를 형성하는 데 도움이되었다고 말할 수 있습니다.

데이터베이스 관계 유형

외래 키 또는 다른 후보 키를 사용하여 테이블간에 세 가지 유형의 관계를 구현할 수 있습니다.

일대일 :이 유형의 관계는 관계의 각면에 하나의 레코드 만 허용합니다.

기본 키는 다른 테이블의 단 하나의 레코드와 관련이 있거나 없음입니다. 예를 들어, 결혼 생활에서 배우자 한 명만이 다른 배우자를 갖습니다. 이러한 종류의 관계는 단일 테이블에서 구현 될 수 있으므로 외래 키를 사용하지 않습니다.

일 - 대 - 다 관계 : 일 - 대 - 다 관계는 한 테이블의 단일 레코드가 다른 테이블의 여러 레코드와 관련되도록합니다.

Customers 테이블과 Orders 테이블이있는 데이터베이스가있는 비즈니스를 생각해보십시오.

단일 고객이 여러 주문을 구매할 수 있지만 단일 주문을 여러 고객과 연결할 수 없습니다. 따라서 Orders 테이블에는 Customers 테이블의 기본 키와 일치하는 외래 키가 포함되지만 Customers 테이블에는 Orders 테이블을 가리키는 외래 키가 없습니다.

다 대다 : 테이블의 많은 레코드가 다른 테이블의 많은 레코드에 링크 할 수있는 복잡한 관계입니다. 예를 들어, 우리의 비즈니스는 아마도 Customers 테이블과 Orders 테이블뿐 아니라 Products 테이블도 필요합니다.

Customers 테이블과 Orders 테이블 간의 관계는 일대 다이지만 Orders 테이블과 Products 테이블 간의 관계를 고려해야합니다. 주문에는 여러 제품이 포함될 수 있으며 제품은 여러 주문에 연결할 수 있습니다. 여러 고객이 동일한 제품 중 일부가 포함 된 주문을 제출할 수 있습니다. 이런 종류의 관계는 최소한 세 개의 테이블이 필요합니다.

데이터베이스 관계 란 무엇입니까?

데이터베이스 테이블간에 일관된 관계를 설정하면 데이터 무결성을 보장하여 데이터베이스 정규화에 기여할 수 있습니다. 예를 들어 외래 키를 통해 테이블을 연결하지 않고 대신 다음과 같이 수업 및 교사 테이블의 데이터를 결합하면 어떻게됩니까?

교사 및 코스
교사 _ID 선생님 성함 코스
Teacher_001 카르멘 생물학, 수학
Teacher_002 베로니카 수학
Teacher_003 호르헤 영어

이 디자인은 융통성이 없으며 데이터베이스 정규화의 첫 번째 원칙 인 First Normal Form (1NF)을 위반합니다. 각 테이블 셀에는 단일 이산 데이터가 있어야합니다.

아니면 우리는 1NF를 시행하기 위해 Carmen의 두 번째 레코드를 추가하기로 결정했습니다.

교사 및 코스
교사 _ID 선생님 성함 코스
Teacher_001 카르멘 생물학
Teacher_001 카르멘 수학
Teacher_002 베로니카 수학
Teacher_003 호르헤 영어

이것은 여전히 ​​불충분 한 디자인이며, 불필요한 중복과 데이터 삽입 변형 이라고 불리는 것을 도입하여 일관성없는 데이터에 기여할 수 있다는 것을 의미합니다.

예를 들어, 교사가 여러 개의 레코드를 가지고있는 경우 일부 데이터를 편집해야하지만 데이터 편집을 수행하는 사람이 여러 레코드가 있음을 인식하지 못하면 어떻게됩니까? 그런 다음 테이블에는 식별하거나 피하는 명확한 방법없이 동일한 개인에 대해 다른 데이터가 포함됩니다.

이 테이블을 두 개의 테이블, 위의 시각화 된 교사 및 코스로 나누면 데이터 간의 적절한 관계가 만들어 지므로 데이터의 일관성과 정확성이 보장됩니다.