4 minute read

관계형 데이터베이스란?

  • 데이터가 하나 이상의 열과 행의 테이블(또는 ‘관계’)에 저장되어 있다.
  • 테이블, 행, 열의 정보를 구조화하는 방식이다.
  • 관계는 이러한 테이블 간의 상호작용을 기반으로 설정되는 여러 테이블 간의 논리적 연결을 의미한다.
    • 이를 통해 여러 데이터 포인트 간의 관계를 쉽게 이해하고 정보를 얻을 수 있다.
  • Oracle, MySQL, MSSQL 등이 있다.

데이터베이스를 사용하는 이유

기존 파일 I/O에서의 문제점

  1. 종속성 문제 (data dependency)
    • 종속성 : 응용 프로그램 - 데이터 간 상호 의존 관계
    • 논리적, 물리적 데이터 독립성이 보장되지 않는다.
  2. 중복성 문제 (data redundancy)
    • 파일 시스템에서는, 서로 다른 응용 프로그램에서 같은 데이터를 필요로 하더라도 구조가 다르다면 별도 파일을 만들어야 하기 때문에 내용이 같고 구조가 다른 데이터가 존재하게 된다.
  3. 데이터 무결성 문제
    • 프로그램 외부에서 데이터의 형식 및 내용에 쉽게 접근이 가능해 데이터 무결성을 유지하기 어렵다.
  • 데이터베이스는 구조화된 정보 혹은 데이터의 조직화된 모음으로 컴퓨터 시스템에 저장되며, DBMS에 의해 저장된다.
  • 파일 입출력 시스템의 단점을 개선하기 위해 고안되었다.

데이터베이스의 특징

  • 데이터의 중복 최소화: 중복된 데이터는 저장 공간을 낭비할 뿐만 아니라, 데이터 일관성을 유지하는데 어려움을 줄 수 있다.
  • 데이터의 일관성 유지: 여러 사용자가 동시에 데이터에 접근하는 경우, 데이터의 일관성을 유지하는 것이 중요하다. 데이터베이스는 이를 보장할 수 있는 기능을 제공한다.
  • 데이터의 보안성: 데이터베이스는 보안 기능을 제공하여 불법적인 접근으로부터 데이터를 보호할 수 있다.
  • 데이터의 백업과 회복: 데이터베이스는 데이터를 백업하고, 데이터가 손상되었을 때 회복하는 기능을 제공한다.
  • 데이터의 공유: 여러 사용자가 동시에 데이터에 접근할 수 있도록 데이터베이스는 데이터 공유 기능을 제공한다.
  • 데이터의 검색과 갱신: 데이터베이스는 효율적인 검색 기능을 제공하며, 데이터를 갱신하는 기능을 제공하여 데이터의 신뢰성을 높인다.

데이터 무결성

  • 데이터를 조작하는 연산을 수행한 뒤에도, DB에 저장되는 데이터에는 DB의 제약 조건을 위반하는 데이터가 존재하지 않는다. (데이터의 정확성, 일관성, 유효성이 유지된다.)
  1.  개체 무결성(Entity integrity)
    • (= 기본 키 제약)
    • 테이블은 기본키를 지정하고, 그에 따른 무결성 원칙을 지켜야 하는 조건
    • 기본 키(Primary Key)에는 Null 값이 올 수 없으며 테이블 내에 오직 하나의 값만 존재해야 한다.
    • 하나의 테이블 내에 여러 개의 기본 키를 가진 레코드는 존재할 수 없음 - 기본 키 : 테이블에서 특정 레코드를 구별하기 위해 후보 키 중에서 선택된 고유한 식별자 키
  2. 참조 무결성(Referential integrity)
    • = 외래 키 제약
    • 테이블 간의 참조 관계를 선언하는 제약조건
    • 외래 키(Foreign Key)의 값은 NULL이거나 참조 릴레이션의 기본키 값과 동일해야 한다.
    • 외래 키 속성 값은 참조할 수 없는 값을 지닐 수 없다.
    • 상위 테이블의 인스턴스에 반드시 존재하거나 Null이어야 한다. - 외래 키: 한 테이블의 키 중에서 다른 테이블의 레코드를 유일하게 식별할 수 있는 키
  3. 도메인 무결성(Domain integrity)
    • 테이블에 존재하는 필드의 무결성을 보장
    • 필드의 타입, NULL 값 허용 등에 대한 사항을 정의하고 올바른 데이터가 입력되었는지 확인하는 조건이다.
    • 예를 들어, 주민등록번호 필드에 문자가 입력되는 경우엔 도메인의 무결성이 깨졌다고 볼 수 있다.
  4. Null 무결성(Null integrity)
    • 특정 속성값에 NULL 이 올 수 없다는 조건이 주어진 경우, 그 속성값은 NULL 값이 올 수 없다.
  5. 고유 무결성 (Unique integrity)
    • 테이블의 특정 속성에 대해, 각 레코드들이 갖는 값들이 서로 달라야 한다.
  6. 키 무결성 (Key integrity)
    • 하나의 테이블에는 적어도 하나의 키가 존재해야 한다.
  7. 관계 무결성 (Relationship integrity)
    • 테이블의 어느 한 레코드의 삽입 가능 여부 또는 한 테이블과 다른 테이블의 레코드들 사이의 관계에 대한 적절성 여부를 지정한 조건이다.

