4.1 소개
데이터베이스 테이블을 일반 테이블로 변환하면 이제 테이블 간의 관계를 분석할 수 있습니다. 두 개의 관련 테이블 간에 상호 작용하는 요소의 수를 카디널리티라고 합니다. 카디널리티는 데이터를 테이블로 얼마나 효율적으로 분할했는지 제어하는 데 도움이 됩니다.
이론적으로 모든 엔터티는 서로 관계를 유지할 수 있지만 실제로 엔터티 간의 관계에는 세 가지 유형이 있습니다.
- 1-1
- 일대다
- 다대다
4.2 일대일 커뮤니케이션
엔터티 B의 각 인스턴스에 대해 엔터티 A의 인스턴스가 하나만 있는 경우 일대일 관계(종종 "1:1"로 표시됨)가 있다고 합니다. ER 다이어그램에서 이러한 관계는 각 끝에 작은 막대가 있는 선으로 표시됩니다.
1:1 관계는 일반적으로 두 테이블을 분리해야 하는 타당한 이유가 없는 한 두 테이블의 데이터가 하나로 결합되는 것이 가장 좋다는 것을 나타냅니다.
그러나 경우에 따라 1:1 관계로 테이블을 사용하는 것이 합리적입니다. 테이블에 설명과 같은 선택적 데이터가 있는 필드가 있고 비어 있는 경우가 많은 경우 모든 설명을 별도의 테이블로 이동하는 것이 좋습니다. 이렇게 하면 빈번한 간격을 없애고 데이터베이스의 효율성을 높일 수 있습니다. .
그런 다음 데이터를 적절하게 매핑하려면 각 테이블에 하나 이상의 동일한 열을 포함해야 합니다(이를 위해 기본 키를 선택하는 것이 가장 좋습니다).
4.3 일대다 관계
이러한 유형의 관계는 한 테이블의 레코드가 다른 테이블의 여러 엔터티와 연결될 때 발생합니다. 예를 들어, 동일한 고객이 여러 권을 주문하거나 도서관 방문객이 한 번에 여러 권의 책을 빌릴 수 있습니다. 일대다 관계(또는 줄여서 1:M)는 아래 예와 같이 까마귀 발 표기법을 사용하여 다이어그램으로 표현됩니다.
데이터베이스를 계획할 때 1:M 관계를 적용하려면 "일" 테이블의 기본 키를 "다" 테이블에 속성으로 추가하기만 하면 됩니다. 기본 키가 다른 테이블에 있으면 "외래 키"라고 합니다. "일" 테이블은 상위 테이블로 간주되고 "다" 테이블은 하위 테이블로 간주됩니다.
4.4 다대다 관계
한 테이블의 여러 엔터티가 다른 테이블의 여러 엔터티에 연결될 수 있는 경우 다대다(또는 M:M) 관계가 있는 것으로 간주됩니다. 예를 들어, 학생과 수업 사이에는 이러한 관계가 존재합니다. 각 학생은 여러 수업에 참석할 수 있고 따라서 많은 학생이 각 수업에 올 수 있기 때문입니다.
ER 다이어그램에서 이러한 유형의 관계는 다음과 같이 표시됩니다.
안타깝게도 이러한 관계를 데이터베이스에서 직접 구현하는 것은 불가능합니다. 따라서 두 개의 일대다 관계로 분할해야 합니다.
이렇게 하려면 두 테이블 사이에 새 엔터티를 만들어야 합니다. 판매와 제품 사이에 M:M 관계가 성립되면 새로운 엔터티는 각 판매의 내용을 나타내므로 "판매된 제품"이라고 할 수 있습니다.
"상품 판매"와 "매출" 테이블과 "상품" 테이블이 1:M 유형으로 연결됩니다. 다른 모델에서 이러한 중간 엔터티는 "연결 테이블", "연관 엔터티" 또는 "노드 테이블"과 같이 다르게 호출됩니다.
각 링크 테이블 항목은 인접한 테이블의 서로 다른 두 엔터티를 연결합니다(추가 정보를 포함할 수도 있음). 예를 들어 학생과 수업 사이의 링크 테이블은 다음과 같을 수 있습니다.
4.5 필수 여부?
링크 분석에 대한 또 다른 접근 방식은 연결된 엔터티 중 어떤 것이 다른 엔터티의 존재에 대한 전제 조건인지 결정하는 것입니다. 옵션인 링크 쪽은 트렁크에 원으로 표시되어 있습니다.
예를 들어, 국가가 UN에 대표를 두려면 세계 지도에 존재해야 하지만 그 반대의 진술은 거짓이 됩니다.
두 엔터티는 상호 의존적일 수 있습니다(즉, 하나가 다른 하나 없이 존재할 수 없음).
재귀 링크
경우에 따라 테이블이 자신을 참조할 수 있습니다. 예를 들어 직원 테이블에는 동일한 테이블의 다른 직원을 참조하는 "관리자" 특성이 있을 수 있습니다. 이것은 재귀 관계입니다.
추가 연결
링크가 두 번 이상 표현되면 중복으로 간주됩니다. 원칙적으로 중요한 정보를 잃지 않고 그 중 하나를 삭제할 수 있습니다. 예를 들어 "students" 엔터티가 "teachers" 엔터티에 직접적으로 뿐만 아니라 "classes"를 통해 간접적으로 연결되어 있는 경우 "students"와 "teachers" 엔터티 간의 관계를 제거하는 것이 좋습니다. 이 결정은 수업을 통해서만 학생을 교사에게 배정할 수 있다는 사실에 의해 정당화됩니다.
4.6 데이터의 참조 무결성
기본 및 외래 키를 변경할 때 데이터의 참조 무결성 과 같은 측면을 관찰해야 합니다 . 주요 아이디어는 동일한 데이터를 일관성 있게 저장하는 데이터베이스에 두 개의 테이블을 유지하는 것입니다.
데이터 무결성은 테이블 간에 올바른 링크가 있는 테이블 간에 적절하게 구축된 관계를 나타냅니다. 어떤 경우에 데이터 무결성이 침해될 수 있습니까?
- 삭제 이상 . 기본 테이블에서 행이 삭제될 때 발생합니다. 이 경우 종속 테이블의 외래 키는 마스터 테이블에서 삭제된 행을 계속 참조합니다.
- 삽입 이상 . 행이 종속 테이블에 삽입될 때 발생합니다. 이 경우 종속 테이블의 외래 키는 마스터 테이블 행의 기본 키와 일치하지 않습니다.
- 이상을 업데이트합니다 . 이러한 이상 현상으로 인해 한 테이블의 여러 행에 동일한 개체에 속하는 데이터가 포함될 수 있습니다. 한 행의 데이터를 변경하면 다른 행의 데이터와 충돌할 수 있습니다.
삭제 이상
삭제 이상 현상을 해결하려면 외래 키를 다음 두 제약 조건 중 하나로 설정해야 합니다.
종속 테이블의 행에 반드시 마스터 테이블의 행이 필요한 경우 외래 키는 계단식 삭제로 설정됩니다. 즉, 마스터 테이블에서 행이 삭제되면 연결된 행이 종속 테이블에서 삭제됩니다.
종속 테이블의 행이 기본 테이블의 행과의 관계를 허용하지 않는 경우(즉, 이러한 관계는 선택적임) 관련 행이 기본 테이블에서 삭제될 때 외래 키가 NULL로 설정됩니다. 외래 키 열은 null을 허용해야 합니다.
삽입 이상
종속 데이터 테이블에 추가할 때 삽입 이상 현상을 해결하려면 외래 키를 나타내는 열이 null을 허용해야 합니다. 따라서 추가되는 개체가 기본 테이블과 연결되어 있지 않으면 외래 키 열은 NULL 값을 갖게 됩니다.
이상 업데이트
업데이트 이상 문제를 해결하기 위해 앞에서 설명한 정규화를 적용한다.
GO TO FULL VERSION