백업/정보컴퓨터

[정보][DB][SQL] 2018-A-14 SQL

Unknown9 2021. 2. 5. 16:40
반응형

(1) (나)의 ㉠, ㉡에 해당하는 내용을 순서대로 쓸 것.

CREATE TABLE TREAT
( P_id INT ㉠ ,
  D_id INT ㉠ ,
  date CHAR(6) ㉠ ,
  PRIMARY KEY(P_id, D_id, date),
  ㉡ (P_id) REFERENCES PATIENT(P_id)
    ON DELETE CASCADE
    ON UPDATE CASCADE,
  ㉡ (D_id) REFERENCES DOCTOR(D_id)
    ON DELETE CASCADE
    ON UPDATE CASCADE );

 ㉠은 P_id, D_id, date가 모두 기본키이므로, 

NOT NULL

 

CREATE 공부를 안했더니,

㉡ 은 외래키를 지정하는 거 (기본서 135페이지에 뙇)

FOREIGN KEY

 

(2) <조건>을 고려하여 질의어 “김진환 의사가 진료한 환자의 환자 번호를 검색하시오.”를 최적화된 관계 대수식으로 쓸 것.

흡!! 관계 대수식!!

프로젝션(projection)은 Π, 실렉트(select)는 σ, 자연 조인(natural join)은 ⋈N으로 표기한다.
최적화된 관계 대수식이란 질의어를 처리하는 과정에서 만들어지는 연산의 중간 결과 크기를 최소화한 관계 대수식이다.

[관계 대수식 예]
질의어 : 진료 날짜 ‘171016’에 진료 받은 환자의 환자 이름을 검색하시오.
 - 최적화되지 않은 관계 대수식 : ΠP_name(σdate=‘171016’(TREAT ⋈N PATIENT))
 - 부분 최적화된 관계 대수식 : ΠP_name((σdate=‘171016’(TREAT)) ⋈N PATIENT)
 - 최적화된 관계 대수식 : ΠP_name(ΠP_id(σdate=‘171016’(TREAT)) ⋈N ΠP_id, P_name(PATIENT))

예를 잘 보면, "김진환 의사가 진료한 환자의 환자 번호를 검색하시오"

->  TREATE 에서 d_id가 김진환 인 것을 먼저 찾고

-> 그 결과 환자에서 projection.

최적화되지 않은 관계 대수식 ΠP_id(σD_name="김진환"(DOCTOR ⋈N TREAT))

최적화된 관계 대수식 ΠP_id(ΠD_id(σD_name="김진환"(DOCTOR))⋈N ΠP_id,D_id(TREAT))

 

풀어 보았는데 맞을지 모르겠습니다.

헉.. 맞음. 푸는데 오래 걸렸지만 맞추었습니다.

최적화는 필요한 속성들만 남기고 자연조인을 하면 됩니다.

반응형