2 minute read

사용할 개념적 데이터

설계 3단계: 논리적 설계

  • 목적
    • DBMS에 적합한 논리적 스키마 설계
    • 개념적 스키마를 논리적 데이터 모델을 이용해 논리적 구조로 표현
    • 일반적으로 관계 데이터 모델을 이용
  • 결과물
    • 논리적 스키마: 릴레이션 스키마
  • 주요 작업
    • 개념적 설계 단계의 결과물인 E-R다이어그램을 릴레이션 스키마로 변환
    • 릴레이션 스키마 변환 후 속성의 데이터 타입, 길이, 널 값 허용 여부, 기본 값, 제약조건 등을 세부적으로 결정하고 결과를 문서화시킨다.
  • E-R 다이어그램을 릴레이션 스키마로 변환하는 규칙
    1. 모든 개체는 릴레이션으로 변환한다.
    2. 다대다(N:M)관계는 릴레이션으로 변환한다.
    3. 일대다(1:N)관계는 외래키로 표현한다.
    4. 일대일(1:1)관계는 외래키로 표현한다.
    5. 다중 값 속성은 릴레이션으로 변환한다.

모든 개체는 릴레이션으로 변환한다

E-R 다이어그램의 각 개체를 하나의 릴레이션으로 변환

  • 개체의 이름 -> 릴레이션 이름
  • 개체의 속성 -> 릴레이션의 속성
  • 개체의 키 속성 -> 릴레이션의 기본키
  • 개체의 속성이 복합 속성인 경우에는 복합 속성을 구성하고 있는 단순 속성만 릴레이션의 속성으로 변환
  • 한빛 마트 실습)

다대다 관계는 릴레이션으로 변환한다

E-R 다이어그램의 다대다 관계를 하나의 릴레이션으로 변환

  • 관계의 이름 -> 릴레이션 이름
  • 관계의 속성 -> 릴레이션의 속성
  • 관계에 참여하는 개체를 규칙1에 따라 릴레이션으로 변환한 후 이 릴레이션의 기본키를 관계 릴레이션에 포함시켜 외래키로 지정하고 외래키들을 조합하여 관계 릴레이션의 기본키로 지정

    별도의 기본키를 만들어 사용하는 방법도 있다.
  • 한빛 마트 실습)

일대다 관계는 외래키로 표현한다

E-R 다이어그램의 일대다 관계는 외래키로만 표현

  • 일반적인 일대다 관계는 외래키로 표현한다.
    • 일다대 관계에서 1측 개체의 릴레이션의 기본키를 n측 개체 릴레이션에 포함시켜 외래키로 지정한다.
      반대로 하게된면 유일성을 만족할 수 없게 된다.
    • 관계의 속성들도 n측 개체 릴레이션에 포함시킨다.
  • 약한 개체가 참여하는 일대다 관계는 외래키를 포함해서 기본키로 지정한다.
    • 일대다 관계에서 1측 개체 릴레이션의 기본키를 n측 개체 릴레이션에 포함시켜 외래키로 지정한다.
    • 관계의 속성들도 n측 개체 릴레이션에 포함시킨다.
    • n측 개체 릴레이션은 외래키를 포함하여 기본키를 지정한다.
      • 약한 개체는 오너 개체에 따라 존재 여부가 결정되므로 오너 개체의 기본키를 이용해 식별해야 한다.
  • 한빛 마트 실습)

일대일 관계는 외래키로 표현한다

E-R 다이어그램의 일대일 관계는 외래키로만 표현한다.

  • 일반적인 일대일 관계는 외래키를 서로 주고 받는다.
    • 관계에 참여하는 개체 릴레이션들이 서로의 기본키를 주고 받아 외래키로 지정
    • 관계의 속성들도 모든 개체 릴레이션에 포함시킨다.
    • 불필요한 데이터 중복이 발생할 수 있다.
  • 일대일 관계에 필수적으로 참여하는 개체의 릴레이션만 외래키를 받는다.
    • 관계에 필수적으로 참여하는 개체 릴레이션에만 외래키를 포함시킨다.
      반대의 경우에 관계에 참여하지 않는 개체에 널값이 들어가기 떄문이다.
    • 관계의 속성들은 관계에 필수적으로 참여하는 개체 릴레이션에 포함시킨다.
  • 모든 개체가 일대일 관계에 필수적으로 참여하면 릴레이션을 하나로 합친다.
    • 관계에 참여하는 개체 릴레이션들을 하나의 릴레이션으로 합쳐서 표현
    • 관계의 이름을 릴레이션 이름으로 사용하고 관계에 참여하는 두 개체의 속성들을 관계 릴레이션에 모두 포함시킨다.
    • 두 개체 릴레이션의 키 속성을 조합하여 관계 릴레이션의 기본키로 지정

다중 값 속성은 릴레이션으로 변환한다

E-R 다이어그램의 다중 값 속성은 독립적인 릴레이션으로 변환

  • 다중 값 속성과 함께 그 속성을 가지고 있던 개체 릴레이션의 기본키를 외래키로 가져와 새로운 릴레이션에 포함시킨다.
  • 새로운 릴레이션의 기본키는 다중 값 속성과 외래키를 조합하여 지정한다.
사원번호 사원명 직위 부하직원
e01 철수 과장 (영희, 민수)

속성에 다중 값을 저장할 수 없는 릴레이션 특성을 위반한다.

사원번호 사원명 직위 부하직원
e01 철수 과장 영희
e01 철수 과장 민수

릴레이션 특성을 위반하진 않지만 중복 저장되는 문제가 발생한다.

사원 릴레이션    
사원번호 사원명 직위
e01 철수 과장
사원-부하직원 릴레이션  
사원번호 부하직원
e01 영희
e01 민수

기타 고려 사항

  • 모든 관계를 독립적인 릴레이션으로 변환할 수 있다
    속성이 많은 관계는 유형에 상관없이 릴레이션으로의 변환을 고려할 수 있다.

  • 개체가 자기 자신과 관계를 맺는 순환 관계도 기본 규칙을 그대로 적용

    한명의 상사가 여러명의 부하를 가지는 형태다. 일대다에서 n측에 외래키를 두므로 사원 릴레이션에 상사번호 외래키를 준다.

Leave a comment