Yeonnnnny

[2과목] 2-1. 관계형 데이터 베이스 개요 본문

SQLD

[2과목] 2-1. 관계형 데이터 베이스 개요

yeonny_do 2024. 3. 5. 08:17

■ 데이터 베이스(Database)와 DBMS(Database Management System)

  • 데이터베이스 : 데이터의 집합, 꼭 형식을 갖추기 않아도 엑셀파일을 모아 둔다면 그것 또한 데이터 베이스임
  • DBMS : 데이터를 효과적으로 관리하기 위한 시스템
    • 개인이 파일을 여러 개 묶어서 폴더에 보관하면 데이터를 찾고 관리하는데 많은 비용이 발생
    • 이를 보다 시스템적으로 작동하게 만든 시스템을 DBMS라고 함 (ORACLE, MySQL 등)

 

 

 관계형 데이터 베이스 구성 요소

  • 계정 : 데이터 접근 제한을 위한 여러 업무별/ 시스템별 계정이 존재
  • 테이블 : DBMS의 DB 안에서 데이터가 저장되는 형식
  • 스키마 : 테이블이 어떠한 구성으로 되어있는지, 어떠한 정보를 가지고 있는지에 대한 기본적인 구조 정의

 

 

 테이블

  1. 정의 
    • 엑셀에서의 워크시트처럼 행(로우)과 열(컬럼)을 갖는 2차원 구조로 구성. 데이터를 입력하여 저장하는 최소 단위
    • 컬럼은 속성(Attribute)이라고도 부름(모델링 단계마다 부르는 용어가 다름)
  2. 특징
    • 하나의 테이블은 반드시 하나의 유저(계정) 소유여야 함
    • 테이블간 관계는 일대일(1:1), 일대다(1:N), 다대다(M:N)의 관계를 가질 수 있음
    • 테이블명은 중복될 수 없지만, 소유자가 다른 경우 같은 이름으로 생성 가능
      • ex) SCOTT 소유의 EMP 테이블 존재, HR 소유의 EMP 테이블 생성 가능(같은 계정 내 동일한 객체명 생성 불가)
    • 테이블은 행 단위로 데이터가 입력, 삭제되며 수정은 값의 단위로 가능
      • ex) 사원테이블에 새로운 사원 정보를 사원번호, 사원이름 등의 테이블 내 모든 컬럼의 값을 동시에 전달하여 입력, 삭제 시에는 해당 사원의 모든 정보가 삭제됨(수정 시에는 특정 직원의 급여만 수정 가능)

※ 객체 : DBMS에서의 객체는 생성하고 변경할 수 있는 하나의 관리 대상

 

 

 

 SQL(Structured Query Language)

  • 관계형 데이터베이스에서 데이터 조회 및 조작, DBMS 시스템 관리 기능을 명령하는 언어
  • 데이터 정의어(DDL), 데이터 조작어(DML), 데이터 저어 언어(DCL), 트랜잭션 제어어(TCL) 등으로 구분
  • SQL 문법은 대, 소문자를 구분하지 않음

 

명령어의 종류 명령어 설명
데이터 조작어
(Data Manipulation Language)
select  데이터 베이스에 들어있는 데이터를 조회하거나 검색하기 위한 명령어. retrieve 라고도 함.
insert
update
delete
데이터 베이스의 테이블에 들어있는 데이터에 변형을 가하는 종류의 명령어들. 예를 들어 데이터를 테이블에 새로운 행으로 집어넣거나, 원하지 않는 데이터를 삭제하거나 수정하는 것들의 명령어를 DML이라고 함.
데이터 정의어
(Data Definition Language)
create
alter
drop
rename
테이블과 같은 데이터 구조를 정의하는데 사용되는 명령어들로 그러한 구조를 생성하거나 변경하거나 삭제하거나 이름을 바꾸는 데이터 구조와 관련된 명령어들을 DDL이라고 부름
데이터 제어어
(Data Control Language)
grant
revoke
데이터베이스에 접근하고 객체들을 사용하도록 권한을 주고 회수하는 명령어를 DCL이라고 함
트랜젝션 제어어
(Transaction Control Language)
commit
rollback
논리적인 작업의 단위를 묶어서 DML에 의해 조작된 결과를 작업단위(트랜잭션)별로 제어하는 명령어를 말함

 

 

※ Delete(/Modify) action : Cascade, Set Null, Set Default, Restrict

  • Cascade : Master 삭제 시 Child 같이 삭제
  • Set Null : Master 삭제 시 Child 해당 필드 NULL
  • Set Default : Master 삭제 시 Child 해당 필드 Default 값으로 설정
  • Restrict : Child 테이블에 PK 값이 없는 경우만 Master 삭제 허용
  • No Action : 참조무결성을 위반하는 삭제/수정 액션을 취하지 않음

