[DB]_23.02.15

‍전희주·2023년 2월 15일
0
    1. 릴레이션 Book(booktitle, authorname, booktype, listprice, authorgorup, publisher)에서 함수 종속성은 다음과 같다.

(1) Book 릴레이션은 몇 정규형인가? 그 이유를 설명하시오.

: 제 1정규형이다. 완전 함수 종속을 만족하지 못함

(2) 정규화를 수행하시오.

R1(booktitle, booktype)

R2(booktype, listprice)

R3(authorname, authorgroup)

R4(booktitle, authorname, publisher)

    1. 다음은 부품과 공급자에 대한 릴레이션 part(partnumber, description, supplier, suppaddress, price)


supplier - part -> m:n 관계 존재

[풀이]

⑴ 함수 종속성을 찾아보시오.
partnumberdescription
(partnumber, supplier)price
suppliersuppaddress

⑵ 릴레이션 Part는 몇 정규형인가?

  • 제1정규형
    • 도메인이 원자값이므로 제1정규형을 만족
    • 그러나 후보키(partnumber, supplier)의 일부 속성인 suppliersuppaddress를 결정하는 부분 함수 종속 문제 발생
      (partnumber, supplier)price
      suppliersuppaddress

⑶ 다음과 같이 분해를 했을 때 각각의 릴레이션은 몇 정규형인가?
R1(partnumber, description, supplier, price)
R2(supplier, suppaddress)

  • R1: 제 1정규형 (부분 함수 종속 발생)
    🔽
    후보키: (partnumber, supplier)
    partnumberdescription
  • R2: 제 3정규형

⑷ ⑶의 릴레이션에서 분해가 더 필요한가? 필요하면 분해를 수행하시오.
부분 함수 종속 문제 해결 필요
🔽
R1( partnumber ,description)
R2( partnumber, supplier, price)
R3( supplier, suppaddress)

    1. [병원 데이터베이스] 다음은 마당병원의 환자 처방 폼의 일부이다.

[풀이]

⑴ 처방 폼에 있는 속성을 보고 함수 종속성을 찾아내고 함수 종속성 다이어그램을 그리시오. 그리고 키를 정하시오. 필요한 경우 속성이나 데이터 값에 조건을 붙여도 좋다.

🔽

  • 릴레이션 4개
    R 1 ( 환자번호(PK) , 환자이름 , 병동이름 , 병실번호 )
    R 2 ( 병동이름(PK) , 병동번호 )
    R 3 ( 약번호(PK) , 약이름 , 용량, 처방 , 복용법 )
    R 4 ( 환자번호(PF), 약번호(PF) , 시작일(PK) , 1일 복용단위 , 종료일 )


  • 함수 종속성
    - 환자번호,→환자이름, 병동이름, 병동번호, 병실번호,
    - 약번호 → 약이름, 처방, 용량, 복용법
    - (환자번호, 약번호, 시작일)→1일복용단위 , 종료일
    - 병동번호→병동이름
    기본키 : (환자번호, 약번호, 시작일)
    🔽
    환자번호로는 환자이름, 병동이름., 병동번호, 병실번호를 설명가능하고, 약번호로는 약이름, 용량, 처방, 복용법, 그리고 환자번호, 약번호, 시작일로 1일 복용단위 종료일까지 다 설명가능

    최종적으로는 키가 환자번호, 약번호, 시작일이 될수 있음

⑵ 함수 종속성 다이어그램을 보고 정규화를 수행하시오. 최소 제3정규형이 되도록 만드시오.
⑶ 정규화 후 분해된 테이블에 대하여 기본키와 외래키를 표시하시오.

  • 정규화 수행

  • 제 2 정규화 수행 (부분함수 종속 제거)

    R 1 ( 환자번호 , 환자이름 , 병동이름 , 병동번호, 병실번호 )
    R 2 ( 약번호 , 약이름 , 용량, 처방 , 복용법 )
    R 3 ( 환자번호, 약번호, 시작일 , 1일 복용단위 , 종료일 )

  • 제 3 정규화 수행 (병동이름 -> 병동번호 제거)

    R 1 ( 환자번호 , 환자이름 , 병동이름 , 병실번호 )
    R 2 ( 병동이름 , 병동번호 )
    R 3 ( 약번호 , 약이름 , 용량, 처방 , 복용법 )
    R 4 ( 환자번호, 약번호 , 시작일 , 1일 복용단위 , 종료일 )

profile
heejoojeon@daou.co.kr

1개의 댓글

comment-user-thumbnail
2023년 6월 8일

혹시 무슨책인지 알 수 있을까요?

답글 달기

관련 채용 정보