본문 바로가기

Programming Practice/SQL

개념

1. Foreign key (FK)

1) 정의

A FOREIGN KEY in 1 table point to a PRIMARY/UNIQUE key in another table

ex) EMPLOYEE / DEPARTMENT table 이 있고, DEPARTMENT table 의 Primary Key(PK) 가 department_id 일 때, EMPLOYEE table 의 department_id 는 foreign key가 된다.

EMPLOYEE table은 DEPARTMENT table을 참조(reference)한다고 한다. 

DEPARTMENT table에 데이터가 먼저 들어가야 하므로, DEPARTMENT table은 부모 테이블, EMPLOYEE table은 자식 테이블이 된다. DEPARTMENT table 의 한 row의 department_id 는 EMPLOYEE table 의 여러 row 에 올 수 있다. 따라서 EMPLOYEE table 과 DEPARTMENT table의 관계는 M:1 관계다.


2) 목적

데이터 무결성 확보

- INSERT 시 : 부모 테이블 데이터 입력 → 자식 테이블 데이터 입력

ex) DEPARTMENT table에 없는 department_id는 불필요한 데이터이다. EMPLOYEE table 이 DEPARTMENT table을 참조하고, department_id 가 foreign key로 잡혀있을때, EMPLOYEE table 에 DEPARTMENT table 에 없는 department_id 를 입력하는 것은 불가능하다. 따라서 부모 테이블인 DEPARTMENT table에 데이터를 먼저 입력해야 한다.

- DELETE 시 : 자식 테이블 데이터 삭제(수정) → 부모 테이블 데이터 삭제(수정) 

ex) EMPLOYEE table에 departmend_id가 70인 데이터가 1건 존재하는데, DEPARTMENT table 에서 departmend_id가 70인 데이터를 삭제할 수 없다. EMPLOYEE table에 departmend_id가 70인 데이터를 먼저 삭제해야 한다.


2. Schema

1) 정의

A database schema is the skeleton structure that represents the logical view of the entire database.

A database schema defines its entities and the relationship among them

2) 분류

Physical Database Schema : actual storage of data and its form of storage like files, indices

Logical Database Schema : It defines tables, views and integrity constraints