※ Insert action : Automatic, Set Null, Set Default, Dependent

  • Automatic : Master 테이블에 PK가 없는 경우 Master PK를 생성 후 Child 입력
  • Set Null : Master 테이블에 PK가 없는 경우 Child 외부키를 Null 값으로 처리
  • Set Default : Master 테이블에 PK가 없는 경우 Child 외부키를 지정된 기본값으로 입력
  • Dependent : Master 테이블에 PK가 존재할 때만 Child 입력 허용
  • No Action : 참조무결성을 위반하는 입력 액션을 취하지 않음

 

※ delete from 테이블명  vs.  truncate table 테이블명  vs. drop table 테이블명

  • delete from 테이블명 : 모든 데이터를 삭제, 디스크 사용량을 초기화하지는 않음, 로그 남김
  • truncate table 테이블명 : 모든 데이터가 삭제, 디스크 사용량 초기화. 로그 남기지 않음
  • dropp table 테이블명 : 모든 데이터 삭제, 디스크 사용량 초기화됨, 로그 남기지 않음, 테이블의 스키마 정의도 삭제

 

 

 관계형 데이터 베이스의 특징

  • 데이터의 분류, 정렬, 탐색 속도가 빠름
  • 신뢰성이 높고, 데이터의 무결성 보장
  • 기존의 작성된 스키마를 수정하기 어려움
  • 데이터베이스의 부하를 분석하는 것이 어려움

※ 데이터베이스의 부하? 데이터베이스 로드(DB 로드)는 데이터베이스의 세션 활동 수준을 측정함. 성능 개선 도우미의 핵심 지표는 DBLoad이며, 1초 간격으로 수집됨

 

 

 

트랜잭션의 4가지 특성

원자성
(atomicity)
트랜잭션에서 정의된 연산들은 모두 성공적으로 실행되던지 아니면 전혀 실행되지 않은 상태로 남아 있어야 함 (All or Nothing)
일관성
(consistency)
트랜잭션이 실행되기 전의 데이터베이스 내용이 잘못 되어 있지 않다면 트랜잭션이 실행된 이후에도 데이터베이스의 내용에 잘못이 있으면 안됨
고립성
(isolation)
트랜잭션이 실행되는 도중에 다른 트랜잭션의 영향을 받아 잘못된 결과를 만들어서는 안됨
지속성
(durability)
트랜잭션이 성공적으로 수행되면 그 트랜잭션이 갱신한 데이터베이스의 내용은 영구적으로 저장됨

 

 

 

 데이터의 무결성(integrity)

  • 데이터의 정확성일관성을 유지하고, 데이터에 결손과 부정합이 없음을 보증하는 것
  • 데이터베이스에 저장된 값과 그것이 표현하는 현실의 비즈니스 모델의 값이 일치하는 정확성을 의미함
  • 데이터 무결성을 유지하는 것이 데이터베이스 관리시스템에 중요한 기능임

 

 데이터 무결성 종류

  1. 개체 무결성 
    • 테이블의 기본키를 구성하는 컬럼(속성)은 NULL값이나 중복값을 가질 수 없음
  2. 참조 무결성 
    • 외래키값은 NULL이거나 참조 테이블의 기본키 값과 동일해야 함
    • 외래키는 참조테이블의 기본키에 정의된 데이터만 허용되는 구조임
  3. 도메인 무결성
    • 주어진 속성값이 정의된 도메인에 속한 값이어야 함.
  4. NULL 무결성
    • 특정 속성에 대해 NULL을 허용하지 않는 특징
  5. 고유 무결성
    • 특정 속성에 대해 값이 중복되지 않는 특징
  6. 키 무결성 
    • 하나의 릴레이션에는 적어도 하나의 키가 존재해야 함
    • 테이블이 서로 관계를 가질 경우 반드시 하나 이상의 조인키를 가짐

 

※ 용어 정리

  • 도메인 : 각 컬럼(속성)이 갖는 범위
  • 릴레이션 : 테이블간 관계를 말함
  • 튜플 : 하나의 행을 말함
  • 키 : 식별자

 

 

 ERD(Entity Relationship Diagram)

  • ERD란 테이블 간 서로의 상관관계를 그림으로 표현한 것
  • ERD의 구성요소에는 엔터티(Entity), 관계(Relationship), 속성(Attribute)이 있음
    • → 현실 세계의 데이터는 이 3가지의 구성요소로 모두 표현 가능

 

'SQLD' 카테고리의 다른 글

[2과목] 2-3. 함수  (0) 2024.03.05
[2과목] 2-2. SELECT문  (1) 2024.03.05
[1과목] 1-10. 본질식별자  (1) 2024.03.04
[1과목] 1-9. null 속성의 이해  (0) 2024.03.04
[1과목] 1-8. 모델이 표현하는 트랜잭션의 이해  (0) 2024.03.04