프로그래머스 SQL/DB Essentials - RDB

mohadang·2022년 6월 21일
0

SQL/DB Essentials

목록 보기
1/7
post-thumbnail

host lang : 어플리케이션에서 사용하는 언어
sql : DBMS 제어 언어
sql의 기능을 잘 사용하면 불필요한 host lang을 작성하지 않아도 된다.

관계 데이터 구조

기본 개념

모든 데이터를 테이블로 표현하여 저장

Relation

테이블을 Relation이라 함
릴레이션은 속성(Attribute)으로 구성됨

tuple, n-tuple

컬럼

Relation Scheme

스키마

Relation Instance

튜플, 레코드, 로우

다중값 속성은 사용할 수 없다

  • EX) 100 | 최정환 | 4 | 컴퓨터 | 100, 50(다중값 속성, 사용 X)

기본키(PK)

테이블에서 튜플을 유일하게 식별할 수 있는 속성의 집합
기본키는 여러 컬럼을 조합하여 구성할 수도 있다.

외래키(FK)

다른 테이블의 기본키에 있는 값만을 갖는 속성의 집합
외래키는 기본키가 아님, 인스턴스의 고유성을 파악할 수 없다.
PK와 FK가 같은 테이블에 있을 수도 있음
PK/FK(기본키면서 동시에 외래키)인 경우도 있음

  • EX) FK들을 조합하여 PK로 사용하는 경우

부모, 자식 테이블

참조하는 테이블(referencing table), 자식 테이블
참조되는 테이블(referenced table), 부모 테이블
FK를 가지는 테이블은 자식 테이블이다. 다른 테이블의 PK를 참조하고 있으니까
PK를 가지는 테이블은 부모 테이블일 수 있다. 다른 테이블에서 PK를 FK로 참조하고 있을 수 있으니까

관계 테이블 무결성 제약

개체 무결성

PK는 유일하며(UNIQUE), NULL 값을 가질 수 없음(NOT NULL)

참조 무결성

FK 값은 부모 테이블의 PK 값과 같거나 NULL 값을 가짐.

  • 부모 테이블의 PK에 없는 값이면 NULL이다.

데이터베이스는 어느 시점에도 항상 건전한 상태(sound state)를 유지해야함
이를 위해 무결성 제약을 사용한다.

  • DBMS는 무결성을 위해 연산 후 관련된 데이터를 적절히 변경함
  • DBMS는 부적절한 갱신 연산의 실행 자체를 거부함

기타 무결성

중복값을 가질 수 없다

  • EX) X : 등록 과목 : (A, B, C)
  • EX) O : 등록 과목 : (A), 등록 과목 : (B), 등록 과목 : (C)

관계 대수

집합 연산자

합집합(union)

결합 법칙, 교환 법칙

교집합(intersection)

결합 법칙, 교환 법칙

차집합(difference)

방향성이 있어서 A - B, B - A 의 결과가 서로 다름

카디션 프로덕트(Cartesian product)

두 테이블의 튜플이 합쳐지고 permutaion 방식으로 인스턴스가 생성됨
EX) 테이블 1(10 개), 테이블 2(3개) => 테이블 1 x 테이블 2 = 테이블 3(30개)

순수 관계 연산자

셀렉트(select) : unary operator

릴레이션의 수평적 부분 집합(테이블에서 데이터를 수평적으로 필터링을 한다)

프로젝트(project) : unary operator

릴레이션의 수직적 부분집합(테이블에서 데이터를 수직적으로 필터링을 한다)
타켓 속성 리스트 Y 만으로 구성된 릴레이션
결과에서 중복된 레코드는 제거함. 그래서 원래 테이블의 레코드보다 작을 수 있음

조인(join) - 중요

셀렉트(카디션_프로덕트(테이블)) 처리
자연 조인을 하게 되면 중복된 튜플은 제거한다.
PK와 FK로 연결된 부모/자식 테이블에서 사용

  • 학생 테이블, 등록 테이블 join => 학생 등록 테이블
  • 학생 테이블, 등록 테이블, 과복 테이블 join => 학생 등록 과목 테이블

조인, 셀렉트, 프로젝트를 사용하여 원본 테이블들에서 원하는 테이블을 추출 가능하다.
셀렉트롸 프로젝트를 같이 사용시 셀렉트를 먼저 사용해야 한다.

  • 프로젝트를 사용하면 셀렉트에서 사용할 컬럼이 사라져서 셀렉트가 제대로 동작 안될 수 있다.

확장된 관계 연산자

외부 조인(outer join)

Right Outer Join : 자연 조인을 하는데 조인에 참여할 수 없는 오른쪽 테이블의 레코드가 추가된다. 빈 컬럼은 NULL값으로 채워짐

Full Outer Join : 자연 조인을 하는데 조인에 참여할 수 없는 왼쪽/오른쪽 테이블의 레코드가 추가된다. 빈 컬럼은 NULL값으로 채워짐

그룹 연산과 통계 연산 : unary operator

기준 속성 값이 같은 튜플끼리 그룹핑함
그룹 연산이 안되었다면 값마다 그룹으로 되어 있다고 생각하면 된다.

통계 연산

기준 속성 값에 대한 통계치를 계산(COUNT, SUM, AVG, MIN, MAX, STDDEV, VARIAN)
NULL 값이 들어 있는 튜플은 제외
중복값이 있는 튜플도 계산에 포함
EX)

  • AVG_나이(학생) : 22
  • AVG나이(GROUP학년(학생)) : 1=19, 2=20, 3=23. 4=25

작명 연산 : unary operator

profile
mohadang

0개의 댓글