// 복합키
- 두 개 이상의 속성을 묶음으로써 다른 속성과 구분 지어주는 방법
- 컬럼 수준에서는 기본키로 복합키를 선언할 수 없다.
- 컬럼 수준에서는 복합키를 참조하는 외래키를 선언할 수 없다.
- 주로 테이블 수준에서 복합키를 지정한다.
--학생
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 |