반응형
(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))
풀어 보았는데 맞을지 모르겠습니다.
헉.. 맞음. 푸는데 오래 걸렸지만 맞추었습니다.
최적화는 필요한 속성들만 남기고 자연조인을 하면 됩니다.
반응형
'백업 > 정보컴퓨터' 카테고리의 다른 글
[정보][DB][SQL] 2017-B-03 SQL (0) | 2021.02.05 |
---|---|
[정보][DB][관계DB] 2017-A-04 관계 DB (0) | 2021.02.05 |
[정보][DB][SQL] 2019-A-05 SQL (0) | 2021.02.05 |
[정보][DB][트랜잭션] 2019-A-14 트랜잭션 (0) | 2021.02.04 |
[정보][DB][SQL] 2020-B-02 SQL (0) | 2021.02.04 |