지직전기

[데이터베이스] 8주차 교육 정리 본문

STUDY/DataBase

[데이터베이스] 8주차 교육 정리

MSH103 2024. 1. 24. 20:40

목차

  • 트리거와 프로시저
    • 트리거란
    • 트리거의 특징
    • 트리거 사용 예시
    • 프로시저란
    • 프로시저의 특징
    • 프로시저 사용 예시
    • 두 기술의 공통점과 차이점
  • 데이터모델링
    • 데이터모델링 개념
    • 데이터베이스 생명주기
    • 데이터모델링의 과정
      • 요구사항 분석
      • 개념적 모델링
      • 논리적 모델링
      • 물리적 모델링
    • E-R 모델
      • ER 다이어그램
      • 개체
      • 관계

트리거와 프로시저

트리거(Trigger)란

  • 트리거는 데이터베이스에서 특정한 이벤트가 발생할 때 자동으로 실행되는 일련의 작업이나 프로그램입니다.
  • 이벤트는 INSERT, UPDATE, DELETE와 같은 DML 문장이 실행될 때 발생할 수 있습니다.

 

트리거의 특징

  • 데이터베이스의 특정 테이블에 연결됩니다.
  • 트리거는 특정 조건을 만족하는지 여부에 따라 실행됩니다.
  • 이벤트가 발생할 때마다 자동으로 실행되므로 데이터의 일관성 유지나 보안 등을 강화할 수 있습니다.
  • 트리거는 데이터베이스의 대한 강력한 제어도구이며, 복잡한 비즈니스 룰을 적용할 수 있습니다.

 

사용 예시

1) 주문 테이블에 새로운 주문이 추가될 때 해당 제품의 재고를 자동으로 감소시키는 트리거

CREATE TRIGGER update_inventory
AFTER INSERT ON orders
FOR EACH ROW
BEGIN
    UPDATE products
    SET stock = stock - NEW.quantity
    WHERE product_id = NEW.product_id;
END;

 

프로시저(Procedure)란

  • 프로시저는 데이터베이스 내에서 저장되어 있는 일련의 SQL문장들을 수행하는 절차적인 프로그램 입니다.
  • 프로시저는 일련의 작업을 묶어서 싱행하며, 필요할 때마다 호출하여 사용할 수 있습니다.

 

프로시저의 특징

  • 데이터베이스에 저장되어 있으므로 어떤 클라이언트에서든 호출하여 실행할 수 있습니다.
  • 프로시저는 재사용 가능하며, 코드의 중복을 피할 수 있습니다.
  • 프로시저는 일관성 있는 데이터 처리를 보장하고, 데이터베이스의 성능을 향상 시킬 수 있습니다.
  • 프로시저는 일괄 처리 작업이나 복잡한 비즈니스 로직을 구현하는데 유용합니다.

 

사용 예시

1) 고객의 정보를 업데이트하고 해당 고객에게 이메일을 보내는 프로시저

CREATE PROCEDURE update_customer(IN customer_id INT, IN new_email VARCHAR(255))
BEGIN
    UPDATE customers
    SET email = new_email
    WHERE id = customer_id;
    
    -- 이메일 보내는 코드 (가정)
    CALL send_email(customer_id, '이메일이 변경되었습니다.');
END;

 

트리거와 프로시저의 공통점과 차이점

공통점

모두 데이터베이스 내부에 저장되어 있어서 어떤 클라이언트에서도 접근하여 실행 할 수 있습니다.

데이터 베이스에서 저장된 작업을 실행하며, 이는 일관된 실행과 중복코드의 방지에 도움이 됩니다.
(데이터 일관성과 처리 효율성을 향상)

 

차이점

트리거는 이벤트 발생 시 자동으로 실행되지만, 프로시저는 명시적으로 호출되어 실행됩니다.

트리거는 특정 테이블에 바인딩되어 테이블의 변경에 따라 작동하지만, 프로시저는 특정 작업을 수행하기 위해 사용되고 호출됩니다.

프로시저는 조건에 따라 다른 작업을 수행할 수 있는 반면, 트리거는 일반적으로 특정 이벤트 발생 시 정해진 작업을 수행하는데 사용됩니다.

 

데이터 모델링의 개념

데이터 모델링이란 주어진 개념으로부터 논리적인 데이터 모델을 구성하는 작업을 말한다. 논리적인 데이터 모델을 구성하기 위해 데이터베이스의 골격을 이해(집을 지을 때 지반 설계에 비유)하고 그 이해를 바탕으로 모델의 기능과 성능적인 측면에서 효율적인 작성이 필요하다. 이는 물리적인 데이터베이스 모델로 환원하여 고객의 요구에 따라 특정 정보 시스템의 데이터베이스에 반영하는 작업을 포함한다.

데이터베이스 생명주기

1. 요구사항 수집 및 분석

  • 사용자들의 요구사항을 듣고 분석하여 데이터베이스 구축의 범위를 정함

2. 설계

  • 분석된 요구사항을 기초로 주요 개념과 업무 프로세스 등을 식별하고(개념적 설계), 사용하는 DBMS의 종류에 맞게 변환(논리적 설계)한 후, 데이터베이스 스키마를 도출(물리적 설계)함

3. 구현

  • 설계 단계에서 생성한 스키마를 실제 DBMS에 적용하여 테이블 및 관련 객체(뷰, 인덱스 등)를 만듦

4. 운영

  • 구현된 데이터베이스를 기반으로 소프트웨어를 구축하여 서비스를 제공함

