본문 바로가기

데이터베이스(DB)/Oracle
[Oracle] 복합키

// 복합키

- 두 개 이상의 속성을 묶음으로써 다른 속성과 구분 지어주는 방법

- 컬럼 수준에서는 기본키로 복합키를 선언할 수 없다.

- 컬럼 수준에서는 복합키를 참조하는 외래키를 선언할 수 없다.

- 주로 테이블 수준에서 복합키를 지정한다.


--학생
create table tblStudent (
    seq number primary key,     --번호(PK)
    name varchar2(30) not null  --학생명
);


--과목
create table tblSubject (
    seq number primary key,     --번호(PK)
    name varchar2(30) not null  --과목명
);


--수강신청
create table tblRegister (
    
    student_seq number references tblStudent(seq),
    subject_seq number references tblSubject(seq),
    regdate date default sysdate,
    
    constraint register_pk primary key(student_seq, subject_seq) --복합키 선언
    
);


--성적
create table tblScore (
    seq number primary key,
    score number not null,
    student_seq number,
    subject_seq number,
    
    constraint score_fk foreign key(student_seq, subject_seq) 
        references tblRegister(student_seq, subject_seq)    
);

--어떤 학생이 어떤 과목을 수강 신청 했는지 + 성적까지
select 
    st.name as "학생명",
    sj.name as "과목명",
    sc.score as "성적"
from tblStudent st
    inner join tblRegister r
        on st.seq = r.student_seq
            inner join tblSubject sj
                on sj.seq = r.subject_seq
                    left outer join tblScore sc
                        on r.student_seq = sc.student_seq and r.subject_Seq = sc. subject_Seq;

'데이터베이스(DB) > Oracle' 카테고리의 다른 글

[Oracle] 일련번호  (0) 2023.03.28
[Oracle] PL/SQL  (1) 2023.03.27
[Oracle] 데이터베이스 설계  (0) 2023.03.23
[Oracle] 계층형 쿼리  (0) 2023.03.23
[Oracle] Pseudo  (0) 2023.03.22