본문 바로가기

✨ DBMS/etc15

[DB] 트리거(Trigger) 트리거(Trigger)란?**트리거(Trigger)**는 데이터베이스에서 특정 이벤트(예: INSERT, UPDATE, DELETE)가 발생할 때 자동으로 실행되는 저장 프로시저입니다. 트리거는 데이터 무결성, 비즈니스 규칙 적용, 로깅 및 감사 용도로 주로 사용됩니다.트리거의 특징:자동 실행: 사용자가 명시적으로 호출하지 않아도 특정 이벤트가 발생하면 자동으로 실행됩니다.데이터 무결성 보장: 데이터 입력, 수정, 삭제 시 조건을 검증하거나 자동으로 관련 데이터를 처리함으로써 데이터 무결성을 유지할 수 있습니다.테이블에 바인딩됨: 트리거는 특정 테이블에 바인딩되며, 해당 테이블에서 지정된 이벤트가 발생할 때만 실행됩니다.트랜잭션 내에서 실행: 트리거는 트랜잭션의 일부로 실행되므로 트랜잭션이 롤백되면 트리.. 2024. 10. 9.
[DB] 인덱스 B-TREE , BITMAP 개념과 차이 인덱스는 보통 사용자가 인덱스를 지정하라고 지정한 컬럼 ( KEY)와 위치주소(ROWID) 쌍으로 저장하고 관리된다. B-TREE 인덱스 실시간으로 데이터 입력과 수정이 일어나는 환경에서 많이 사용 OLTP ( Online Transaction Processing ) - 실시간 트랜잭션 처리 BITMAP 인덱스 대량의 데이터를 한꺼번에 입력하고 주로 분석이나 통계 정보를 출력할 때 많이 사용 OLAP ( Online Analytical Processing ) - 온라인 분석 처리 데이터 값의 종류가 적고, 동일한 데이터가 많을 경우 사용한다. 2023. 12. 27.
[DB] 프로시저(Procedure)와 트리거(Trigger) 차이 프로시저 절차형 SQL을 활용해 특정 기능을 수행하는 일종의 트랜잭션 언어이다. 호출을 통해 실행되어 미리 저장해 놓은 SQL 작업을 수행한다. 여러 프로그램에서 호출하여 사용 가능하고, 시스템의 일일 마감 작업, 일괄 작업 등에 주로 사용된다. 트리거 DB 시스템에서 삽입, 갱신, 삭제 등 이벤트가 발생할 때마다 자동 수행되는 절차형 SQL이다. 무결성 유지, 로그 메시지 출력 등 목적으로 사용한다. 구문에 DCL을 사용할 수 없고, DCL이 포함된 프로시저나 함수 호출도 불가능하다. 즉, Commit과 Rollback이 불가능한 것이다. 프로시저 트리거 COMMIT, ROLLBACK 실행 가능 COMMIT, ROLLBACK 실행 불가능 실행 명령어로 실행 생성 후 자동 실행 CREATE PROCEDU.. 2023. 12. 26.
[DB] UNDO, REDO의 차이 UNDO - 원 상태로 되돌리다. 라는 뜻을 가진다. REDO - 다시 하다. 라는 뜻을 가진다. 공통점 REDO는 기본적으로 복구의 역할을 가진다. 오라클 서버에 무슨 작업을 하든지 모두 REDO에 기록된다. UNDO는 작업 롤백과 읽기 일관성, 복구를 한다. 즉, REDO와 UNDO의 공통점으로는 복구를 한다는 것이다. 차이점 REDO - 복구할 때 사용자가 했던 작업을 그대로 다시한다. UNDO - 사용자가 했던 작업을 반대로 진행한다. 즉 사용자의 작업을 원상태로 돌린다. 2023. 12. 25.
[DB] MyBatis와 JPA의 차이와 장점, 단점 MyBatis와 JPA의 주요한 차이점은 DB의 상호작용 방식이다. MyBatis - 개발자가 SQL 쿼리를 직접 작성하며 데이터 매핑을 위해 XML 또는 어노테이션을 사용한다. 장점 접근이 쉽고 코드가 간결하다 ( 배우기가 쉬움 ) SQL문과 프로그래밍 코드가 분리되어 있어 SQL 문에 변경이 있을 시 자바 코드를 수정하거나 컴파일 안해도 됨. 다양한 프로그래밍 언어로 구현이 가능 ( 이식성 높음 ) 직접 작성한 SQL에 의존하기 때문에, 성능 최적화가 상대적으로 쉽다. 단점 스키마 변경시 SQL 쿼리를 직접 수정해주어야 한다. 반복된 쿼리가 발생하여 반복 작업이 있다. 쿼리를 직접 작성하기 때문에 데이터베이스에 종속된 쿼리문이 발생할 수 있다. JPA - 객체와 관계형 데이터베이스 간의 매핑을 제공하.. 2023. 12. 24.
[DB] ORM 이란? ORM을 이해하기전에 먼저 영속성에 대해 알아야한다. 영속성이란? Persistence로, 데이터를 생성한 프로그램이 종료되더라도 사라지지 않는 데이터의 특성이다. 영속성을 갖지 않는 데이터는 메모리상에서만 존재하기 때문에, 프로그램을 종료하면 모두 잃어버리게 된다. 따라서, 이 메모리상의 데이터를 파일시스템, 관계형 데이터베이스 혹은 객체 데이터베이스 등을 활용해 영구적으로 저장하여 영속성을 부여할 수 있다. ORM ( Object-Relational Mapping )이란? 객체와 관계형 데이터베이스의 데이터를 자동으로 매핑해주는 것 장점 첫번 째, 객체 지향적인 코드로 인해 더 직관적이고, 비즈니스 로직에 더 집중할 수 있게 도와준다. ORM을 이용하면 SQL 쿼리가 아닌 직관적인 코드로 데이터를 조.. 2023. 12. 24.
[DB] RDBMS와 NoSQL의 차이 https://bright-landscape.tistory.com/48 [Oracle] DBMS와 SQLD에 대해서 알아보자. DBMS (Database Management System) DBMS란? - 다수의 사용자들이 데이터베이스 내의 데이터를 접근할 수 있도록 해주는 소프트웨어 도구의 집합. 내가 공부해 볼 Oracle에 대해 알아보았다. 특징 - 가장 오래 bright-landscape.tistory.com DBMS - 다수의 사용자들이 데이터베이스 내의 데이터를 접근할 수 있도록 해주는 소프트웨어 도구의 집합 SQL - 관계형 데이터베이스 관리시스템의 데이터를 관리하기 위해 설계된 프로그래밍 언어 이전에 DBMS와 SQL에 대해서 포스팅을 한적이 있었다. 그렇다면, NoSQL과의 차이는 어떻게 .. 2023. 12. 24.
[DB] 정규화(Normalization) 정규화 (Normalization) 논리적 설계 단계에서 발생할 수 있는 종속으로 인한 이상 현상의 문제점을 해결하기 위해 속성들 간의 종속 관계를 분석해 여러 개의 릴레이션으로 분해하는 과정 1 정규형 - 한 릴레이션을 구성하는 모든 도메인이 원자 값 만으로 구성되도록 하는 정규형 박순신과 김길동은 한 명의 회원이 여러 과목을 수강하고 있다. 그런데 박순신 회원과 김길동 회원에 대해 중복되는 속성값, 회원번호, 성명, 연락처에 해당하는 튜플을 하나로 합쳐냈다. DB에서는 검색,삽입,삭제 등 여러 작업이 튜플 단위로 이루어지기 때문에 박순신, 김길동 회원처럼 튜플을 하나로 합쳐 표현하면 원활하게 수행되지 못한다. 따라서 테이블 각각의 튜플로 구성되도록 회원정보를 나타내는 회원테이블과 수강과목에 대한 정보.. 2023. 8. 3.
[DB] 데이터베이스의 특징, 키(Key), 이상 현상, 함수 종속 데이터베이스란? 어느 한 조직에서 업무 처리를 위해 다수의 응용시스템 혹은 다수의 사용자들이 공용으로 사용하기 위한 통합 저장된 운영 데이터의 집합이다. 통합 데이터 - 하나의 주제에 따라 중복을 최소화한 데이터 집합 저장 데이터 - 사용자나 응용 시스템이 필요 시 언제든지 이용할 수 있도록 저장된 데이터 집합 공용 데이터 - 여러 사용자와 다수의 응용 시스템이 공유할 수 있도록 만든 데이터 집합 운영 데이터 - 중복을 최소화하고 여러 사람이 공유함에 있어 문제가 발생하지 않도록 관리를 필요로하는 데이터 특징 계속적인 변화 동시공유 실시간 접근 내용에 의한 참조 구성요소 개체 (Entity) - 실세계에 존재하는 유형 혹은 무형 정보의 대상이며 서로 구별되는 하나하나의 대상. 속성 (Attribute) .. 2023. 8. 2.
[SQL] 분석함수(윈도함수) OVER( ), PARTITION BY, ORDER BY 분석함수(윈도함수)란? 특정 데이터 집합에 대해 계산을 수행하고 그 결과를 각 행에 출력하는 함수이다. OVER( PARTITION BY ORDER BY ) OVER를 사용하여 테이블 쭉 더하고 개수세서 조회 OVER는 SQL에서 사용되는 윈도우 함수와 함께 사용되는 절이다. OVER절은 윈도우 함수에 적용할 파티션과 정렬 순서를 지정하는데 사용된다. 현재 위 쿼리에서는 COUNT(HEIGHT) OVER( ORDER BY STUDNO) SUM(HEIGHT) OVER(ORDER BY STUDNO) 이 두개를 사용해서 COUNT는 누적으로 1개씩 갯수 증가, SUM은 이전 의 합에 누적해서 쌓아가는 것을 확인할 수 있다. PARTITION BY를 사용하여 분석함수 적용 PARTITION BY는 SQL에서 사.. 2023. 8. 2.
[SQL] 순위 함수 - RANK(), DENSE_RANK(), ROW_NUMBER() RANK() , DENSE_RANK(), ROW_NUMBER() HTML 삽입 미리보기할 수 없는 소스 RANK() OVER( ) 먼저 RANK에 대해 알아보자. RANK는 동일한 데이터는 같은 순위를 매긴다. SAL에 3000이 두개이므로, 공동 3위를 주고, 4위를 건너뛴 5위가 나온다. DENSE_RANK() OVER( ) 두번째로, DENSE_RANK는 RANK와 함께 동일 데이터를 같은 순위에 매긴다. 하지만, RANK에서는 공동 숫자만큼 다음 숫자를 넘겼지만, DENSE_RANK같은 경우, 숫자를 건너뛰지 않고 출력한다. ROW_NUMBER() OVER( ) 마지막으로, ROW_NUMBER는 중복 허용없이 순위가 나온다. 즉, 무조건 순위가 나오는 것이다. 2023. 8. 2.
[SQL/MySQL] 트랜잭션 COMMIT, ROLLBACK, SAVEPOINT 사용법 트랜잭션이란? 여러 개의 SQL 명령문들을 하나의 논리적인 작업 단위로 처리하는 것이다. 여러 명령어 집합이 정상적으로 처리되면 정상 종료하도록 하고, 여러 명령어 중 하나의 명령이라도 잘못되었다면 전체를 취소한다. 하나의 트랜잭션은 All - OR - Nothing 방식으로 처리된다. TCL (Transaction Control Language) 이며, Commit과 Rollback을 포함한다. 트랜잭션을 이름 그대로 번역한다면 "거래"라는 뜻이다. 즉, 데이터베이스에서 트랜잭션은 하나의 거래를 안전하게 처리하도록 보장해주는 뜻이기도 한다. 누군가 물건을 산다고 가정했을때, 물건을 받고 돈을 주기까지 2단계의 과정을 거친다. 이때 누가 물건을 받았는데 돈을 주지 않았다면 먹튀가 발생한다. 따라서 이를 .. 2023. 8. 1.