[데이터베이스] 트랜잭션(Transaction)
·
CS 지식/[데이터베이스]
트랜잭션 데이터베이스의 상태를 변화시키기 위해 수행하는 작업 단위 상태를 변화시킨다는 것 → SQL 질의어를 통해 DB에 접근하는 것 - SELECT - INSERT - DELETE - UPDATE 작업 단위 → 많은 SQL 명령문들을 사람이 정하는 기준에 따라 정하는 것 예시) 사용자 A가 사용자 B에게 만원을 송금한다. * 이때 DB 작업 - 1. 사용자 A의 계좌에서 만원을 차감한다 : UPDATE 문을 사용해 사용자 A의 잔고를 변경 - 2. 사용자 B의 계좌에 만원을 추가한다 : UPDATE 문을 사용해 사용자 B의 잔고를 변경 현재 작업 단위 : 출금 UPDATE문 + 입금 UPDATE문 → 이를 통틀어 하나의 트랜잭션이라고 한다. - 위 두 쿼리문 모두 성공적으로 완료되어야만 "하나의 작업(..
[데이터베이스] 정규화(Normalization)
·
CS 지식/[데이터베이스]
정규화 테이블 간 증복된 데이터를 허용하지 않는 것 중복된 데이터를 만들지 않으면, 무결성을 유지할 수 있고, DB 저장 용량 또한 효율적으로 관리할 수 있음 목적 데이터의 중복을 없애면서 불필요한 데이터를 최소화 시킴 무결성을 지키고, 이상 현상을 방지 테이블 구성을 논리적이고 직관적으로 할 수 있음 데이터베이스 구조 확장 용이 제 1정규화(1NF) 테이블 컬럼이 원자값(하나의 값)을 갖도록 테이블을 분리시키는 것 조건 - 어떤 릴레이션에 속한 모든 도메인이 원자값만으로 되어 있어야함 - 모든 속성에 반복되는 그룹이 나타나지 않음 - 기본키를 사용하여 관련 데이터의 각 집합을 고유하게 식별할 수 있어야 함 현재 테이블은 전화번호를 여러 개 가지고 있어 원자값이 아님 따라서 1NF에 맞추기 위해 아래와 ..
[데이터베이스] 인덱스(Index)
·
CS 지식/[데이터베이스]
DB Index 목적 : RDBMS에서 검색 속도를 높이기 위한 기술 Table의 Column을 색인화 함 (따로 파일로 저장) → 해당 Table의 Record를 Full scan 하지 않음 → 색인화 된 (B+ Tree 구조로) Index 파일 검색으로 검색 속도 향상 과정 : Table을 생성하면, MYD, MYI, FRM 3개의 파일이 생성됨 FRM : 테이블 구조가 저장되어 있는 파일 MYD : 실제 데이터가 있는 파일 MYI : Index 정보가 들어가 있는 파일 → Index를 사용하지 않는 경우, MYI 파일은 비어져 있음 그러나, 인덱싱하는 경우 MYI 파일이 생성됨 이후에 사용자가 Select 쿼리로 Index를 사용하는 Column을 탐색 시, MYI 파일의 내용을 검색함 단점 Ind..
[데이터베이스] 이상(Anomaly)
·
CS 지식/[데이터베이스]
정규화를 해야하는 이유 → 잘못된 테이블 설계로 인해 이상 현상이 나타나기 때문 1. 삽입 이상 (Insertion Anomaly) 기본키가 {Student ID, Course ID} 인 경우 -> Course를 수강하지 않은 학생은 Course ID가 없는 현상이 발생함. 결국 Course ID를 Null로 할 수밖에 없는데, 기본키는 Null이 될 수 없으므로, Table에 추가될 수 없음 굳이 삽입하기 위해서는 '미수강'과 같은 Course ID를 만들어야 함 불필요한 데이터를 추가해야지, 삽입할 수 있는 상황 = Insertion Anomaly 2. 갱신 이상 (Update Anomaly) 만약 어떤 학생의 전공 (Department) 이 "컴퓨터에서 음악"으로 바뀌는 경우 모든 Departmen..
[데이터베이스] SQL과 NOSQL의 차이
·
CS 지식/[데이터베이스]
SQL (관계형 DB) SQL을 사용하면 RDBMS에서 데이터를 저장, 수정, 삭제 및 검색할 수 있음 핵심적인 두 가지 특성 데이터는 정해진 데이터 스키마에 따라 테이블에 저장됨 데이터는 관계를 통해 여러 테이블에 분산됨 데이터는 테이블에 레코드로 저장되는데, 각 테이블마다 명확하게 정의된 구조가 있음 해당 구조는 필드의 이름과 데이터 유형으로 정의됨 따라서 스키마를 준수하지 않은 레코드는 테이블에 추가할 수 없음 즉, 스키마를 수정하지 않는 이상은 정해진 구조에 맞는 레코드만 추가가 가능한 것이 관계형 데이터베이스의 특징 중 하나 또한, 데이터의 중복을 피하기 위해 ‘관계’를 이용함 하나의 테이블에서 중복 없이 하나의 데이터만을 관리하기 때문에 다른 테이블에서 부정확한 데이터를 다룰 위험이 없어지는 ..
[데이터베이스] SQL Injection
·
CS 지식/[데이터베이스]
해커에 의해 조작된 SQL 쿼리문이 데이터베이스에 그대로 전달되어 비정상적 명령을 실행시키는 공격 기법 공격 방법 1) 인증 우회 보통 로그인을 할 때 아래와 같은 쿼리로 전송될 것 SELECT * FROM USER WHERE ID = "abc" AND PASSWORD = "1234"; SQL Injection으로 공격할 때, input 창에 비밀번호를 입력함과 동시에 다른 쿼리문을 함께 입력하는 것 1234; DELETE * USER FROM ID = "1"; 보안이 완벽하지 않은 경우, 이처럼 비밀번호가 아이디와 일치해서 True가 되고 뒤에 작성한 DELETE 문도 데이터베이스에 영향을 줄 수도 있게 되는 피명적인 상황 이 밖에도 기본 쿼리문의 WHERE 절에 OR문을 추가하여 '1' = '1'과 ..