소프트웨어 공부/데이터베이스

[데이터베이스] 테이블 관계는 왜 중요한가

야곰야곰+책벌레 2021. 8. 23. 19:00
728x90
반응형

관계는 관계형 데이터베이스의 중요한 구성 요소다.

 

  • 이것은 논리적으로 서로 연관된 한 쌍의 테이블들 사이의 연결을 설정한다.
  • 이것은 테이블 구조를 더 개선하고 이중 데이터를 최소화하도록 도와준다.
  • 이것은 여러 테이블들로부터 동시에 데이터를 추출할 수 있도록 해 주는 메커니즘이다.

  적절히 정의된 관계는 관계 수준의 무결성을 제공하는데, 이것은 관계 자체가 신뢰성 있고 정상적이라는 것을 보장한다. 적절한 관계 설정에 실패해버리면 여러 테이블로부터 온 데이터를 갖고 작업하기가 힘들어지고, 연관된 테이블들에 레코드를 삽입, 갱신 또는 삭제하려고 할 때 문제에 맞닥뜨리게 된다.

 

관계의 종류


  데이터베이스 내의 테이블들 사이의 관계 설정을 시작하기 전에 주어진 한 상의 테이블들 사이에 존재할 수 있는 관계의 종류에 대해 알아야만 한다. 이것들은 어떻게 식별하는지 아는 것은 데이터베이스를 성공적으로 설계하기 위한 매우 중요한 기술이다.

 

일대일 관계

  테이블 A의 한 레코드가 테이블 B의 오직 한 레코드와 연관되고, 테이블 B의 한 레코드가 테이블 A의 오직 한 레코드와 연관된다. 일대일 관계는 보통 부분 집합 테이블을 수반한다. 다이어그램에서 테이블들 사이에 나타나는 선은 관계의 종류를 가리키고, 각 종류를 위해 사용하는 특별한 선이 있다.

일대일 관계 그리기

일대다 관계

  테이블 A의 한 레코드는 테이블 B의 하나 이상의 레코드들과 연관될 수 있고, 테이블 B의 한 레코드는 테이블 A의 오직 한 레코드와 연관된다. 이것은 데이터베이스 내의 한 쌍의 테이블들 사이에 존재하는 가장 일반적인 관계이고, 식별하기가 가장 쉽니다. 데이터 무결성 관점에서 이것은 결정적으로 중요한데, 왜냐면 이것이 이중 데이터를 제거하고 중복 데이터를 절대적으로 최소화해 주기 때문이다.

일대다 관계 그리기

  까마귀 발 기호는 항상 관계의 '다(many)' 측의 테이블 옆에 위치한다는 것에 유의 한다.

 

다대다 관계

  테이블 A의 한 레코드는 테이블 B의 하나 이상의 레코드들과 연관될 수 있고, 테이블 B의 한 레코드는 테이블 A의 하나 이상의 레코드들과 연관될 수 있다. 이것은 데이터베이스의 한 쌍의 테이블들 사이에 존재하는 두 번째로 흔한 관계다.

다대다 관계 그리기

  다대다 관계의 경우 각 테이블 옆에 까마귀 발들이 있다.

 

다대다 관계의 문제

  • 테이블들 중 하나로부터 정보를 추출하는 것이 지루하고 다소 어려울 것이다.
  • 테이블들 중 하나가 대량의 중복 데이터를 포함할 것이다.
  • 양 테이블에 이중 데이터가 존재할 것이다.
  • 데이터를 삽입/갱신/삭제하기 어려울 것이다.

자기 참조 관계

  이 특별한 종류의 관계는 한 쌍의 테이블들 사이에 존재하지 않고 한 테이블 내의 레코드들 사이에 존재하는 관계다. 그러나 설계 작업에서 이 관계도 테이블 관계로 간주할 것이다.

 

일대일

  테이블 내이 주어진 레코드가 그 테이블 내의 오직 하나의 다른 레코드와 연관될 수 있을 때 자기 참조 일대일 관계가 존재한다.

예) 회원 테이블에서 주어진 회원은 조직 내 오직 한 명의 다른 회원을 보증할 수 있다.

자기 참조 일대일 관계 그리기

일대다

  테이블 내의 주어진 레코드가 그 테이블 내의 하나 이상의 다른 레코드들과 연관될 수 있을 때 테이블은 자기 참조 일대다 관계를 가진다.

예) 주어진 고객이 조직 내의 다른 고객들을 참조할 수 있다.

자기 참조 일대다 관계의 예

다대다

  테이블 내의 주어진 레코드가 그 테이블 내의 하나 이상의 다른 레코드들과 연관될 수 있고, 하나 이상의 레코드들 그 자체도 주어진 레코드와 연관될 수 있을 때 자기 참조 다대다 관계가 존재한다.

예) 특별한 부품이 여러 다른 구성 요소 부품들을 포함할 수 있고, 그 자체가 다른 부품의 구성 요소가 될 수 있다.

자기 참조 다대다 관계 그리기

 

728x90
반응형