SQL 기본 - 1. 관계형 데이터베이스

SSAD·2023년 2월 20일
0

SQLD

목록 보기
3/10

1 관계형 데이터 베이스(Relation Database)


1. 관계형 데이터베이스(Relation Database)

1. 관계형 데이터베이스의 등장

  • 1970년 E.F Codd 박사의 논문에 처음 소개된 데이터베이스

  • 릴레이션(Relation)과 릴레이션의 조인 연산을 통해서 합집합, 교집합, 차집합 등을 만들 수 있음

  • 기업에서 가장 많이 사용하는 데이터베이스로 Oracle, MS-ASQL, MySQL, Sybase 등
    다양한 데이터베이스 관리 시스템이 있음

2. 데이터베이스와 데이터베이스 관리 시스템의 차이점

  • 데이터베이스는 데이터를 어떠한 형태의 자료구조(Data Structure)로 사용하느냐에 따라서 나누어짐

  • 데이터베이스의 종류는 계층형, 네트워크형 데이터베이스, 관계형 데이터베이스 등이 있음

  • 계층형 데이터베이스는 트리(Tree)형태의 자료구조에 데이터를 저장하고 관리하며,
    네트워크는 오너(Owner)와 멤버(Member)형태로 데이터를 저장

  • 계층형 데이터베이스는 1대 N 관계를 표현

  • 네트워크 데이터베이스는 1대 N과 함께 M대N 표현도 가능

  • 관계형 데이터베이스는 릴레이션에 데이터를 저장하고 관리

  • 관계형 데이터베이스는 릴레이션을 사용해서 집합 연산과 관계 연산을 할 수 있음

  • 데이터베이스 관리 시스템(Database Management System)은
    계층형 데이터베이스,
    네트워크 데이터베이스,
    관계형 데이터베이스 등을 관리하기 위한 소프트웨어를 의미하며,
    일명 DBMS라고 함

  • DBMS의 종류에는 Oracle, MS-SQL, MySQL, Sybase 등이 있으며
    모두 관계형 데이터베이스를 지원함

3. 관계형 데이터베이스 집합 연산과 관계 연산

  • 관계형 데이터베이스의 특징은 릴레이션을 사용해서 집합 연산과 관계 연산을 할 수 있음

집합 연산

합집합(Union)

  • 두 개의 릴레이션을 하나로 합하는 것
  • 중복된 행(튜플)은 한 번만 조회

차집합(Difference)

  • 본래 릴레이션에는 존재하고 다른 릴레이션에는 조재하지 않는 것을 조회

교집합(Intersection)

  • 두 개의 릴레이션 간에 공통된 것을 조회

곱집합(Cartesian product)

  • 각 릴레이션에 존재하는 모든 데이터를 조합하여 연산

관계 연산

선택 연산(Selection)

  • 릴레이션에서 조건에 맞는 행(튜플)만을 조회

투영 연산(Projection)

  • 릴레이션에서 조건에 맞는 속성만을 조회

결합 연산(Join)

  • 여러 릴레이션의 공통된 속성을 사용해서 새로운 릴레이션을 만들어 냄

나누기 연산(Divison)

  • 기준 릴레이션에서 나누는 릴레이션이 가지고 있는 속성과 동일한 값을 가지는 행(튜플)을
    추출하고 나누는 릴레이션의 속성을 삭제한 후 중복된 행을 제거하는 연산

2. 테이블(Table)의 구조

  • 관계형 데이터베이스는 릴레이션에 데이터를 저장하고
    릴레이션을 사용해서 집합 연산 및 관계 연산을 지원하여 다양한 형태로 데이터를 조회할수 있음
  • 릴레이션은 최종적으로 데이터베이스 관리 시스템에서 테이블(Table)로 만들어짐

  • 기본키(Primary key)는 하나의 테이블에서 유일성(Unique)과 최소성, Not Null을 만족하면서
    해당 테이블을 대표하는 것 학생 테이블에서 학번이 기본키가 된다.
  • 테이블은 행과 칼럼으로 구성된다. 그중에서 행(ROW)은 하나의 테이블에 저장되는 값으로
    튜플(Tuple)이라고도 한다.
  • 칼럼(Column)은 어떤 데이터를 저장하기 위한 필드(Field)로 속성(Attribute)이라고도 한다.
  • 외래키(Foreign key)는 다른 테이블의 기본키를 참조(조인)하는 칼럼이다.
  • 외래키는 관계 연산중에 결합 연산(조인: Join)을 하기 위해서 사용한다.
profile
learn !

0개의 댓글