논리적 / 물리적 데이터 독립성

  • 논리적 데이터 독립성 : 데이터베이스의 논리적 구조가 변경되더라도 기존 응용 프로그램에 영향을 미치지 않는다.
  • 물리적 데이터 독립성: 새로운 물리적 저장 장치의 개발 혹은 접근 방법의 개발로 DB의 물리적 구조가 변경되는 경우가 있다. 이러한 물리적 구조가 변경되어도 DB를 사용하는 응용 프로그램에 아무런 변경을 요구하지 않는다. 이는 논리적 구조와 물리적 구조의 Mapping을 통해 지원된다.

관계형 데이터베이스의 장단점

  • 원자성 : 관계형 데이터베이스는 전체 트랜잭션이 하나의 단위로 기록되며 실패시 전체를 롤백한다.

장점

  • 데이터의 성능이 일반적으로 좋아 정렬, 탐색, 분류가 빠르다.
  • 신뢰성이 높아 데이터의 무결성을 보장한다.
  • 정규화에 따른 갱신 비용을 최소화할 수 있다.
  • 보안 설정이 가능하므로 허가받지 않은 사용자가 데이터에 액세스하는 것을 막을 수 있다.
  • 같은 오픈 소스를 공유하는 경우가 많으므로 다른 개발 환경에서도 쉽게 적용이 가능하다.

단점

  • 이미 작성된 스키마를 수정하기 어렵다.
  • JOIN 문이 많은 복잡한 쿼리가 만들어질 수 있다.
    • 이에 따른 성능 문제가 발생할 수 있다.
  • 수평적 확장이 어렵고, 대체로 수직적 확장만 가능하므로 데이터 처리량 성장에 한계가 있다.
  • 무결성 제약조건을 반복해 구현해야 하며, 이러한 조건들 간 충돌이 발생할 수 있다.
  • 가변성이 있는 데이터를 다루기 부적합하다.

DML, DDL, DCL

Data Definition Language

  • 데이터를 정의하는 명령어
  • CREATE, ALTER, DROP, RENAME
  • DB 관리자 혹은 설계자가 사용한다.
  • 즉시 반영

Data Manipulation Language

  • 데이터를 조작하는 명령어
  • SELECT, INSERT, UPDATE, DELETE
  • DB 사용자가 응용 프로그램이나 질의어를 통해 사용한다.
  • 저장된 데이터를 실질적으로 처리하는데 사용하는 언어
  • commit 해야 반영됨

Data Control Language

  • 데이터 제어어
  • 데이터의 보안, 무결성, 데이터 회복, 병행 수행 제어 등을 정의하는데 사용한다.
  • COMMIT, ROLLBACK, GRANT, REVOKE

Key

  • 하나의 레코드를 구별 및 지칭할 수 있도록 하는 기준으로, 유일성을 만족한다.
  • 하나의 컬럼 뿐 아니라 여러개의 컬럼을 묶어 키로 사용할 수 있다.
  1. 슈퍼키
    • 한 릴레이션 내에 있는 속성들의 집합으로 구성된 키
    • 모든 튜플에 대해 유일성은 만족하나 최소성은 만족시키지 않음
  2. 후보키
    • 릴레이션 구성 속성 중 튜플을 유일하게 식별할 수 있는 속성들의 부분집합
    • 모든 릴레이션은 반드시 하나 이상의 후보키를 가진다.
    • 릴레이션 내 모든 튜플에 대해 유일성과 최소성을 만족시켜야 한다.
  3. 기본키
    • 후보 키 중 선택한 메인 키
    • NULL 값을 가질 수 없다.
    • 동일한 값이 중복되어 저장될 수 없다.
    • 한 릴레이션에서 특정 튜플을 유일하게 구별할 수 있는 속성
  4. 대체키
    • 후보키가 둘 이상일 때 기본키를 제외한 나머지 후보키
  5. 외래키
    • 관계를 맺고 있는 두 릴레이션 R1, R2에서 릴레이션 r1이 참조하는 r2의 기본키와 같은 r1 릴레이션의 속성
    • 릴레이션 간에 참조 관계를 표현하는 도구

출처

Leave a comment