본문 바로가기
Database

[Database] RDBMS 연산, 키(슈퍼키, 후보키, 기본키, 대체키, 외래키), 식별관계와 비식별관계

by 구루미94 2022. 3. 17.

1. 연산의 종류

(1) select

- 조건에 맞는 레코드를 선택

- ex) select * from student where 40 <= age and age <50;

(2) projection

- 특정한 컬럼만 출력

- ex) select name, age from student;

(3) union (합집합)

- ex) (select * from student where 35 <= age and age <45) union (select * from student where 30 <= age and age <= 40);

(4) difference(minus) (차집합)

- mysql 지원 x

(5) intersection (교집합)

- mysql 지원 x

 

2. Key

- 테이블의 레코드를 검색할 때 하나의 레코드를 구별(지정)할 수 있도록 하는 기준

- Unique 만족해야함

- Key가 없는 테이블도 충분히 존재할 수 있음 단지 불편할 뿐

- 단일키 혹은 복합키도 가능 (복합키: 여러개의 컬럼을 묶은 것. ex) [대학명, 학번])

- 하나의 테이블에 여러 개의 후보키가 있을 수 있음

(1) Super Key

- 각 행을 유일하게 식별할 수 있는 속성들의 집합

- 후보키의 전 단계

- ex) [학번], [주민등록번호], [학번+주민등록번호], [학번+주민등록번호+이름] 

- [이름] -> 서로 같을 수 있기 때문에 슈퍼키가 될 수 없다.

(2) Candidate Key

- 기본키가 될 수 있는 가능성이 있는 키

- ex) [학번], [주민등록번호]

(3) PK: Primary Key

- 후보키 중 선택된 키

- ex) [학번]

(4) Alternate Key

- 후보키 중 기본키를 제외한 나머지

- ex) [주민등록번호]

(5) FK: Foreign Key

- 다른 테이블(릴레이션)에서 기본키로 사용되는 컬럼이 현재 테이블에서 컬럼으로 사용되고 있을 경우

- 의도적인 중복 (join 시)

 

3. 식별관계와 비식별관계

(1) Identifying Relationship

- FK가 PK인 경우

(2) Non-Identifying Relationship

- FK가 일반컬럼인 경우

 

4. 인덱스와 키의 관계

(1) 기본 인덱스가 달리는 컬럼

- MySQL: PK(Primary Key), FK(Foreign Key) * PK, FK가 아니면 수동으로 인덱스 달아줘야함.

- Oracle : PK(Primary Key), UK(Unique Key)

(2) 명시적으로 인덱스를 달아야하는 경우

- CREATE INDEX 문 사용

(3) Index 종류

- 단일 인덱스: 단일 컬럼으로 구성

- 복합 인덱스: 여러 개의 컬럼으로 구성

 

5. Foreign Key

- 참조무결성 제약조건(RI: Referential Integrity)

: 외래키로 연결되어 있는 테이블의 경우에는

외래키로 연결 테이블을 검색하면 데이터가 존재해야 함.

∴ 삽입과 삭제에 순서가 있어야함

- 순서를 어기면 에러발생

- 원 레코드 삭제 시 참조 레코드 먼저 삭제해야.

- 외래키를 가지는 레코드 추가시 연결테이블에 레코드를 먼저 추가해야.

728x90

댓글