5. 감시 및 개선

  • 데이터베이스 운영에 따른 시스템의 문제를 관찰하고 데이터베이스 자체의 문제점을 파악하여 개선함

 

데이터 모델링 과정(요-개-논-물-구)

요구사항 수집 방법

  • 실제 문서를 수집하고 분석함
  • 담당자와의 인터뷰나 설문조사를 통해 요구사항을 직접 수렴함
  • 비슷한 업무를 처리하는 기존의 데이터베이스를 분석함
  • 각 업무와 연관된 모든 부분을 살펴봄

 

개념적 모델링

요구사항을 수집하고 분석한 결과를 토대로 업무의 핵심적인 개념을 구분하고 전체적인 뼈대를 만드는 과정

개체(entity)를 추출하고 각 개체들 간의 관계를 정의하여 ER 다이어그램(ERD)을 만드는 과정까지를 말함

논리적 모델링

개념적 모델링에서 만든 ER 다이어그램을 사용하려는 DBMS에 맞게 사상(매핑, mapping)하여 실제 데이터베이스로 구혀나기 위한 모델을 만드는 과정

논리적 모델링 과정

  1. 개념적 모델링에서 추출하지 않았던 상세 속성들을 모두 추출
  2. 정규화 수행
  3. 데이터 표준화 수행

 

물리적 모델링

작성된 논리적 모델을 실제 컴퓨터의 저장 장치에 저장하기 위한 물리적 구조를 정의하고 구현하는 과정

DBMS 특성에 맞게 저장 구조를 정의해야 데이터베이스가 최적의 성능을 낼 수 있음

물리적 모델링 시 트랜잭선, 저장 공간 설계 측면에서 고려할 사항

  • 응답시간을 최소화해야 한다.
  • 얼마나 많은 트랜잭션을 동시에 발생시킬 수 있는지 검토해야 한다.
  • 데이터가 저장될 공간을 효율적으로 배치해야 한다.

ER 모델

세상의 사물을 개체(entity)와 개체 간의 관계(relationship)로 표현함

 

ER 다이어그램

개체(entity)

사람, 사물, 장소, 개념, 사건과 같이 유무형의 정보를 가지고 있는 독립적인 실체

데이터베이스에서 주로 다루는 개체는 낱개로 구성된 것, 낱개가 각각 데이터 값을 가지는 것, 데이터 값이 변하는 것 등

비슷한 속성의 개체 타입을 구성하며, 개체 집합으로 묶임

ER다이어그램상에서 개체 타입은 직사각형으로 나타냄

개체 타입의 유형

강한 개체 : 다른 개체의 도움 없이 독자적으로 존재할 수 있는 개체

약한 개체 : 독자적으로 존재할 수 없고 반드시 상위 개체 타입을 가짐

속성(attribute)

속성 : 개체가 가진 성질

속성은 ER다이어그램 상에서 타원으로 표현. 개체 타입을 나타내는 직사각형과 실선으로 연결됨

속성의 이름은 타원의 중앙에 표기함

속성이 개체를 유일하게 식별할 수 있는 키일 경우 속성 이름에 밑줄을 그음

속성의 유형

관계와 관계 타입(relationship and relationship type)

관계 : 개체 사이의 연관성을 나타내는 개념

관계 타입 : 개체 타입과 개체 타입 간의 연결 가능한 관계를 정의한 것이며, 관계 집합은 관계로 연결된 집합을 의미함

관계 타입의 유형

차수에 따른 유형

1. 1진 관계 : 한 개의 개체가 자기 자신과 관계를 맺는 경우

2. 2진 관계 : 두 개의 개체가 관계를 맺는 경우

3. 3진 관계 : 세 개의 개체가 관계를 맺는 경우

관계 대응수에 따른 유형

관계 대응수(cardinality) : 두 개체 타입의 관계에 실제로 참여하는 개별 개체수

관계 대응수의 최솟값과 최댓값

관계 대응수 1:1, 1:N, M:N에서 1,N,M은 각 개채가 관계에 참여하는 최댓값을 의미함

관계에 참여하는 개체의 최솟값을 표시하지 않는다는 단점을 보완하기 위해 다이어그램에서는 대응수 외에 최솟값과 최댓값을 관계 실선 위에 (최솟값, 최댓값)으로 표기함

ISA 관계

상위 개체 타입의 특성에 따라 개채 타입이 결정되는 형태

참여 제약 조건

개체 집합 내 모든 개체가 관계에 참여하는지 유무에 따라 전체 참여와 부분 참여로 구분 가능

전체 참여는 개체 집합의 모든 개체가 , 부분 참여는 일부만 참여함

전체 참여를 (최솟값, 최대값)으로 표현할 경우 최솟값이 1이상으로 모두 참여한다는 뜻이고,
부분 참여는 최솟값이 0 이상임

역할

개체 타입 간의 관계를 ㅍ현할 때 각 개체들은 고유한 역할(role) 담당

 

약한 개체 타입과 식별자 예시

1. 직원 개체는 직원번호, 이름, 직책을 가진다. 직원번호로 직원을 구분한다.

2. 가족 개체는 이름, 관계를 가진다. 단, 직원번호로 가족을 구분한다.

 

IE 표기법

ER 다이어그램을 더 축약하여 쉽게 표현하면 Erwin 등 소프트웨어에서 사용함

IE 표기법에서 개체 타입과 속성은 직사각형으로 표현하고 관계는 실선 혹은 점선으로 표기함