host lang : 어플리케이션에서 사용하는 언어
sql : DBMS 제어 언어
sql의 기능을 잘 사용하면 불필요한 host lang을 작성하지 않아도 된다.
모든 데이터를 테이블로 표현하여 저장
테이블을 Relation이라 함
릴레이션은 속성(Attribute)으로 구성됨
컬럼
스키마
튜플, 레코드, 로우
테이블에서 튜플을 유일하게 식별할 수 있는 속성의 집합
기본키는 여러 컬럼을 조합하여 구성할 수도 있다.
다른 테이블의 기본키에 있는 값만을 갖는 속성의 집합
외래키는 기본키가 아님, 인스턴스의 고유성을 파악할 수 없다.
PK와 FK가 같은 테이블에 있을 수도 있음
PK/FK(기본키면서 동시에 외래키)인 경우도 있음
참조하는 테이블(referencing table), 자식 테이블
참조되는 테이블(referenced table), 부모 테이블
FK를 가지는 테이블은 자식 테이블이다. 다른 테이블의 PK를 참조하고 있으니까
PK를 가지는 테이블은 부모 테이블일 수 있다. 다른 테이블에서 PK를 FK로 참조하고 있을 수 있으니까
PK는 유일하며(UNIQUE), NULL 값을 가질 수 없음(NOT NULL)
FK 값은 부모 테이블의 PK 값과 같거나 NULL 값을 가짐.
데이터베이스는 어느 시점에도 항상 건전한 상태(sound state)를 유지해야함
이를 위해 무결성 제약을 사용한다.
중복값을 가질 수 없다
결합 법칙, 교환 법칙
결합 법칙, 교환 법칙
방향성이 있어서 A - B, B - A 의 결과가 서로 다름
두 테이블의 튜플이 합쳐지고 permutaion 방식으로 인스턴스가 생성됨
EX) 테이블 1(10 개), 테이블 2(3개) => 테이블 1 x 테이블 2 = 테이블 3(30개)
릴레이션의 수평적 부분 집합(테이블에서 데이터를 수평적으로 필터링을 한다)
릴레이션의 수직적 부분집합(테이블에서 데이터를 수직적으로 필터링을 한다)
타켓 속성 리스트 Y 만으로 구성된 릴레이션
결과에서 중복된 레코드는 제거함. 그래서 원래 테이블의 레코드보다 작을 수 있음
셀렉트(카디션_프로덕트(테이블)) 처리
자연 조인을 하게 되면 중복된 튜플은 제거한다.
PK와 FK로 연결된 부모/자식 테이블에서 사용
조인, 셀렉트, 프로젝트를 사용하여 원본 테이블들에서 원하는 테이블을 추출 가능하다.
셀렉트롸 프로젝트를 같이 사용시 셀렉트를 먼저 사용해야 한다.
Right Outer Join : 자연 조인을 하는데 조인에 참여할 수 없는 오른쪽 테이블의 레코드가 추가된다. 빈 컬럼은 NULL값으로 채워짐
Full Outer Join : 자연 조인을 하는데 조인에 참여할 수 없는 왼쪽/오른쪽 테이블의 레코드가 추가된다. 빈 컬럼은 NULL값으로 채워짐
기준 속성 값이 같은 튜플끼리 그룹핑함
그룹 연산이 안되었다면 값마다 그룹으로 되어 있다고 생각하면 된다.
기준 속성 값에 대한 통계치를 계산(COUNT, SUM, AVG, MIN, MAX, STDDEV, VARIAN)
NULL 값이 들어 있는 튜플은 제외
중복값이 있는 튜플도 계산에 포함
EX)